Compare commits

...

14 Commits

Author SHA1 Message Date
Felix Fontein
3653dff68c Release 10.7.5. 2025-10-06 18:20:18 +02:00
Felix Fontein
171a028ef8 [stable-10] Avoid six in plugin code (#10873) (#10877)
Avoid six in plugin code (#10873)

Avoid six in plugin code.

(cherry picked from commit 6cd4665412)
2025-10-05 07:42:27 +02:00
Felix Fontein
4ab8f79eae [stable-10] Fix typos: s/the the/the/ (#10867) (#10869)
Fix typos: s/the the/the/ (#10867)

(cherry picked from commit 41b65161bd)

Co-authored-by: Pierre Riteau <pierre@stackhpc.com>
2025-09-30 21:58:26 +02:00
Felix Fontein
871e2809ed Add repository configuration to antsibull-nox.toml.
(cherry picked from commit e9b1788bb9)
2025-09-26 07:04:22 +02:00
patchback[bot]
ebf5dd9007 [PR #10857/68684a7a backport][stable-10] github_deploy_key: make sure variable exists before use (#10859)
github_deploy_key: make sure variable exists before use (#10857)

Make sure variable exists before use.

(cherry picked from commit 68684a7a4c)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-09-25 20:49:00 +02:00
patchback[bot]
054b369740 [PR #10852/648ff7db backport][stable-10] yaml cache plugin: make compatible with ansible-core 2.19 (#10855)
yaml cache plugin: make compatible with ansible-core 2.19 (#10852)

Make compatible with ansible-core 2.19.

(cherry picked from commit 648ff7db02)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-09-25 20:34:40 +02:00
Felix Fontein
f9598c8586 Prepare 10.7.5. 2025-09-21 20:45:23 +02:00
patchback[bot]
0b116fa1dc [PR #10840/b865bf57 backport][stable-10] Fix keycloak sub-group search (#10845)
Fix keycloak sub-group search (#10840)

* fix bug in missing realm argument when searching for groups

* MR change fragment

* 39+1=40

(cherry picked from commit b865bf5751)

Co-authored-by: Jakub Danek <danekja@users.noreply.github.com>
2025-09-21 20:44:25 +02:00
patchback[bot]
01d0f3ccb7 [PR #10832/0f23b9e3 backport][stable-10] Force Content-type header to application/json if is_pre740 is false (#10847)
Force Content-type header to application/json if is_pre740 is false (#10832)

* Force Content-type header to application/json if is_pre740 is false

* Remove response variable from fail_json module

* Add a missing blank line to match pep8 requirement

* Add changelog fragment of issue #10796

* Rename fragment section

* Improve fragment readability



---------



(cherry picked from commit 0f23b9e391)

Co-authored-by: X <2465124+broferek@users.noreply.github.com>
Co-authored-by: ludovic <ludovic.petetin@aleph-networks.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-09-21 20:44:08 +02:00
patchback[bot]
7a8c3346ff [PR #10829/7c40c6b6 backport][stable-10] Keycloak role fix changed status (#10838)
Keycloak role fix changed status (#10829)

* Exclude aliases before comparison

* add test

* fragment

* Update changelogs/fragments/10829-fix-keycloak-role-changed-status.yml



---------



(cherry picked from commit 7c40c6b6b5)

Co-authored-by: desand01 <desrosiers.a@hotmail.com>
Co-authored-by: Andre Desrosiers <andre.desrosiers@ssss.gouv.qc.ca>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-09-18 22:15:06 +02:00
patchback[bot]
f8acda70d2 [PR #10830/2bf8ae88 backport][stable-10] timezone: mention that Debian 13 also needs util-linux-extra (#10836)
timezone: mention that Debian 13 also needs util-linux-extra (#10830)

Mention that Debian 13 also needs util-linux-extra.

(cherry picked from commit 2bf8ae88be)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-09-18 22:14:54 +02:00
patchback[bot]
2eedbdc928 [PR #10822/0911db45 backport][stable-10] pipx: review tests (#10825)
pipx: review tests (#10822)

(cherry picked from commit 0911db457e)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-09-13 10:30:45 +02:00
patchback[bot]
c251868e55 [PR #10818/d2e2395a backport][stable-10] Speed up tests in android_sdk module (#10820)
Speed up tests in android_sdk module (#10818)

changed the dependency that is used to test the functionality in android_sdk module. The previous dependency was ~100MB, the current one is ~6MB. This should speed up the tests a bit and reduce the traffic.

(cherry picked from commit d2e2395ae3)

Co-authored-by: Stanislav Shamilov <shamilovstas@protonmail.com>
2025-09-12 19:36:21 +02:00
patchback[bot]
e501974a9e [PR #10813/a7e4cee4 backport][stable-10] Remove obsolete test conditions (#10814)
Remove obsolete test conditions (#10813)

* Fedora 31 and 32 are EOL, remove conditions related


(cherry picked from commit a7e4cee47d)

Signed-off-by: Abhijeet Kasurde <Akasurde@redhat.com>
Co-authored-by: Abhijeet Kasurde <akasurde@redhat.com>
2025-09-12 06:41:17 +02:00
65 changed files with 314 additions and 284 deletions

View File

@@ -2,90 +2,93 @@
**Topics** **Topics**
- <a href="#v10-7-4">v10\.7\.4</a> - <a href="#v10-7-5">v10\.7\.5</a>
- <a href="#release-summary">Release Summary</a> - <a href="#release-summary">Release Summary</a>
- <a href="#bugfixes">Bugfixes</a> - <a href="#bugfixes">Bugfixes</a>
- <a href="#v10-7-3">v10\.7\.3</a> - <a href="#v10-7-4">v10\.7\.4</a>
- <a href="#release-summary-1">Release Summary</a> - <a href="#release-summary-1">Release Summary</a>
- <a href="#bugfixes-1">Bugfixes</a> - <a href="#bugfixes-1">Bugfixes</a>
- <a href="#v10-7-2">v10\.7\.2</a> - <a href="#v10-7-3">v10\.7\.3</a>
- <a href="#release-summary-2">Release Summary</a> - <a href="#release-summary-2">Release Summary</a>
- <a href="#bugfixes-2">Bugfixes</a> - <a href="#bugfixes-2">Bugfixes</a>
- <a href="#v10-7-1">v10\.7\.1</a> - <a href="#v10-7-2">v10\.7\.2</a>
- <a href="#release-summary-3">Release Summary</a> - <a href="#release-summary-3">Release Summary</a>
- <a href="#bugfixes-3">Bugfixes</a>
- <a href="#v10-7-1">v10\.7\.1</a>
- <a href="#release-summary-4">Release Summary</a>
- <a href="#minor-changes">Minor Changes</a> - <a href="#minor-changes">Minor Changes</a>
- <a href="#deprecated-features">Deprecated Features</a> - <a href="#deprecated-features">Deprecated Features</a>
- <a href="#bugfixes-3">Bugfixes</a> - <a href="#bugfixes-4">Bugfixes</a>
- <a href="#v10-7-0">v10\.7\.0</a> - <a href="#v10-7-0">v10\.7\.0</a>
- <a href="#release-summary-4">Release Summary</a> - <a href="#release-summary-5">Release Summary</a>
- <a href="#minor-changes-1">Minor Changes</a> - <a href="#minor-changes-1">Minor Changes</a>
- <a href="#deprecated-features-1">Deprecated Features</a> - <a href="#deprecated-features-1">Deprecated Features</a>
- <a href="#bugfixes-4">Bugfixes</a> - <a href="#bugfixes-5">Bugfixes</a>
- <a href="#new-plugins">New Plugins</a> - <a href="#new-plugins">New Plugins</a>
- <a href="#callback">Callback</a> - <a href="#callback">Callback</a>
- <a href="#filter">Filter</a> - <a href="#filter">Filter</a>
- <a href="#new-modules">New Modules</a> - <a href="#new-modules">New Modules</a>
- <a href="#v10-6-0">v10\.6\.0</a> - <a href="#v10-6-0">v10\.6\.0</a>
- <a href="#release-summary-5">Release Summary</a> - <a href="#release-summary-6">Release Summary</a>
- <a href="#minor-changes-2">Minor Changes</a> - <a href="#minor-changes-2">Minor Changes</a>
- <a href="#deprecated-features-2">Deprecated Features</a> - <a href="#deprecated-features-2">Deprecated Features</a>
- <a href="#bugfixes-5">Bugfixes</a> - <a href="#bugfixes-6">Bugfixes</a>
- <a href="#known-issues">Known Issues</a> - <a href="#known-issues">Known Issues</a>
- <a href="#new-plugins-1">New Plugins</a> - <a href="#new-plugins-1">New Plugins</a>
- <a href="#connection">Connection</a> - <a href="#connection">Connection</a>
- <a href="#v10-5-0">v10\.5\.0</a> - <a href="#v10-5-0">v10\.5\.0</a>
- <a href="#release-summary-6">Release Summary</a> - <a href="#release-summary-7">Release Summary</a>
- <a href="#minor-changes-3">Minor Changes</a> - <a href="#minor-changes-3">Minor Changes</a>
- <a href="#bugfixes-6">Bugfixes</a> - <a href="#bugfixes-7">Bugfixes</a>
- <a href="#new-modules-1">New Modules</a> - <a href="#new-modules-1">New Modules</a>
- <a href="#v10-4-0">v10\.4\.0</a> - <a href="#v10-4-0">v10\.4\.0</a>
- <a href="#release-summary-7">Release Summary</a> - <a href="#release-summary-8">Release Summary</a>
- <a href="#minor-changes-4">Minor Changes</a> - <a href="#minor-changes-4">Minor Changes</a>
- <a href="#deprecated-features-3">Deprecated Features</a> - <a href="#deprecated-features-3">Deprecated Features</a>
- <a href="#bugfixes-7">Bugfixes</a> - <a href="#bugfixes-8">Bugfixes</a>
- <a href="#new-modules-2">New Modules</a> - <a href="#new-modules-2">New Modules</a>
- <a href="#v10-3-1">v10\.3\.1</a> - <a href="#v10-3-1">v10\.3\.1</a>
- <a href="#release-summary-8">Release Summary</a>
- <a href="#minor-changes-5">Minor Changes</a>
- <a href="#bugfixes-8">Bugfixes</a>
- <a href="#v10-3-0">v10\.3\.0</a>
- <a href="#release-summary-9">Release Summary</a> - <a href="#release-summary-9">Release Summary</a>
- <a href="#minor-changes-5">Minor Changes</a>
- <a href="#bugfixes-9">Bugfixes</a>
- <a href="#v10-3-0">v10\.3\.0</a>
- <a href="#release-summary-10">Release Summary</a>
- <a href="#minor-changes-6">Minor Changes</a> - <a href="#minor-changes-6">Minor Changes</a>
- <a href="#deprecated-features-4">Deprecated Features</a> - <a href="#deprecated-features-4">Deprecated Features</a>
- <a href="#security-fixes">Security Fixes</a> - <a href="#security-fixes">Security Fixes</a>
- <a href="#bugfixes-9">Bugfixes</a> - <a href="#bugfixes-10">Bugfixes</a>
- <a href="#new-plugins-2">New Plugins</a> - <a href="#new-plugins-2">New Plugins</a>
- <a href="#connection-1">Connection</a> - <a href="#connection-1">Connection</a>
- <a href="#filter-1">Filter</a> - <a href="#filter-1">Filter</a>
- <a href="#lookup">Lookup</a> - <a href="#lookup">Lookup</a>
- <a href="#new-modules-3">New Modules</a> - <a href="#new-modules-3">New Modules</a>
- <a href="#v10-2-0">v10\.2\.0</a> - <a href="#v10-2-0">v10\.2\.0</a>
- <a href="#release-summary-10">Release Summary</a> - <a href="#release-summary-11">Release Summary</a>
- <a href="#minor-changes-7">Minor Changes</a> - <a href="#minor-changes-7">Minor Changes</a>
- <a href="#deprecated-features-5">Deprecated Features</a> - <a href="#deprecated-features-5">Deprecated Features</a>
- <a href="#security-fixes-1">Security Fixes</a> - <a href="#security-fixes-1">Security Fixes</a>
- <a href="#bugfixes-10">Bugfixes</a> - <a href="#bugfixes-11">Bugfixes</a>
- <a href="#new-plugins-3">New Plugins</a> - <a href="#new-plugins-3">New Plugins</a>
- <a href="#inventory">Inventory</a> - <a href="#inventory">Inventory</a>
- <a href="#new-modules-4">New Modules</a> - <a href="#new-modules-4">New Modules</a>
- <a href="#v10-1-0">v10\.1\.0</a> - <a href="#v10-1-0">v10\.1\.0</a>
- <a href="#release-summary-11">Release Summary</a> - <a href="#release-summary-12">Release Summary</a>
- <a href="#minor-changes-8">Minor Changes</a> - <a href="#minor-changes-8">Minor Changes</a>
- <a href="#deprecated-features-6">Deprecated Features</a> - <a href="#deprecated-features-6">Deprecated Features</a>
- <a href="#bugfixes-11">Bugfixes</a> - <a href="#bugfixes-12">Bugfixes</a>
- <a href="#new-plugins-4">New Plugins</a> - <a href="#new-plugins-4">New Plugins</a>
- <a href="#filter-2">Filter</a> - <a href="#filter-2">Filter</a>
- <a href="#new-modules-5">New Modules</a> - <a href="#new-modules-5">New Modules</a>
- <a href="#v10-0-1">v10\.0\.1</a> - <a href="#v10-0-1">v10\.0\.1</a>
- <a href="#release-summary-12">Release Summary</a>
- <a href="#bugfixes-12">Bugfixes</a>
- <a href="#v10-0-0">v10\.0\.0</a>
- <a href="#release-summary-13">Release Summary</a> - <a href="#release-summary-13">Release Summary</a>
- <a href="#bugfixes-13">Bugfixes</a>
- <a href="#v10-0-0">v10\.0\.0</a>
- <a href="#release-summary-14">Release Summary</a>
- <a href="#minor-changes-9">Minor Changes</a> - <a href="#minor-changes-9">Minor Changes</a>
- <a href="#breaking-changes--porting-guide">Breaking Changes / Porting Guide</a> - <a href="#breaking-changes--porting-guide">Breaking Changes / Porting Guide</a>
- <a href="#deprecated-features-7">Deprecated Features</a> - <a href="#deprecated-features-7">Deprecated Features</a>
- <a href="#removed-features-previously-deprecated">Removed Features \(previously deprecated\)</a> - <a href="#removed-features-previously-deprecated">Removed Features \(previously deprecated\)</a>
- <a href="#bugfixes-13">Bugfixes</a> - <a href="#bugfixes-14">Bugfixes</a>
- <a href="#known-issues-1">Known Issues</a> - <a href="#known-issues-1">Known Issues</a>
- <a href="#new-plugins-5">New Plugins</a> - <a href="#new-plugins-5">New Plugins</a>
- <a href="#filter-3">Filter</a> - <a href="#filter-3">Filter</a>
@@ -93,8 +96,8 @@
- <a href="#new-modules-6">New Modules</a> - <a href="#new-modules-6">New Modules</a>
This changelog describes changes after version 9\.0\.0\. This changelog describes changes after version 9\.0\.0\.
<a id="v10-7-4"></a> <a id="v10-7-5"></a>
## v10\.7\.4 ## v10\.7\.5
<a id="release-summary"></a> <a id="release-summary"></a>
### Release Summary ### Release Summary
@@ -104,6 +107,24 @@ Regular bugfix release\.
<a id="bugfixes"></a> <a id="bugfixes"></a>
### Bugfixes ### Bugfixes
* Avoid usage of deprecated <code>ansible\.module\_utils\.six</code> in all code that does not have to support Python 2 \([https\://github\.com/ansible\-collections/community\.general/pull/10873](https\://github\.com/ansible\-collections/community\.general/pull/10873)\)\.
* github\_deploy\_key \- fix bug during error handling if no body was present in the result \([https\://github\.com/ansible\-collections/community\.general/issues/10853](https\://github\.com/ansible\-collections/community\.general/issues/10853)\, [https\://github\.com/ansible\-collections/community\.general/pull/10857](https\://github\.com/ansible\-collections/community\.general/pull/10857)\)\.
* keycloak\_group \- fixes an issue where module ignores realm when searching subgroups by name \([https\://github\.com/ansible\-collections/community\.general/pull/10840](https\://github\.com/ansible\-collections/community\.general/pull/10840)\)\.
* keycloak\_role \- fixes an issue where the module incorrectly returns <code>changed\=true</code> when using the alias <code>clientId</code> in composite roles \([https\://github\.com/ansible\-collections/community\.general/pull/10829](https\://github\.com/ansible\-collections/community\.general/pull/10829)\)\.
* rocketchat \- fix message delivery in Rocket Chat \>\= 7\.5\.3 by forcing <code>Content\-Type</code> header to <code>application/json</code> instead of the default <code>application/x\-www\-form\-urlencoded</code> \([https\://github\.com/ansible\-collections/community\.general/issues/10796](https\://github\.com/ansible\-collections/community\.general/issues/10796)\, [https\://github\.com/ansible\-collections/community\.general/pull/10796](https\://github\.com/ansible\-collections/community\.general/pull/10796)\)\.
* yaml cache plugin \- make compatible with ansible\-core 2\.19 \([https\://github\.com/ansible\-collections/community\.general/issues/10849](https\://github\.com/ansible\-collections/community\.general/issues/10849)\, [https\://github\.com/ansible\-collections/community\.general/issues/10852](https\://github\.com/ansible\-collections/community\.general/issues/10852)\)\.
<a id="v10-7-4"></a>
## v10\.7\.4
<a id="release-summary-1"></a>
### Release Summary
Regular bugfix release\.
<a id="bugfixes-1"></a>
### Bugfixes
* Avoid deprecated functionality in ansible\-core 2\.20 \([https\://github\.com/ansible\-collections/community\.general/pull/10687](https\://github\.com/ansible\-collections/community\.general/pull/10687)\)\. * Avoid deprecated functionality in ansible\-core 2\.20 \([https\://github\.com/ansible\-collections/community\.general/pull/10687](https\://github\.com/ansible\-collections/community\.general/pull/10687)\)\.
* apache2\_module \- check the <code>cgi</code> module restrictions only during activation \([https\://github\.com/ansible\-collections/community\.general/pull/10423](https\://github\.com/ansible\-collections/community\.general/pull/10423)\)\. * apache2\_module \- check the <code>cgi</code> module restrictions only during activation \([https\://github\.com/ansible\-collections/community\.general/pull/10423](https\://github\.com/ansible\-collections/community\.general/pull/10423)\)\.
* kdeconfig \- <code>kwriteconfig</code> executable could not be discovered automatically on systems with only <code>kwriteconfig6</code> installed\. <code>kwriteconfig6</code> can now be discovered by Ansible \([https\://github\.com/ansible\-collections/community\.general/issues/10746](https\://github\.com/ansible\-collections/community\.general/issues/10746)\, [https\://github\.com/ansible\-collections/community\.general/pull/10751](https\://github\.com/ansible\-collections/community\.general/pull/10751)\)\. * kdeconfig \- <code>kwriteconfig</code> executable could not be discovered automatically on systems with only <code>kwriteconfig6</code> installed\. <code>kwriteconfig6</code> can now be discovered by Ansible \([https\://github\.com/ansible\-collections/community\.general/issues/10746](https\://github\.com/ansible\-collections/community\.general/issues/10746)\, [https\://github\.com/ansible\-collections/community\.general/pull/10751](https\://github\.com/ansible\-collections/community\.general/pull/10751)\)\.
@@ -114,12 +135,12 @@ Regular bugfix release\.
<a id="v10-7-3"></a> <a id="v10-7-3"></a>
## v10\.7\.3 ## v10\.7\.3
<a id="release-summary-1"></a> <a id="release-summary-2"></a>
### Release Summary ### Release Summary
Regular bugfix release\. Regular bugfix release\.
<a id="bugfixes-1"></a> <a id="bugfixes-2"></a>
### Bugfixes ### Bugfixes
* apache2\_module \- avoid ansible\-core 2\.19 deprecation \([https\://github\.com/ansible\-collections/community\.general/pull/10459](https\://github\.com/ansible\-collections/community\.general/pull/10459)\)\. * apache2\_module \- avoid ansible\-core 2\.19 deprecation \([https\://github\.com/ansible\-collections/community\.general/pull/10459](https\://github\.com/ansible\-collections/community\.general/pull/10459)\)\.
@@ -146,12 +167,12 @@ Regular bugfix release\.
<a id="v10-7-2"></a> <a id="v10-7-2"></a>
## v10\.7\.2 ## v10\.7\.2
<a id="release-summary-2"></a> <a id="release-summary-3"></a>
### Release Summary ### Release Summary
Regular bugfix release\. Regular bugfix release\.
<a id="bugfixes-2"></a> <a id="bugfixes-3"></a>
### Bugfixes ### Bugfixes
* dependent lookup plugin \- avoid deprecated ansible\-core 2\.19 functionality \([https\://github\.com/ansible\-collections/community\.general/pull/10359](https\://github\.com/ansible\-collections/community\.general/pull/10359)\)\. * dependent lookup plugin \- avoid deprecated ansible\-core 2\.19 functionality \([https\://github\.com/ansible\-collections/community\.general/pull/10359](https\://github\.com/ansible\-collections/community\.general/pull/10359)\)\.
@@ -164,7 +185,7 @@ Regular bugfix release\.
<a id="v10-7-1"></a> <a id="v10-7-1"></a>
## v10\.7\.1 ## v10\.7\.1
<a id="release-summary-3"></a> <a id="release-summary-4"></a>
### Release Summary ### Release Summary
Regular bugfix release\. Regular bugfix release\.
@@ -180,7 +201,7 @@ Regular bugfix release\.
* yaml callback plugin \- the YAML callback plugin was deprecated for removal in community\.general 13\.0\.0\. Since it needs to use ansible\-core internals since ansible\-core 2\.19 that are changing a lot\, we will remove this plugin already from community\.general 12\.0\.0 to ease the maintenance burden \([https\://github\.com/ansible\-collections/community\.general/pull/10213](https\://github\.com/ansible\-collections/community\.general/pull/10213)\)\. * yaml callback plugin \- the YAML callback plugin was deprecated for removal in community\.general 13\.0\.0\. Since it needs to use ansible\-core internals since ansible\-core 2\.19 that are changing a lot\, we will remove this plugin already from community\.general 12\.0\.0 to ease the maintenance burden \([https\://github\.com/ansible\-collections/community\.general/pull/10213](https\://github\.com/ansible\-collections/community\.general/pull/10213)\)\.
<a id="bugfixes-3"></a> <a id="bugfixes-4"></a>
### Bugfixes ### Bugfixes
* cobbler\_system \- update minimum version number to avoid wrong comparisons that happen in some cases using LooseVersion class which results in TypeError \([https\://github\.com/ansible\-collections/community\.general/issues/8506](https\://github\.com/ansible\-collections/community\.general/issues/8506)\, [https\://github\.com/ansible\-collections/community\.general/pull/10145](https\://github\.com/ansible\-collections/community\.general/pull/10145)\, [https\://github\.com/ansible\-collections/community\.general/pull/10178](https\://github\.com/ansible\-collections/community\.general/pull/10178)\)\. * cobbler\_system \- update minimum version number to avoid wrong comparisons that happen in some cases using LooseVersion class which results in TypeError \([https\://github\.com/ansible\-collections/community\.general/issues/8506](https\://github\.com/ansible\-collections/community\.general/issues/8506)\, [https\://github\.com/ansible\-collections/community\.general/pull/10145](https\://github\.com/ansible\-collections/community\.general/pull/10145)\, [https\://github\.com/ansible\-collections/community\.general/pull/10178](https\://github\.com/ansible\-collections/community\.general/pull/10178)\)\.
@@ -194,7 +215,7 @@ Regular bugfix release\.
<a id="v10-7-0"></a> <a id="v10-7-0"></a>
## v10\.7\.0 ## v10\.7\.0
<a id="release-summary-4"></a> <a id="release-summary-5"></a>
### Release Summary ### Release Summary
Bugfix and feature release\. Bugfix and feature release\.
@@ -218,7 +239,7 @@ From now on\, there will only be bugfix 10\.7\.x releases for the community\.gen
* The proxmox content \(modules and plugins\) is being moved to the [new collection community\.proxmox](https\://github\.com/ansible\-collections/community\.proxmox)\. In community\.general 11\.0\.0\, these modules and plugins will be replaced by deprecated redirections to community\.proxmox\. You need to explicitly install community\.proxmox\, for example with <code>ansible\-galaxy collection install community\.proxmox</code>\. We suggest to update your roles and playbooks to use the new FQCNs as soon as possible to avoid getting deprecation messages \([https\://github\.com/ansible\-collections/community\.general/pull/10109](https\://github\.com/ansible\-collections/community\.general/pull/10109)\)\. * The proxmox content \(modules and plugins\) is being moved to the [new collection community\.proxmox](https\://github\.com/ansible\-collections/community\.proxmox)\. In community\.general 11\.0\.0\, these modules and plugins will be replaced by deprecated redirections to community\.proxmox\. You need to explicitly install community\.proxmox\, for example with <code>ansible\-galaxy collection install community\.proxmox</code>\. We suggest to update your roles and playbooks to use the new FQCNs as soon as possible to avoid getting deprecation messages \([https\://github\.com/ansible\-collections/community\.general/pull/10109](https\://github\.com/ansible\-collections/community\.general/pull/10109)\)\.
* pipx module\_utils \- function <code>make\_process\_list\(\)</code> is deprecated and will be removed in community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10031](https\://github\.com/ansible\-collections/community\.general/pull/10031)\)\. * pipx module\_utils \- function <code>make\_process\_list\(\)</code> is deprecated and will be removed in community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10031](https\://github\.com/ansible\-collections/community\.general/pull/10031)\)\.
<a id="bugfixes-4"></a> <a id="bugfixes-5"></a>
### Bugfixes ### Bugfixes
* cobbler\_system \- fix bug with Cobbler \>\= 3\.4\.0 caused by giving more than 2 positional arguments to <code>CobblerXMLRPCInterface\.get\_system\_handle\(\)</code> \([https\://github\.com/ansible\-collections/community\.general/issues/8506](https\://github\.com/ansible\-collections/community\.general/issues/8506)\, [https\://github\.com/ansible\-collections/community\.general/pull/10145](https\://github\.com/ansible\-collections/community\.general/pull/10145)\)\. * cobbler\_system \- fix bug with Cobbler \>\= 3\.4\.0 caused by giving more than 2 positional arguments to <code>CobblerXMLRPCInterface\.get\_system\_handle\(\)</code> \([https\://github\.com/ansible\-collections/community\.general/issues/8506](https\://github\.com/ansible\-collections/community\.general/issues/8506)\, [https\://github\.com/ansible\-collections/community\.general/pull/10145](https\://github\.com/ansible\-collections/community\.general/pull/10145)\)\.
@@ -250,7 +271,7 @@ From now on\, there will only be bugfix 10\.7\.x releases for the community\.gen
<a id="v10-6-0"></a> <a id="v10-6-0"></a>
## v10\.6\.0 ## v10\.6\.0
<a id="release-summary-5"></a> <a id="release-summary-6"></a>
### Release Summary ### Release Summary
Regular bugfix and feature release\. Regular bugfix and feature release\.
@@ -294,7 +315,7 @@ Regular bugfix and feature release\.
* manifold lookup plugin \- plugin is deprecated and will be removed in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10028](https\://github\.com/ansible\-collections/community\.general/pull/10028)\)\. * manifold lookup plugin \- plugin is deprecated and will be removed in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10028](https\://github\.com/ansible\-collections/community\.general/pull/10028)\)\.
* stackpath\_compute inventory plugin \- plugin is deprecated and will be removed in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10026](https\://github\.com/ansible\-collections/community\.general/pull/10026)\)\. * stackpath\_compute inventory plugin \- plugin is deprecated and will be removed in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10026](https\://github\.com/ansible\-collections/community\.general/pull/10026)\)\.
<a id="bugfixes-5"></a> <a id="bugfixes-6"></a>
### Bugfixes ### Bugfixes
* dependent look plugin \- make compatible with ansible\-core\'s Data Tagging feature \([https\://github\.com/ansible\-collections/community\.general/pull/9833](https\://github\.com/ansible\-collections/community\.general/pull/9833)\)\. * dependent look plugin \- make compatible with ansible\-core\'s Data Tagging feature \([https\://github\.com/ansible\-collections/community\.general/pull/9833](https\://github\.com/ansible\-collections/community\.general/pull/9833)\)\.
@@ -327,7 +348,7 @@ Regular bugfix and feature release\.
<a id="v10-5-0"></a> <a id="v10-5-0"></a>
## v10\.5\.0 ## v10\.5\.0
<a id="release-summary-6"></a> <a id="release-summary-7"></a>
### Release Summary ### Release Summary
Regular bugfix and feature release\. Regular bugfix and feature release\.
@@ -349,7 +370,7 @@ Regular bugfix and feature release\.
* systemd\_info \- extend support to timer units \([https\://github\.com/ansible\-collections/community\.general/pull/9891](https\://github\.com/ansible\-collections/community\.general/pull/9891)\)\. * systemd\_info \- extend support to timer units \([https\://github\.com/ansible\-collections/community\.general/pull/9891](https\://github\.com/ansible\-collections/community\.general/pull/9891)\)\.
* vmadm \- add new options <code>flexible\_disk\_size</code> and <code>owner\_uuid</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9892](https\://github\.com/ansible\-collections/community\.general/pull/9892)\)\. * vmadm \- add new options <code>flexible\_disk\_size</code> and <code>owner\_uuid</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9892](https\://github\.com/ansible\-collections/community\.general/pull/9892)\)\.
<a id="bugfixes-6"></a> <a id="bugfixes-7"></a>
### Bugfixes ### Bugfixes
* cloudlare\_dns \- handle exhausted response stream in case of HTTP errors to show nice error message to the user \([https\://github\.com/ansible\-collections/community\.general/issues/9782](https\://github\.com/ansible\-collections/community\.general/issues/9782)\, [https\://github\.com/ansible\-collections/community\.general/pull/9818](https\://github\.com/ansible\-collections/community\.general/pull/9818)\)\. * cloudlare\_dns \- handle exhausted response stream in case of HTTP errors to show nice error message to the user \([https\://github\.com/ansible\-collections/community\.general/issues/9782](https\://github\.com/ansible\-collections/community\.general/issues/9782)\, [https\://github\.com/ansible\-collections/community\.general/pull/9818](https\://github\.com/ansible\-collections/community\.general/pull/9818)\)\.
@@ -369,7 +390,7 @@ Regular bugfix and feature release\.
<a id="v10-4-0"></a> <a id="v10-4-0"></a>
## v10\.4\.0 ## v10\.4\.0
<a id="release-summary-7"></a> <a id="release-summary-8"></a>
### Release Summary ### Release Summary
Regular bugfix and feature release\. Regular bugfix and feature release\.
@@ -399,7 +420,7 @@ Regular bugfix and feature release\.
* profitbricks\_volume \- module is deprecated and will be removed in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9733](https\://github\.com/ansible\-collections/community\.general/pull/9733)\)\. * profitbricks\_volume \- module is deprecated and will be removed in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9733](https\://github\.com/ansible\-collections/community\.general/pull/9733)\)\.
* profitbricks\_volume\_attachments \- module is deprecated and will be removed in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9733](https\://github\.com/ansible\-collections/community\.general/pull/9733)\)\. * profitbricks\_volume\_attachments \- module is deprecated and will be removed in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9733](https\://github\.com/ansible\-collections/community\.general/pull/9733)\)\.
<a id="bugfixes-7"></a> <a id="bugfixes-8"></a>
### Bugfixes ### Bugfixes
* apache2\_mod\_proxy \- make compatible with Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9762](https\://github\.com/ansible\-collections/community\.general/pull/9762)\)\. * apache2\_mod\_proxy \- make compatible with Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9762](https\://github\.com/ansible\-collections/community\.general/pull/9762)\)\.
@@ -427,7 +448,7 @@ Regular bugfix and feature release\.
<a id="v10-3-1"></a> <a id="v10-3-1"></a>
## v10\.3\.1 ## v10\.3\.1
<a id="release-summary-8"></a> <a id="release-summary-9"></a>
### Release Summary ### Release Summary
Bugfix release\. Bugfix release\.
@@ -437,7 +458,7 @@ Bugfix release\.
* onepassword\_ssh\_key \- refactor to move code to lookup class \([https\://github\.com/ansible\-collections/community\.general/pull/9633](https\://github\.com/ansible\-collections/community\.general/pull/9633)\)\. * onepassword\_ssh\_key \- refactor to move code to lookup class \([https\://github\.com/ansible\-collections/community\.general/pull/9633](https\://github\.com/ansible\-collections/community\.general/pull/9633)\)\.
<a id="bugfixes-8"></a> <a id="bugfixes-9"></a>
### Bugfixes ### Bugfixes
* cloudflare\_dns \- fix crash when deleting a DNS record or when updating a record with <code>solo\=true</code> \([https\://github\.com/ansible\-collections/community\.general/issues/9652](https\://github\.com/ansible\-collections/community\.general/issues/9652)\, [https\://github\.com/ansible\-collections/community\.general/pull/9649](https\://github\.com/ansible\-collections/community\.general/pull/9649)\)\. * cloudflare\_dns \- fix crash when deleting a DNS record or when updating a record with <code>solo\=true</code> \([https\://github\.com/ansible\-collections/community\.general/issues/9652](https\://github\.com/ansible\-collections/community\.general/issues/9652)\, [https\://github\.com/ansible\-collections/community\.general/pull/9649](https\://github\.com/ansible\-collections/community\.general/pull/9649)\)\.
@@ -451,7 +472,7 @@ Bugfix release\.
<a id="v10-3-0"></a> <a id="v10-3-0"></a>
## v10\.3\.0 ## v10\.3\.0
<a id="release-summary-9"></a> <a id="release-summary-10"></a>
### Release Summary ### Release Summary
Regular bugfix and feature release\. Regular bugfix and feature release\.
@@ -590,7 +611,7 @@ Regular bugfix and feature release\.
* keycloak\_client \- Sanitize <code>saml\.encryption\.private\.key</code> so it does not show in the logs \([https\://github\.com/ansible\-collections/community\.general/pull/9621](https\://github\.com/ansible\-collections/community\.general/pull/9621)\)\. * keycloak\_client \- Sanitize <code>saml\.encryption\.private\.key</code> so it does not show in the logs \([https\://github\.com/ansible\-collections/community\.general/pull/9621](https\://github\.com/ansible\-collections/community\.general/pull/9621)\)\.
<a id="bugfixes-9"></a> <a id="bugfixes-10"></a>
### Bugfixes ### Bugfixes
* homebrew \- fix incorrect handling of homebrew modules when a tap is requested \([https\://github\.com/ansible\-collections/community\.general/pull/9546](https\://github\.com/ansible\-collections/community\.general/pull/9546)\, [https\://github\.com/ansible\-collections/community\.general/issues/9533](https\://github\.com/ansible\-collections/community\.general/issues/9533)\)\. * homebrew \- fix incorrect handling of homebrew modules when a tap is requested \([https\://github\.com/ansible\-collections/community\.general/pull/9546](https\://github\.com/ansible\-collections/community\.general/pull/9546)\, [https\://github\.com/ansible\-collections/community\.general/issues/9533](https\://github\.com/ansible\-collections/community\.general/issues/9533)\)\.
@@ -634,7 +655,7 @@ Regular bugfix and feature release\.
<a id="v10-2-0"></a> <a id="v10-2-0"></a>
## v10\.2\.0 ## v10\.2\.0
<a id="release-summary-10"></a> <a id="release-summary-11"></a>
### Release Summary ### Release Summary
Regular bugfix and feature release\. Regular bugfix and feature release\.
@@ -793,7 +814,7 @@ Regular bugfix and feature release\.
* keycloak\_authentication \- API calls did not properly set the <code>priority</code> during update resulting in incorrectly sorted authentication flows\. This apparently only affects Keycloak 25 or newer \([https\://github\.com/ansible\-collections/community\.general/pull/9263](https\://github\.com/ansible\-collections/community\.general/pull/9263)\)\. * keycloak\_authentication \- API calls did not properly set the <code>priority</code> during update resulting in incorrectly sorted authentication flows\. This apparently only affects Keycloak 25 or newer \([https\://github\.com/ansible\-collections/community\.general/pull/9263](https\://github\.com/ansible\-collections/community\.general/pull/9263)\)\.
<a id="bugfixes-10"></a> <a id="bugfixes-11"></a>
### Bugfixes ### Bugfixes
* dig lookup plugin \- correctly handle <code>NoNameserver</code> exception \([https\://github\.com/ansible\-collections/community\.general/pull/9363](https\://github\.com/ansible\-collections/community\.general/pull/9363)\, [https\://github\.com/ansible\-collections/community\.general/issues/9362](https\://github\.com/ansible\-collections/community\.general/issues/9362)\)\. * dig lookup plugin \- correctly handle <code>NoNameserver</code> exception \([https\://github\.com/ansible\-collections/community\.general/pull/9363](https\://github\.com/ansible\-collections/community\.general/pull/9363)\, [https\://github\.com/ansible\-collections/community\.general/issues/9362](https\://github\.com/ansible\-collections/community\.general/issues/9362)\)\.
@@ -824,7 +845,7 @@ Regular bugfix and feature release\.
<a id="v10-1-0"></a> <a id="v10-1-0"></a>
## v10\.1\.0 ## v10\.1\.0
<a id="release-summary-11"></a> <a id="release-summary-12"></a>
### Release Summary ### Release Summary
Regular bugfix and feature release\. Regular bugfix and feature release\.
@@ -856,7 +877,7 @@ Regular bugfix and feature release\.
* opkg \- deprecate value <code>\"\"</code> for parameter <code>force</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9172](https\://github\.com/ansible\-collections/community\.general/pull/9172)\)\. * opkg \- deprecate value <code>\"\"</code> for parameter <code>force</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9172](https\://github\.com/ansible\-collections/community\.general/pull/9172)\)\.
* redfish\_utils module utils \- deprecate method <code>RedfishUtils\.\_init\_session\(\)</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9190](https\://github\.com/ansible\-collections/community\.general/pull/9190)\)\. * redfish\_utils module utils \- deprecate method <code>RedfishUtils\.\_init\_session\(\)</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9190](https\://github\.com/ansible\-collections/community\.general/pull/9190)\)\.
<a id="bugfixes-11"></a> <a id="bugfixes-12"></a>
### Bugfixes ### Bugfixes
* dnf\_config\_manager \- fix hanging when prompting to import GPG keys \([https\://github\.com/ansible\-collections/community\.general/pull/9124](https\://github\.com/ansible\-collections/community\.general/pull/9124)\, [https\://github\.com/ansible\-collections/community\.general/issues/8830](https\://github\.com/ansible\-collections/community\.general/issues/8830)\)\. * dnf\_config\_manager \- fix hanging when prompting to import GPG keys \([https\://github\.com/ansible\-collections/community\.general/pull/9124](https\://github\.com/ansible\-collections/community\.general/pull/9124)\, [https\://github\.com/ansible\-collections/community\.general/issues/8830](https\://github\.com/ansible\-collections/community\.general/issues/8830)\)\.
@@ -885,12 +906,12 @@ Regular bugfix and feature release\.
<a id="v10-0-1"></a> <a id="v10-0-1"></a>
## v10\.0\.1 ## v10\.0\.1
<a id="release-summary-12"></a> <a id="release-summary-13"></a>
### Release Summary ### Release Summary
Bugfix release for inclusion in Ansible 11\.0\.0rc1\. Bugfix release for inclusion in Ansible 11\.0\.0rc1\.
<a id="bugfixes-12"></a> <a id="bugfixes-13"></a>
### Bugfixes ### Bugfixes
* keycloak\_client \- fix diff by removing code that turns the attributes dict which contains additional settings into a list \([https\://github\.com/ansible\-collections/community\.general/pull/9077](https\://github\.com/ansible\-collections/community\.general/pull/9077)\)\. * keycloak\_client \- fix diff by removing code that turns the attributes dict which contains additional settings into a list \([https\://github\.com/ansible\-collections/community\.general/pull/9077](https\://github\.com/ansible\-collections/community\.general/pull/9077)\)\.
@@ -900,7 +921,7 @@ Bugfix release for inclusion in Ansible 11\.0\.0rc1\.
<a id="v10-0-0"></a> <a id="v10-0-0"></a>
## v10\.0\.0 ## v10\.0\.0
<a id="release-summary-13"></a> <a id="release-summary-14"></a>
### Release Summary ### Release Summary
This is release 10\.0\.0 of <code>community\.general</code>\, released on 2024\-11\-04\. This is release 10\.0\.0 of <code>community\.general</code>\, released on 2024\-11\-04\.
@@ -1135,7 +1156,7 @@ This is release 10\.0\.0 of <code>community\.general</code>\, released on 2024\-
* proxmox\_kvm \- removed the <code>proxmox\_default\_behavior</code> option\. Explicitly specify the old default values if you were using <code>proxmox\_default\_behavior\=compatibility</code>\, otherwise simply remove it \([https\://github\.com/ansible\-collections/community\.general/pull/8918](https\://github\.com/ansible\-collections/community\.general/pull/8918)\)\. * proxmox\_kvm \- removed the <code>proxmox\_default\_behavior</code> option\. Explicitly specify the old default values if you were using <code>proxmox\_default\_behavior\=compatibility</code>\, otherwise simply remove it \([https\://github\.com/ansible\-collections/community\.general/pull/8918](https\://github\.com/ansible\-collections/community\.general/pull/8918)\)\.
* redhat\_subscriptions \- removed the <code>pool</code> option\. Use <code>pool\_ids</code> instead \([https\://github\.com/ansible\-collections/community\.general/pull/8918](https\://github\.com/ansible\-collections/community\.general/pull/8918)\)\. * redhat\_subscriptions \- removed the <code>pool</code> option\. Use <code>pool\_ids</code> instead \([https\://github\.com/ansible\-collections/community\.general/pull/8918](https\://github\.com/ansible\-collections/community\.general/pull/8918)\)\.
<a id="bugfixes-13"></a> <a id="bugfixes-14"></a>
### Bugfixes ### Bugfixes
* bitwarden lookup plugin \- fix <code>KeyError</code> in <code>search\_field</code> \([https\://github\.com/ansible\-collections/community\.general/issues/8549](https\://github\.com/ansible\-collections/community\.general/issues/8549)\, [https\://github\.com/ansible\-collections/community\.general/pull/8557](https\://github\.com/ansible\-collections/community\.general/pull/8557)\)\. * bitwarden lookup plugin \- fix <code>KeyError</code> in <code>search\_field</code> \([https\://github\.com/ansible\-collections/community\.general/issues/8549](https\://github\.com/ansible\-collections/community\.general/issues/8549)\, [https\://github\.com/ansible\-collections/community\.general/pull/8557](https\://github\.com/ansible\-collections/community\.general/pull/8557)\)\.

View File

@@ -6,6 +6,24 @@ Community General Release Notes
This changelog describes changes after version 9.0.0. This changelog describes changes after version 9.0.0.
v10.7.5
=======
Release Summary
---------------
Regular bugfix release.
Bugfixes
--------
- Avoid usage of deprecated ``ansible.module_utils.six`` in all code that does not have to support Python 2 (https://github.com/ansible-collections/community.general/pull/10873).
- github_deploy_key - fix bug during error handling if no body was present in the result (https://github.com/ansible-collections/community.general/issues/10853, https://github.com/ansible-collections/community.general/pull/10857).
- keycloak_group - fixes an issue where module ignores realm when searching subgroups by name (https://github.com/ansible-collections/community.general/pull/10840).
- keycloak_role - fixes an issue where the module incorrectly returns ``changed=true`` when using the alias ``clientId`` in composite roles (https://github.com/ansible-collections/community.general/pull/10829).
- rocketchat - fix message delivery in Rocket Chat >= 7.5.3 by forcing ``Content-Type`` header to ``application/json`` instead of the default ``application/x-www-form-urlencoded`` (https://github.com/ansible-collections/community.general/issues/10796, https://github.com/ansible-collections/community.general/pull/10796).
- yaml cache plugin - make compatible with ansible-core 2.19 (https://github.com/ansible-collections/community.general/issues/10849, https://github.com/ansible-collections/community.general/issues/10852).
v10.7.4 v10.7.4
======= =======

View File

@@ -16,6 +16,11 @@
# community.crypto's main branch needs ansible-core >= 2.17 # community.crypto's main branch needs ansible-core >= 2.17
"community.crypto" = "git+https://github.com/ansible-collections/community.crypto.git,stable-2" "community.crypto" = "git+https://github.com/ansible-collections/community.crypto.git,stable-2"
[vcs]
vcs = "git"
development_branch = "main"
stable_branches = [ "stable-*" ]
[sessions] [sessions]
[sessions.docs_check] [sessions.docs_check]

View File

@@ -2047,3 +2047,31 @@ releases:
- 10751-kdeconfig-support-kwriteconfig6.yml - 10751-kdeconfig-support-kwriteconfig6.yml
- 10752-selective-hardcoded-loop-var.yml - 10752-selective-hardcoded-loop-var.yml
release_date: '2025-09-08' release_date: '2025-09-08'
10.7.5:
changes:
bugfixes:
- Avoid usage of deprecated ``ansible.module_utils.six`` in all code that
does not have to support Python 2 (https://github.com/ansible-collections/community.general/pull/10873).
- github_deploy_key - fix bug during error handling if no body was present
in the result (https://github.com/ansible-collections/community.general/issues/10853,
https://github.com/ansible-collections/community.general/pull/10857).
- keycloak_group - fixes an issue where module ignores realm when searching
subgroups by name (https://github.com/ansible-collections/community.general/pull/10840).
- keycloak_role - fixes an issue where the module incorrectly returns ``changed=true``
when using the alias ``clientId`` in composite roles (https://github.com/ansible-collections/community.general/pull/10829).
- rocketchat - fix message delivery in Rocket Chat >= 7.5.3 by forcing ``Content-Type``
header to ``application/json`` instead of the default ``application/x-www-form-urlencoded``
(https://github.com/ansible-collections/community.general/issues/10796,
https://github.com/ansible-collections/community.general/pull/10796).
- yaml cache plugin - make compatible with ansible-core 2.19 (https://github.com/ansible-collections/community.general/issues/10849,
https://github.com/ansible-collections/community.general/issues/10852).
release_summary: Regular bugfix release.
fragments:
- 10.7.5.yml
- 10796-rocketchat-force-content-type.yml
- 10829-fix-keycloak-role-changed-status.yml
- 10840-fix-keycloak-subgroup-search-realm.yml
- 10852-yaml.yml
- 10857-github_deploy_key-err.yml
- 10873-six.yml
release_date: '2025-10-06'

View File

@@ -5,7 +5,7 @@
namespace: community namespace: community
name: general name: general
version: 10.7.4 version: 10.7.5
readme: README.md readme: README.md
authors: authors:
- Ansible (https://github.com/ansible) - Ansible (https://github.com/ansible)

View File

@@ -88,7 +88,7 @@ plugin_routing:
deprecation: deprecation:
removal_version: 12.0.0 removal_version: 12.0.0
warning_text: >- warning_text: >-
The plugin has been superseded by the the option `result_format=yaml` in callback plugin ansible.builtin.default from ansible-core 2.13 onwards. The plugin has been superseded by the option `result_format=yaml` in callback plugin ansible.builtin.default from ansible-core 2.13 onwards.
connection: connection:
docker: docker:
redirect: community.docker.docker redirect: community.docker.docker

View File

@@ -59,8 +59,8 @@ notes:
- This plugin ignores the C(become_user) supplied and uses C(pmrun)'s own configuration to select the user. - This plugin ignores the C(become_user) supplied and uses C(pmrun)'s own configuration to select the user.
""" """
from shlex import quote as shlex_quote
from ansible.plugins.become import BecomeBase from ansible.plugins.become import BecomeBase
from ansible.module_utils.six.moves import shlex_quote
class BecomeModule(BecomeBase): class BecomeModule(BecomeBase):

View File

@@ -48,7 +48,6 @@ try:
except ImportError: except ImportError:
import pickle import pickle
from ansible.module_utils.six import PY3
from ansible.plugins.cache import BaseFileCacheModule from ansible.plugins.cache import BaseFileCacheModule
@@ -61,10 +60,7 @@ class CacheModule(BaseFileCacheModule):
def _load(self, filepath): def _load(self, filepath):
# Pickle is a binary format # Pickle is a binary format
with open(filepath, 'rb') as f: with open(filepath, 'rb') as f:
if PY3:
return pickle.load(f, encoding='bytes') return pickle.load(f, encoding='bytes')
else:
return pickle.load(f)
def _dump(self, value, filepath): def _dump(self, value, filepath):
with open(filepath, 'wb') as f: with open(filepath, 'wb') as f:

View File

@@ -44,8 +44,7 @@ options:
# TODO: determine whether it is OK to change to: type: float # TODO: determine whether it is OK to change to: type: float
""" """
import os
import codecs
import yaml import yaml
@@ -60,9 +59,9 @@ class CacheModule(BaseFileCacheModule):
""" """
def _load(self, filepath): def _load(self, filepath):
with codecs.open(filepath, 'r', encoding='utf-8') as f: with open(os.path.abspath(filepath), 'r', encoding='utf-8') as f:
return AnsibleLoader(f).get_single_data() return AnsibleLoader(f).get_single_data()
def _dump(self, value, filepath): def _dump(self, value, filepath):
with codecs.open(filepath, 'w', encoding='utf-8') as f: with open(os.path.abspath(filepath), 'w', encoding='utf-8') as f:
yaml.dump(value, f, Dumper=AnsibleDumper, default_flow_style=False) yaml.dump(value, f, Dumper=AnsibleDumper, default_flow_style=False)

View File

@@ -27,7 +27,6 @@ try:
except ImportError: except ImportError:
pass pass
from ansible.module_utils.six import binary_type, text_type
from collections.abc import MutableMapping, MutableSequence from collections.abc import MutableMapping, MutableSequence
from ansible.plugins.callback.default import CallbackModule as CallbackModule_default from ansible.plugins.callback.default import CallbackModule as CallbackModule_default
from ansible.utils.color import colorize, hostcolor from ansible.utils.color import colorize, hostcolor
@@ -236,7 +235,7 @@ class CallbackModule(CallbackModule_default):
# Remove empty attributes (list, dict, str) # Remove empty attributes (list, dict, str)
for attr in result.copy(): for attr in result.copy():
if isinstance(result[attr], (MutableSequence, MutableMapping, binary_type, text_type)): if isinstance(result[attr], (MutableSequence, MutableMapping, bytes, str)):
if not result[attr]: if not result[attr]:
del result[attr] del result[attr]

View File

@@ -87,7 +87,6 @@ from contextlib import closing
from os.path import basename from os.path import basename
from ansible.errors import AnsibleError, AnsibleRuntimeError from ansible.errors import AnsibleError, AnsibleRuntimeError
from ansible.module_utils.six import raise_from
from ansible.plugins.callback import CallbackBase from ansible.plugins.callback import CallbackBase
try: try:
@@ -312,9 +311,7 @@ class CallbackModule(CallbackBase):
self.disabled = False self.disabled = False
if ELASTIC_LIBRARY_IMPORT_ERROR: if ELASTIC_LIBRARY_IMPORT_ERROR:
raise_from( raise AnsibleError('The `elastic-apm` must be installed to use this plugin') from ELASTIC_LIBRARY_IMPORT_ERROR
AnsibleError('The `elastic-apm` must be installed to use this plugin'),
ELASTIC_LIBRARY_IMPORT_ERROR)
self.tasks_data = OrderedDict() self.tasks_data = OrderedDict()

View File

@@ -66,7 +66,8 @@ options:
type: string type: string
""" """
from ansible.module_utils.six.moves.urllib.parse import urlencode from urllib.parse import urlencode
from ansible.module_utils.common.text.converters import to_bytes from ansible.module_utils.common.text.converters import to_bytes
from ansible.module_utils.urls import open_url from ansible.module_utils.urls import open_url
from ansible.plugins.callback import CallbackBase from ansible.plugins.callback import CallbackBase

View File

@@ -97,7 +97,7 @@ options:
otel_exporter_otlp_traces_protocol: otel_exporter_otlp_traces_protocol:
type: str type: str
description: description:
- E(OTEL_EXPORTER_OTLP_TRACES_PROTOCOL) represents the the transport protocol for spans. - E(OTEL_EXPORTER_OTLP_TRACES_PROTOCOL) represents the transport protocol for spans.
- See - See
U(https://opentelemetry-python.readthedocs.io/en/latest/sdk/environment_variables.html#envvar-OTEL_EXPORTER_OTLP_TRACES_PROTOCOL). U(https://opentelemetry-python.readthedocs.io/en/latest/sdk/environment_variables.html#envvar-OTEL_EXPORTER_OTLP_TRACES_PROTOCOL).
default: grpc default: grpc
@@ -137,14 +137,12 @@ import json
import os import os
import socket import socket
import uuid import uuid
from time import time_ns
from collections import OrderedDict from collections import OrderedDict
from os.path import basename from os.path import basename
from time import time_ns
from urllib.parse import urlparse
from ansible.errors import AnsibleError from ansible.errors import AnsibleError
from ansible.module_utils.six import raise_from
from ansible.module_utils.six.moves.urllib.parse import urlparse
from ansible.plugins.callback import CallbackBase from ansible.plugins.callback import CallbackBase
try: try:
@@ -499,9 +497,9 @@ class CallbackModule(CallbackBase):
self.otel_exporter_otlp_traces_protocol = None self.otel_exporter_otlp_traces_protocol = None
if OTEL_LIBRARY_IMPORT_ERROR: if OTEL_LIBRARY_IMPORT_ERROR:
raise_from( raise AnsibleError(
AnsibleError('The `opentelemetry-api`, `opentelemetry-exporter-otlp` or `opentelemetry-sdk` must be installed to use this plugin'), 'The `opentelemetry-api`, `opentelemetry-exporter-otlp` or `opentelemetry-sdk` must be installed to use this plugin'
OTEL_LIBRARY_IMPORT_ERROR) ) from OTEL_LIBRARY_IMPORT_ERROR
self.tasks_data = OrderedDict() self.tasks_data = OrderedDict()

View File

@@ -75,11 +75,11 @@ import os
import os.path import os.path
import subprocess import subprocess
import traceback import traceback
from shlex import quote as shlex_quote
from ansible.errors import AnsibleError from ansible.errors import AnsibleError
from ansible.module_utils.basic import is_executable from ansible.module_utils.basic import is_executable
from ansible.module_utils.common.process import get_bin_path from ansible.module_utils.common.process import get_bin_path
from ansible.module_utils.six.moves import shlex_quote
from ansible.module_utils.common.text.converters import to_bytes from ansible.module_utils.common.text.converters import to_bytes
from ansible.plugins.connection import ConnectionBase, BUFSIZE from ansible.plugins.connection import ConnectionBase, BUFSIZE
from ansible.utils.display import Display from ansible.utils.display import Display

View File

@@ -38,9 +38,9 @@ import os
import os.path import os.path
import subprocess import subprocess
import traceback import traceback
from shlex import quote as shlex_quote
from ansible.errors import AnsibleError from ansible.errors import AnsibleError
from ansible.module_utils.six.moves import shlex_quote
from ansible.module_utils.common.process import get_bin_path from ansible.module_utils.common.process import get_bin_path
from ansible.module_utils.common.text.converters import to_bytes, to_native, to_text from ansible.module_utils.common.text.converters import to_bytes, to_native, to_text
from ansible.plugins.connection import ConnectionBase, BUFSIZE from ansible.plugins.connection import ConnectionBase, BUFSIZE

View File

@@ -31,9 +31,9 @@ import os
import os.path import os.path
import subprocess import subprocess
import traceback import traceback
from shlex import quote as shlex_quote
from ansible.errors import AnsibleError from ansible.errors import AnsibleError
from ansible.module_utils.six.moves import shlex_quote
from ansible.module_utils.common.process import get_bin_path from ansible.module_utils.common.process import get_bin_path
from ansible.module_utils.common.text.converters import to_bytes from ansible.module_utils.common.text.converters import to_bytes
from ansible.plugins.connection import ConnectionBase, BUFSIZE from ansible.plugins.connection import ConnectionBase, BUFSIZE

View File

@@ -12,7 +12,7 @@ class ModuleDocFragment(object):
options: options:
venv: venv:
description: description:
- Use the the Python interpreter from this virtual environment. - Use the Python interpreter from this virtual environment.
- Pass the path to the root of the virtualenv, not the C(bin/) directory nor the C(python) executable. - Pass the path to the root of the virtualenv, not the C(bin/) directory nor the C(python) executable.
type: path type: path
settings: settings:

View File

@@ -45,10 +45,10 @@ _value:
""" """
from io import StringIO
from configparser import ConfigParser
from ansible.errors import AnsibleFilterError from ansible.errors import AnsibleFilterError
from ansible.module_utils.six import string_types
from ansible.module_utils.six.moves import StringIO
from ansible.module_utils.six.moves.configparser import ConfigParser
class IniParser(ConfigParser): class IniParser(ConfigParser):
@@ -73,7 +73,7 @@ class IniParser(ConfigParser):
def from_ini(obj): def from_ini(obj):
''' Read the given string as INI file and return a dict ''' ''' Read the given string as INI file and return a dict '''
if not isinstance(obj, string_types): if not isinstance(obj, str):
raise AnsibleFilterError(f'from_ini requires a str, got {type(obj)}') raise AnsibleFilterError(f'from_ini requires a str, got {type(obj)}')
parser = IniParser() parser = IniParser()

View File

@@ -196,7 +196,6 @@ _value:
""" """
from ansible.errors import AnsibleFilterError from ansible.errors import AnsibleFilterError
from ansible.module_utils.six import string_types
from collections.abc import Mapping, Sequence from collections.abc import Mapping, Sequence
from ansible.utils.vars import merge_hash from ansible.utils.vars import merge_hash
@@ -257,7 +256,7 @@ def lists_mergeby(*terms, **kwargs):
index = terms[-1] index = terms[-1]
if not isinstance(index, string_types): if not isinstance(index, str):
msg = ("First argument after the lists for community.general.lists_mergeby must be string. " msg = ("First argument after the lists for community.general.lists_mergeby must be string. "
"%s is %s") "%s is %s")
raise AnsibleFilterError(msg % (index, type(index))) raise AnsibleFilterError(msg % (index, type(index)))

View File

@@ -45,14 +45,13 @@ import re
from random import Random, SystemRandom from random import Random, SystemRandom
from ansible.errors import AnsibleFilterError from ansible.errors import AnsibleFilterError
from ansible.module_utils.six import string_types
def random_mac(value, seed=None): def random_mac(value, seed=None):
''' takes string prefix, and return it completed with random bytes ''' takes string prefix, and return it completed with random bytes
to get a complete 6 bytes MAC address ''' to get a complete 6 bytes MAC address '''
if not isinstance(value, string_types): if not isinstance(value, str):
raise AnsibleFilterError('Invalid value type (%s) for random_mac (%s)' % raise AnsibleFilterError('Invalid value type (%s) for random_mac (%s)' %
(type(value), value)) (type(value), value))

View File

@@ -49,11 +49,10 @@ _value:
type: string type: string
""" """
from ansible.errors import AnsibleFilterError
from collections.abc import Mapping from collections.abc import Mapping
from ansible.module_utils.six.moves import StringIO from configparser import ConfigParser
from ansible.module_utils.six.moves.configparser import ConfigParser from io import StringIO
from ansible.errors import AnsibleFilterError
class IniParser(ConfigParser): class IniParser(ConfigParser):

View File

@@ -120,7 +120,6 @@ except ImportError:
from ansible.errors import AnsibleFilterError from ansible.errors import AnsibleFilterError
from ansible.module_utils.common.text.converters import to_text from ansible.module_utils.common.text.converters import to_text
from ansible.module_utils.six import string_types
class TypeValidationError(AnsibleFilterError): class TypeValidationError(AnsibleFilterError):
@@ -131,7 +130,7 @@ class TypeValidationError(AnsibleFilterError):
expected: Description of expected type expected: Description of expected type
""" """
def __init__(self, obj, expected): def __init__(self, obj, expected):
type_name = "string" if isinstance(obj, string_types) else type(obj).__name__ type_name = "string" if isinstance(obj, str) else type(obj).__name__
super().__init__(f"Expected {expected}, got a {type_name}") super().__init__(f"Expected {expected}, got a {type_name}")
@@ -160,7 +159,7 @@ def _validate_list_param(param, param_name, ensure_strings=True):
if ensure_strings: if ensure_strings:
for item in param: for item in param:
if not isinstance(item, string_types): if not isinstance(item, str):
# Maintain original error message format # Maintain original error message format
if param_name == "column_order": if param_name == "column_order":
error_msg = "a string for column name" error_msg = "a string for column name"
@@ -186,7 +185,7 @@ def _match_key(item_dict, lookup_key):
return lookup_key return lookup_key
# Try boolean conversion for 'true'/'false' strings # Try boolean conversion for 'true'/'false' strings
if isinstance(lookup_key, string_types): if isinstance(lookup_key, str):
if lookup_key.lower() == 'true' and True in item_dict: if lookup_key.lower() == 'true' and True in item_dict:
return True return True
if lookup_key.lower() == 'false' and False in item_dict: if lookup_key.lower() == 'false' and False in item_dict:
@@ -338,11 +337,11 @@ def to_prettytable(data, *args, **kwargs):
# Validate column_alignments keys and values # Validate column_alignments keys and values
for key, value in column_alignments.items(): for key, value in column_alignments.items():
# Check that keys are strings # Check that keys are strings
if not isinstance(key, string_types): if not isinstance(key, str):
raise TypeValidationError(key, "a string for column_alignments key") raise TypeValidationError(key, "a string for column_alignments key")
# Check that values are strings # Check that values are strings
if not isinstance(value, string_types): if not isinstance(value, str):
raise TypeValidationError(value, "a string for column_alignments value") raise TypeValidationError(value, "a string for column_alignments value")
# Check that values are valid alignments # Check that values are valid alignments
@@ -394,7 +393,7 @@ def to_prettytable(data, *args, **kwargs):
row.append(item.get(matched_key, "")) row.append(item.get(matched_key, ""))
else: else:
# Try case-insensitive lookup as last resort # Try case-insensitive lookup as last resort
lower_col = col.lower() if isinstance(col, string_types) else str(col).lower() lower_col = col.lower() if isinstance(col, str) else str(col).lower()
if lower_col in reverse_key_map: if lower_col in reverse_key_map:
row.append(item.get(reverse_key_map[lower_col], "")) row.append(item.get(reverse_key_map[lower_col], ""))
else: else:

View File

@@ -49,7 +49,6 @@ _value:
from unicodedata import normalize from unicodedata import normalize
from ansible.errors import AnsibleFilterError from ansible.errors import AnsibleFilterError
from ansible.module_utils.six import text_type
try: try:
from ansible.errors import AnsibleTypeError from ansible.errors import AnsibleTypeError
@@ -69,7 +68,7 @@ def unicode_normalize(data, form='NFC'):
A normalized unicode string of the specified 'form'. A normalized unicode string of the specified 'form'.
""" """
if not isinstance(data, text_type): if not isinstance(data, str):
raise AnsibleTypeError("%s is not a valid input type" % type(data)) raise AnsibleTypeError("%s is not a valid input type" % type(data))
if form not in ('NFC', 'NFD', 'NFKC', 'NFKD'): if form not in ('NFC', 'NFD', 'NFKC', 'NFKD'):

View File

@@ -131,7 +131,6 @@ import socket
from ansible.errors import AnsibleError from ansible.errors import AnsibleError
from ansible.plugins.inventory import BaseInventoryPlugin, Cacheable, to_safe_group_name from ansible.plugins.inventory import BaseInventoryPlugin, Cacheable, to_safe_group_name
from ansible.module_utils.six import text_type
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
@@ -260,7 +259,7 @@ class InventoryModule(BaseInventoryPlugin, Cacheable):
self.cobbler = xmlrpc_client.Server(self.cobbler_url, allow_none=True) self.cobbler = xmlrpc_client.Server(self.cobbler_url, allow_none=True)
self.token = None self.token = None
if self.get_option('user') is not None: if self.get_option('user') is not None:
self.token = self.cobbler.login(text_type(self.get_option('user')), text_type(self.get_option('password'))) self.token = self.cobbler.login(str(self.get_option('user')), str(self.get_option('password')))
self.cache_key = self.get_cache_key(path) self.cache_key = self.get_cache_key(path)
self.use_cache = cache and self.get_option('cache') self.use_cache = cache and self.get_option('cache')

View File

@@ -96,11 +96,11 @@ compose:
""" """
import json import json
from urllib.error import HTTPError
from ansible.errors import AnsibleParserError from ansible.errors import AnsibleParserError
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable from ansible.plugins.inventory import BaseInventoryPlugin, Constructable
from ansible.module_utils.urls import open_url from ansible.module_utils.urls import open_url
from ansible.module_utils.six.moves.urllib.error import HTTPError
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe

View File

@@ -171,12 +171,12 @@ import json
import re import re
import time import time
import os import os
from urllib.parse import urlencode
from ansible.plugins.inventory import BaseInventoryPlugin from ansible.plugins.inventory import BaseInventoryPlugin
from ansible.module_utils.common.text.converters import to_native, to_text from ansible.module_utils.common.text.converters import to_native, to_text
from ansible.module_utils.common.dict_transformations import dict_merge from ansible.module_utils.common.dict_transformations import dict_merge
from ansible.module_utils.six import raise_from
from ansible.errors import AnsibleError, AnsibleParserError from ansible.errors import AnsibleError, AnsibleParserError
from ansible.module_utils.six.moves.urllib.parse import urlencode
from ansible_collections.community.general.plugins.module_utils.lxd import LXDClient, LXDClientException from ansible_collections.community.general.plugins.module_utils.lxd import LXDClient, LXDClientException
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
@@ -1094,9 +1094,7 @@ class InventoryModule(BaseInventoryPlugin):
Returns: Returns:
None""" None"""
if IPADDRESS_IMPORT_ERROR: if IPADDRESS_IMPORT_ERROR:
raise_from( raise AnsibleError('another_library must be installed to use this plugin') from IPADDRESS_IMPORT_ERROR
AnsibleError('another_library must be installed to use this plugin'),
IPADDRESS_IMPORT_ERROR)
super(InventoryModule, self).parse(inventory, loader, path, cache=False) super(InventoryModule, self).parse(inventory, loader, path, cache=False)
# Read the inventory YAML file # Read the inventory YAML file

View File

@@ -62,13 +62,13 @@ groups:
import json import json
from sys import version as python_version from sys import version as python_version
from urllib.parse import urljoin
from ansible.errors import AnsibleError from ansible.errors import AnsibleError
from ansible.module_utils.urls import open_url from ansible.module_utils.urls import open_url
from ansible.plugins.inventory import BaseInventoryPlugin from ansible.plugins.inventory import BaseInventoryPlugin
from ansible.module_utils.common.text.converters import to_text from ansible.module_utils.common.text.converters import to_text
from ansible.module_utils.ansible_release import __version__ as ansible_version from ansible.module_utils.ansible_release import __version__ as ansible_version
from ansible.module_utils.six.moves.urllib.parse import urljoin
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe

View File

@@ -224,13 +224,12 @@ want_proxmox_nodes_ansible_host: true
import itertools import itertools
import re import re
from urllib.parse import urlencode
from ansible.module_utils.common._collections_compat import MutableMapping from ansible.module_utils.common._collections_compat import MutableMapping
from ansible.errors import AnsibleError from ansible.errors import AnsibleError
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable, Cacheable from ansible.plugins.inventory import BaseInventoryPlugin, Constructable, Cacheable
from ansible.module_utils.six import string_types
from ansible.module_utils.six.moves.urllib.parse import urlencode
from ansible.utils.display import Display from ansible.utils.display import Display
from ansible_collections.community.general.plugins.module_utils.version import LooseVersion from ansible_collections.community.general.plugins.module_utils.version import LooseVersion
@@ -498,7 +497,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
out_val[k] = v out_val[k] = v
value = out_val value = out_val
if config not in plaintext_configs and isinstance(value, string_types) \ if config not in plaintext_configs and isinstance(value, str) \
and all("=" in v for v in value.split(",")): and all("=" in v for v in value.split(",")):
# split off strings with commas to a dict # split off strings with commas to a dict
# skip over any keys that cannot be processed # skip over any keys that cannot be processed

View File

@@ -128,9 +128,8 @@ from ansible_collections.community.general.plugins.module_utils.scaleway import
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
from ansible.module_utils.urls import open_url from ansible.module_utils.urls import open_url
from ansible.module_utils.common.text.converters import to_text from ansible.module_utils.common.text.converters import to_text
from ansible.module_utils.six import raise_from
import ansible.module_utils.six.moves.urllib.parse as urllib_parse import urllib.parse as urllib_parse
def _fetch_information(token, url): def _fetch_information(token, url):
@@ -334,7 +333,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable):
def parse(self, inventory, loader, path, cache=True): def parse(self, inventory, loader, path, cache=True):
if YAML_IMPORT_ERROR: if YAML_IMPORT_ERROR:
raise_from(AnsibleError('PyYAML is probably missing'), YAML_IMPORT_ERROR) raise AnsibleError('PyYAML is probably missing') from YAML_IMPORT_ERROR
super(InventoryModule, self).parse(inventory, loader, path) super(InventoryModule, self).parse(inventory, loader, path)
self._read_config_data(path=path) self._read_config_data(path=path)

View File

@@ -112,7 +112,8 @@ _raw:
type: dict type: dict
""" """
from ansible.module_utils.six.moves.urllib.parse import urlparse from urllib.parse import urlparse
from ansible.errors import AnsibleError, AnsibleAssertionError from ansible.errors import AnsibleError, AnsibleAssertionError
from ansible.plugins.lookup import LookupBase from ansible.plugins.lookup import LookupBase
from ansible.module_utils.common.text.converters import to_text from ansible.module_utils.common.text.converters import to_text

View File

@@ -122,7 +122,6 @@ _list:
from ansible.errors import AnsibleLookupError from ansible.errors import AnsibleLookupError
from collections.abc import Mapping, Sequence from collections.abc import Mapping, Sequence
from ansible.module_utils.six import string_types
from ansible.plugins.lookup import LookupBase from ansible.plugins.lookup import LookupBase
from ansible.release import __version__ as ansible_version from ansible.release import __version__ as ansible_version
from ansible.template import Templar from ansible.template import Templar
@@ -225,7 +224,7 @@ class LookupModule(LookupBase):
raise AnsibleLookupError( raise AnsibleLookupError(
f'The variable {k!r} appears more than once') f'The variable {k!r} appears more than once')
vars_so_far.add(k) vars_so_far.add(k)
if isinstance(v, string_types): if isinstance(v, str):
data.append((k, v, None)) data.append((k, v, None))
elif isinstance(v, (Sequence, Mapping)): elif isinstance(v, (Sequence, Mapping)):
data.append((k, None, v)) data.append((k, None, v))

View File

@@ -37,7 +37,6 @@ _raw:
type: list type: list
""" """
from ansible.errors import AnsibleError from ansible.errors import AnsibleError
from ansible.module_utils.six import string_types
from ansible.plugins.lookup import LookupBase from ansible.plugins.lookup import LookupBase
from ansible.utils.listify import listify_lookup_plugin_terms from ansible.utils.listify import listify_lookup_plugin_terms
@@ -65,7 +64,7 @@ class LookupModule(LookupBase):
# ignore undefined items # ignore undefined items
break break
if isinstance(term, string_types): if isinstance(term, str):
# convert a variable to a list # convert a variable to a list
try: try:
term2 = listify_lookup_plugin_terms(term, templar=self._templar) term2 = listify_lookup_plugin_terms(term, templar=self._templar)

View File

@@ -75,8 +75,9 @@ except ImportError:
import time import time
import json import json
from urllib.error import HTTPError
from ansible.module_utils.urls import open_url from ansible.module_utils.urls import open_url
from ansible.module_utils.six.moves.urllib.error import HTTPError
from ansible.errors import AnsibleError, AnsibleOptionsError from ansible.errors import AnsibleError, AnsibleOptionsError
from ansible.plugins.lookup import LookupBase from ansible.plugins.lookup import LookupBase
from ansible.utils.display import Display from ansible.utils.display import Display

View File

@@ -63,16 +63,18 @@ RETURN = '''
the same environment variable(s), the last one returned by the Manifold API will take precedence. the same environment variable(s), the last one returned by the Manifold API will take precedence.
type: dict type: dict
''' '''
import json
import sys
from traceback import format_exception
from urllib.error import HTTPError, URLError
from urllib.parse import urlencode
from ansible.errors import AnsibleError from ansible.errors import AnsibleError
from ansible.plugins.lookup import LookupBase from ansible.plugins.lookup import LookupBase
from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
from ansible.module_utils.six.moves.urllib.parse import urlencode
from ansible.module_utils import six from ansible.module_utils import six
from ansible.utils.display import Display from ansible.utils.display import Display
from traceback import format_exception
import json
import sys
display = Display() display = Display()

View File

@@ -86,7 +86,6 @@ from ansible.plugins.lookup import LookupBase
from ansible.errors import AnsibleLookupError, AnsibleOptionsError from ansible.errors import AnsibleLookupError, AnsibleOptionsError
from ansible.module_utils.common.process import get_bin_path from ansible.module_utils.common.process import get_bin_path
from ansible.module_utils.common.text.converters import to_bytes, to_text from ansible.module_utils.common.text.converters import to_bytes, to_text
from ansible.module_utils.six import with_metaclass
from ansible_collections.community.general.plugins.module_utils.onepassword import OnePasswordConfig from ansible_collections.community.general.plugins.module_utils.onepassword import OnePasswordConfig
@@ -99,7 +98,7 @@ def _lower_if_possible(value):
return value return value
class OnePassCLIBase(with_metaclass(abc.ABCMeta, object)): class OnePassCLIBase(object, metaclass=abc.ABCMeta):
bin = "op" bin = "op"
def __init__( def __init__(

View File

@@ -66,7 +66,6 @@ EXAMPLES = r"""
from ansible.plugins.lookup import LookupBase from ansible.plugins.lookup import LookupBase
from ansible.utils.display import Display from ansible.utils.display import Display
from ansible.errors import AnsibleError from ansible.errors import AnsibleError
from ansible.module_utils.six import raise_from
try: try:
from pam.revbits_ansible.server import SecretServer from pam.revbits_ansible.server import SecretServer
@@ -87,10 +86,7 @@ class LookupModule(LookupBase):
def run(self, terms, variables, **kwargs): def run(self, terms, variables, **kwargs):
if ANOTHER_LIBRARY_IMPORT_ERROR: if ANOTHER_LIBRARY_IMPORT_ERROR:
raise_from( raise AnsibleError('revbits_ansible must be installed to use this plugin') from ANOTHER_LIBRARY_IMPORT_ERROR
AnsibleError('revbits_ansible must be installed to use this plugin'),
ANOTHER_LIBRARY_IMPORT_ERROR
)
self.set_options(var_options=variables, direct=kwargs) self.set_options(var_options=variables, direct=kwargs)
secret_server = LookupModule.Client( secret_server = LookupModule.Client(
{ {

View File

@@ -258,7 +258,6 @@ EXAMPLES = r"""
import abc import abc
import os import os
from ansible.errors import AnsibleError, AnsibleOptionsError from ansible.errors import AnsibleError, AnsibleOptionsError
from ansible.module_utils import six
from ansible.plugins.lookup import LookupBase from ansible.plugins.lookup import LookupBase
from ansible.utils.display import Display from ansible.utils.display import Display
@@ -289,8 +288,7 @@ except ImportError:
display = Display() display = Display()
@six.add_metaclass(abc.ABCMeta) class TSSClient(object, metaclass=abc.ABCMeta):
class TSSClient(object):
def __init__(self): def __init__(self):
self._client = None self._client = None

View File

@@ -1626,7 +1626,7 @@ class KeycloakAPI(object):
return None return None
for p in name_chain[1:]: for p in name_chain[1:]:
for sg in self.get_subgroups(tmp): for sg in self.get_subgroups(tmp, realm):
pv, is_id = self._get_normed_group_parent(p) pv, is_id = self._get_normed_group_parent(p)
if is_id: if is_id:

View File

@@ -284,6 +284,8 @@ class GithubDeployKey(object):
body = info.get('body') body = info.get('body')
if body: if body:
err = self.module.from_json(body)['message'] err = self.module.from_json(body)['message']
else:
err = None
if status_code == 401: if status_code == 401:
self.module.fail_json(msg="Failed to connect to {0} due to invalid credentials".format(self.github_url), http_status_code=status_code, error=err) self.module.fail_json(msg="Failed to connect to {0} due to invalid credentials".format(self.github_url), http_status_code=status_code, error=err)

View File

@@ -146,7 +146,7 @@ options:
type: str type: str
required: false required: false
description: description:
- Sets the the assignee when O(operation) is V(create), V(transition), or V(edit). - Sets the assignee when O(operation) is V(create), V(transition), or V(edit).
- Recent versions of JIRA no longer accept a user name as a user identifier. In that case, use O(account_id) instead. - Recent versions of JIRA no longer accept a user name as a user identifier. In that case, use O(account_id) instead.
- Note that JIRA may not allow changing field values on specific transitions or states. - Note that JIRA may not allow changing field values on specific transitions or states.
account_id: account_id:

View File

@@ -364,7 +364,7 @@ def main():
else: else:
if state == 'present': if state == 'present':
compare_exclude = [] compare_exclude = ['clientId']
if 'composites' in desired_role and isinstance(desired_role['composites'], list) and len(desired_role['composites']) > 0: if 'composites' in desired_role and isinstance(desired_role['composites'], list) and len(desired_role['composites']) > 0:
composites = kc.get_role_composites(rolerep=before_role, clientid=clientid, realm=realm) composites = kc.get_role_composites(rolerep=before_role, clientid=clientid, realm=realm)
before_role['composites'] = [] before_role['composites'] = []

View File

@@ -50,7 +50,7 @@ options:
- Use O(cache_name) as the ticket cache name and location. - Use O(cache_name) as the ticket cache name and location.
- If this option is not used, the default cache name and location are used. - If this option is not used, the default cache name and location are used.
- The default credentials cache may vary between systems. - The default credentials cache may vary between systems.
- If not set the the value of E(KRB5CCNAME) environment variable will be used instead, its value is used to name the - If not set the value of E(KRB5CCNAME) environment variable will be used instead, its value is used to name the
default ticket cache. default ticket cache.
type: str type: str
lifetime: lifetime:

View File

@@ -1111,7 +1111,7 @@ def main():
module.fail_json(msg=to_native(result['msg'])) module.fail_json(msg=to_native(result['msg']))
for command in command_list: for command in command_list:
# standardize on the Power* commands, but allow the the legacy # standardize on the Power* commands, but allow the legacy
# GracefulRestart command # GracefulRestart command
if command == 'GracefulRestart': if command == 'GracefulRestart':
command = 'PowerGracefulRestart' command = 'PowerGracefulRestart'

View File

@@ -32,7 +32,7 @@ notes:
- It is possible to interact with C(subscription-manager) only as root, so root permissions are required to successfully - It is possible to interact with C(subscription-manager) only as root, so root permissions are required to successfully
run this module. run this module.
- Since community.general 6.5.0, credentials (that is, O(username) and O(password), O(activationkey), or O(token)) are needed - Since community.general 6.5.0, credentials (that is, O(username) and O(password), O(activationkey), or O(token)) are needed
only in case the the system is not registered, or O(force_register) is specified; this makes it possible to use the module only in case the system is not registered, or O(force_register) is specified; this makes it possible to use the module
to tweak an already registered system, for example attaching pools to it (using O(pool_ids)), and modifying the C(syspurpose) to tweak an already registered system, for example attaching pools to it (using O(pool_ids)), and modifying the C(syspurpose)
attributes (using O(syspurpose)). attributes (using O(syspurpose)).
requirements: requirements:

View File

@@ -203,14 +203,17 @@ def build_payload_for_rocketchat(module, text, channel, username, icon_url, icon
return payload return payload
def do_notify_rocketchat(module, domain, token, protocol, payload): def do_notify_rocketchat(module, domain, token, protocol, payload, is_pre740):
if token.count('/') < 1: if token.count('/') < 1:
module.fail_json(msg="Invalid Token specified, provide a valid token") module.fail_json(msg="Invalid Token specified, provide a valid token")
rocketchat_incoming_webhook = ROCKETCHAT_INCOMING_WEBHOOK % (protocol, domain, token) rocketchat_incoming_webhook = ROCKETCHAT_INCOMING_WEBHOOK % (protocol, domain, token)
response, info = fetch_url(module, rocketchat_incoming_webhook, data=payload) headers = None
if not is_pre740:
headers = {'Content-type': 'application/json'}
response, info = fetch_url(module, rocketchat_incoming_webhook, data=payload, headers=headers)
if info['status'] != 200: if info['status'] != 200:
module.fail_json(msg="failed to send message, return status=%s" % str(info['status'])) module.fail_json(msg="failed to send message, return status=%s" % str(info['status']))
@@ -248,7 +251,7 @@ def main():
is_pre740 = module.params['is_pre740'] is_pre740 = module.params['is_pre740']
payload = build_payload_for_rocketchat(module, text, channel, username, icon_url, icon_emoji, link_names, color, attachments, is_pre740) payload = build_payload_for_rocketchat(module, text, channel, username, icon_url, icon_emoji, link_names, color, attachments, is_pre740)
do_notify_rocketchat(module, domain, token, protocol, payload) do_notify_rocketchat(module, domain, token, protocol, payload, is_pre740)
module.exit_json(msg="OK") module.exit_json(msg="OK")

View File

@@ -47,7 +47,7 @@ options:
aliases: [rtc] aliases: [rtc]
choices: [local, UTC] choices: [local, UTC]
notes: notes:
- On Ubuntu 24.04 the C(util-linux-extra) package is required to provide the C(hwclock) command. - On Ubuntu 24.04 and Debian 13 (Trixie), the C(util-linux-extra) package is required to provide the C(hwclock) command.
- On SmartOS the C(sm-set-timezone) utility (part of the smtools package) is required to set the zone timezone. - On SmartOS the C(sm-set-timezone) utility (part of the smtools package) is required to set the zone timezone.
- On AIX only Olson/tz database timezones are usable (POSIX is not supported). An OS reboot is also required on AIX for - On AIX only Olson/tz database timezones are usable (POSIX is not supported). An OS reboot is also required on AIX for
the new timezone setting to take effect. Note that AIX 6.1+ is needed (OS level 61 or newer). the new timezone setting to take effect. Note that AIX 6.1+ is needed (OS level 61 or newer).

View File

@@ -9,7 +9,6 @@ __metaclass__ = type
import re import re
from ansible.errors import AnsibleFilterError from ansible.errors import AnsibleFilterError
from ansible.module_utils.six import string_types
from collections.abc import Mapping, Sequence from collections.abc import Mapping, Sequence
@@ -32,7 +31,7 @@ def _keys_filter_params(data, matching_parameter):
raise AnsibleFilterError(msg % (elem, type(elem))) raise AnsibleFilterError(msg % (elem, type(elem)))
for elem in data: for elem in data:
if not all(isinstance(item, string_types) for item in elem.keys()): if not all(isinstance(item, str) for item in elem.keys()):
msg = "Top level keys must be strings. keys: %s" msg = "Top level keys must be strings. keys: %s"
raise AnsibleFilterError(msg % elem.keys()) raise AnsibleFilterError(msg % elem.keys())
@@ -65,12 +64,12 @@ def _keys_filter_target_str(target, matching_parameter):
if isinstance(target, list): if isinstance(target, list):
for elem in target: for elem in target:
if not isinstance(elem, string_types): if not isinstance(elem, str):
msg = "The target items must be strings. %s is %s" msg = "The target items must be strings. %s is %s"
raise AnsibleFilterError(msg % (elem, type(elem))) raise AnsibleFilterError(msg % (elem, type(elem)))
if matching_parameter == 'regex': if matching_parameter == 'regex':
if isinstance(target, string_types): if isinstance(target, str):
r = target r = target
else: else:
if len(target) > 1: if len(target) > 1:
@@ -83,7 +82,7 @@ def _keys_filter_target_str(target, matching_parameter):
except re.error: except re.error:
msg = "The target must be a valid regex if matching_parameter=regex. target is %s" msg = "The target must be a valid regex if matching_parameter=regex. target is %s"
raise AnsibleFilterError(msg % r) raise AnsibleFilterError(msg % r)
elif isinstance(target, string_types): elif isinstance(target, str):
tt = (target, ) tt = (target, )
else: else:
tt = tuple(set(target)) tt = tuple(set(target))
@@ -117,10 +116,10 @@ def _keys_filter_target_dict(target, matching_parameter):
if not all(k in elem for k in ('before', 'after')): if not all(k in elem for k in ('before', 'after')):
msg = "All dictionaries in target must include attributes: after, before." msg = "All dictionaries in target must include attributes: after, before."
raise AnsibleFilterError(msg) raise AnsibleFilterError(msg)
if not isinstance(elem['before'], string_types): if not isinstance(elem['before'], str):
msg = "The attributes before must be strings. %s is %s" msg = "The attributes before must be strings. %s is %s"
raise AnsibleFilterError(msg % (elem['before'], type(elem['before']))) raise AnsibleFilterError(msg % (elem['before'], type(elem['before'])))
if not isinstance(elem['after'], string_types): if not isinstance(elem['after'], str):
msg = "The attributes after must be strings. %s is %s" msg = "The attributes after must be strings. %s is %s"
raise AnsibleFilterError(msg % (elem['after'], type(elem['after']))) raise AnsibleFilterError(msg % (elem['after'], type(elem['after'])))

View File

@@ -7,7 +7,6 @@ __metaclass__ = type
import re import re
from ansible.module_utils.six import binary_type, text_type
from collections.abc import Mapping, Set from collections.abc import Mapping, Set
from ansible.module_utils.common.collections import is_sequence from ansible.module_utils.common.collections import is_sequence
from ansible.utils.unsafe_proxy import ( from ansible.utils.unsafe_proxy import (
@@ -29,11 +28,11 @@ def make_unsafe(value):
return set(make_unsafe(elt) for elt in value) return set(make_unsafe(elt) for elt in value)
elif is_sequence(value): elif is_sequence(value):
return type(value)(make_unsafe(elt) for elt in value) return type(value)(make_unsafe(elt) for elt in value)
elif isinstance(value, binary_type): elif isinstance(value, bytes):
if _RE_TEMPLATE_CHARS_BYTES.search(value): if _RE_TEMPLATE_CHARS_BYTES.search(value):
value = _make_unsafe(value) value = _make_unsafe(value)
return value return value
elif isinstance(value, text_type): elif isinstance(value, str):
if _RE_TEMPLATE_CHARS.search(value): if _RE_TEMPLATE_CHARS.search(value):
value = _make_unsafe(value) value = _make_unsafe(value)
return value return value

View File

@@ -223,8 +223,9 @@ _value:
type: bool type: bool
''' '''
from collections.abc import Sequence
from ansible.errors import AnsibleFilterError from ansible.errors import AnsibleFilterError
from ansible.module_utils.six.moves.collections_abc import Sequence
from ansible_collections.community.general.plugins.plugin_utils.ansible_type import _ansible_type from ansible_collections.community.general.plugins.plugin_utils.ansible_type import _ansible_type

View File

@@ -5,16 +5,6 @@
from __future__ import (absolute_import, division, print_function) from __future__ import (absolute_import, division, print_function)
__metaclass__ = type __metaclass__ = type
from ansible.errors import AnsibleError
from ansible.module_utils.six import raise_from
try:
from fqdn import FQDN
except ImportError as imp_exc:
ANOTHER_LIBRARY_IMPORT_ERROR = imp_exc
else:
ANOTHER_LIBRARY_IMPORT_ERROR = None
DOCUMENTATION = ''' DOCUMENTATION = '''
name: fqdn_valid name: fqdn_valid
@@ -74,6 +64,15 @@ _value:
type: bool type: bool
''' '''
from ansible.errors import AnsibleError
try:
from fqdn import FQDN
except ImportError as imp_exc:
ANOTHER_LIBRARY_IMPORT_ERROR = imp_exc
else:
ANOTHER_LIBRARY_IMPORT_ERROR = None
def fqdn_valid(name, min_labels=1, allow_underscores=False): def fqdn_valid(name, min_labels=1, allow_underscores=False):
""" """
@@ -83,10 +82,7 @@ def fqdn_valid(name, min_labels=1, allow_underscores=False):
""" """
if ANOTHER_LIBRARY_IMPORT_ERROR: if ANOTHER_LIBRARY_IMPORT_ERROR:
raise_from( raise AnsibleError('Python package fqdn must be installed to use this test.') from ANOTHER_LIBRARY_IMPORT_ERROR
AnsibleError('Python package fqdn must be installed to use this test.'),
ANOTHER_LIBRARY_IMPORT_ERROR
)
fobj = FQDN(name, min_labels=min_labels, allow_underscores=allow_underscores) fobj = FQDN(name, min_labels=min_labels, allow_underscores=allow_underscores)
return (fobj.is_valid) return (fobj.is_valid)

View File

@@ -8,35 +8,35 @@
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) # GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
- name: Install build-tools;34.0.0 - name: Install skiaparser;1
android_sdk: android_sdk:
accept_licenses: true accept_licenses: true
name: build-tools;34.0.0 name: skiaparser;1
state: present state: present
register: build_tools_installed register: skiaparser_1_installed
- name: Install build-tools;34.0.0 second time - name: Install skiaparser;1 second time
android_sdk: android_sdk:
name: build-tools;34.0.0 name: skiaparser;1
state: present state: present
register: build_tools_installed2 register: skiaparser_1_installed_2
- name: Stat build-tools - name: Stat skiaparser;1
stat: stat:
path: "{{ android_sdk_location }}/build-tools/34.0.0" path: "{{ android_sdk_location }}/skiaparser/1"
register: build_tools_34_0_0 register: skiaparser_1_stat
- name: Delete build-tools;34.0.0 - name: Delete skiaparser;1
android_sdk: android_sdk:
name: build-tools;34.0.0 name: skiaparser;1
state: absent state: absent
register: build_tools_deleted register: skiaparser_1_deleted
- name: Delete build-tools;34.0.0 second time - name: Delete skiaparser;1 second time
android_sdk: android_sdk:
name: build-tools;34.0.0 name: skiaparser;1
state: absent state: absent
register: build_tools_deleted2 register: skiaparser_1_deleted_2
- name: Download old platform-tools - name: Download old platform-tools
unarchive: unarchive:
@@ -59,7 +59,7 @@
- name: Install a package to a new root - name: Install a package to a new root
android_sdk: android_sdk:
name: build-tools;34.0.0 name: skiaparser;1
accept_licenses: true accept_licenses: true
state: present state: present
sdk_root: "{{ remote_tmp_dir }}" sdk_root: "{{ remote_tmp_dir }}"
@@ -67,12 +67,12 @@
- name: Check package is installed - name: Check package is installed
stat: stat:
path: "{{ remote_tmp_dir }}/build-tools/34.0.0" path: "{{ remote_tmp_dir }}/skiaparser/1"
register: new_root_package_stat register: new_root_package_stat
- name: Install a package from canary channel - name: Install a package from canary channel
android_sdk: android_sdk:
name: build-tools;33.0.0 name: skiaparser;1
state: present state: present
channel: canary channel: canary
register: package_canary register: package_canary
@@ -80,11 +80,11 @@
- name: Run tests - name: Run tests
assert: assert:
that: that:
- build_tools_34_0_0.stat.exists - skiaparser_1_stat.stat.exists
- build_tools_installed is changed - skiaparser_1_installed is changed
- build_tools_installed2 is not changed - skiaparser_1_installed_2 is not changed
- build_tools_deleted is changed - skiaparser_1_deleted is changed
- build_tools_deleted2 is not changed - skiaparser_1_deleted_2 is not changed
- platform_tools_present is not changed - platform_tools_present is not changed
- platform_tools_updated is changed - platform_tools_updated is changed
- new_root_package is changed - new_root_package is changed

View File

@@ -5,8 +5,6 @@
from __future__ import (absolute_import, division, print_function) from __future__ import (absolute_import, division, print_function)
__metaclass__ = type __metaclass__ = type
from ansible.module_utils.six import string_types
def callback_results_extractor(outputs_results): def callback_results_extractor(outputs_results):
results = [] results = []
@@ -18,7 +16,7 @@ def callback_results_extractor(outputs_results):
line = "line_%s" % (i + 1) line = "line_%s" % (i + 1)
test_line = stdout_lines[i] if i < len(stdout_lines) else None test_line = stdout_lines[i] if i < len(stdout_lines) else None
expected_lines = expected_output[i] if i < len(expected_output) else None expected_lines = expected_output[i] if i < len(expected_output) else None
if not isinstance(expected_lines, string_types) and expected_lines is not None: if not isinstance(expected_lines, str) and expected_lines is not None:
if test_line not in expected_lines: if test_line not in expected_lines:
differences.append({ differences.append({
'line': { 'line': {

View File

@@ -13,7 +13,7 @@ Source Ansible env-setup from ansible github repository
Run integration tests: Run integration tests:
ansible-test integration keycloak_role --python 3.10 --allow-unsupported ansible-test integration -v keycloak_role --allow-unsupported --docker fedora35 --docker-network host
Cleanup: Cleanup:

View File

@@ -3,6 +3,15 @@
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) # GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
- name: Delete realm if exists
community.general.keycloak_realm:
auth_keycloak_url: "{{ url }}"
auth_realm: "{{ admin_realm }}"
auth_username: "{{ admin_user }}"
auth_password: "{{ admin_password }}"
realm: "{{ realm }}"
state: absent
- name: Create realm - name: Create realm
community.general.keycloak_realm: community.general.keycloak_realm:
auth_keycloak_url: "{{ url }}" auth_keycloak_url: "{{ url }}"
@@ -297,6 +306,29 @@
- result is not changed - result is not changed
- result.end_state.composites | length == 3 - result.end_state.composites | length == 3
- name: Change realm role with composites using aliases no change
community.general.keycloak_role:
auth_keycloak_url: "{{ url }}"
auth_realm: "{{ admin_realm }}"
auth_username: "{{ admin_user }}"
auth_password: "{{ admin_password }}"
name: "{{ keycloak_role_name }}"
realm: "{{ realm }}"
description: "{{ keycloak_role_description }}"
composite: "{{ keycloak_role_composite }}"
composites: "{{ keycloak_role_composites_with_aliases }}"
state: present
register: result
- name: Debug
debug:
var: result
- name: Assert realm role with composites using aliases have not changed
assert:
that:
- result is not changed
- name: Remove composite from realm role with composites - name: Remove composite from realm role with composites
community.general.keycloak_role: community.general.keycloak_role:
auth_keycloak_url: "{{ url }}" auth_keycloak_url: "{{ url }}"

View File

@@ -25,6 +25,15 @@ keycloak_role_composites:
state: present state: present
- name: offline_access - name: offline_access
state: present state: present
keycloak_role_composites_with_aliases:
- name: view-clients
clientId: "realm-management"
state: present
- name: query-clients
clientId: "realm-management"
state: present
- name: offline_access
state: present
keycloak_client_id: test-client keycloak_client_id: test-client
keycloak_client_name: test-client keycloak_client_name: test-client
keycloak_client_description: This is a client for testing purpose keycloak_client_description: This is a client for testing purpose

View File

@@ -120,24 +120,12 @@
state: reinstall state: reinstall
register: reinstall_tox_324 register: reinstall_tox_324
- name: reinstall without name
community.general.pipx:
state: reinstall
register: reinstall_noname
ignore_errors: true
- name: upgrade tox from 3.24.0 - name: upgrade tox from 3.24.0
community.general.pipx: community.general.pipx:
name: tox name: tox
state: upgrade state: upgrade
register: upgrade_tox_324 register: upgrade_tox_324
- name: upgrade without name
community.general.pipx:
state: upgrade
register: upgrade_noname
ignore_errors: true
- name: downgrade tox 3.24.0 - name: downgrade tox 3.24.0
community.general.pipx: community.general.pipx:
name: tox name: tox
@@ -165,8 +153,6 @@
- downgrade_tox_324.application.tox.version == '3.24.0' - downgrade_tox_324.application.tox.version == '3.24.0'
- uninstall_tox_324 is changed - uninstall_tox_324 is changed
- "'tox' not in uninstall_tox_324.application" - "'tox' not in uninstall_tox_324.application"
- upgrade_noname is failed
- reinstall_noname is failed
############################################################################## ##############################################################################
- name: install application latest tox - name: install application latest tox

View File

@@ -3,25 +3,25 @@
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) # GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
- name: ensure application pyinstaller is uninstalled - name: ensure application conan is uninstalled
community.general.pipx: community.general.pipx:
name: pyinstaller name: conan
state: absent state: absent
- name: Install Python Package pyinstaller - name: Install conan
community.general.pipx: community.general.pipx:
name: pyinstaller name: conan
state: present state: present
system_site_packages: true system_site_packages: true
pip_args: "--no-cache-dir" pip_args: "--no-cache-dir"
register: install_pyinstaller register: install_conan
- name: cleanup pyinstaller - name: cleanup conan
community.general.pipx: community.general.pipx:
name: pyinstaller name: conan
state: absent state: absent
- name: check assertions - name: check assertions
assert: assert:
that: that:
- install_pyinstaller is changed - install_conan is changed

View File

@@ -54,11 +54,7 @@
- name: Uninstall pycowsay and black (again) - name: Uninstall pycowsay and black (again)
community.general.pipx: community.general.pipx:
state: uninstall state: uninstall
name: "{{ item }}" name: pycowsay
loop:
- black
- pycowsay
register: uninstall_all_2
- name: Assert pin/unpin - name: Assert pin/unpin
ansible.builtin.assert: ansible.builtin.assert:

View File

@@ -7,7 +7,7 @@
environment: environment:
PATH: /usr/local/bin:{{ ansible_env.PATH }} PATH: /usr/local/bin:{{ ansible_env.PATH }}
block: block:
- name: Uninstall pycowsay and black - name: Uninstall pycowsay
community.general.pipx: community.general.pipx:
state: uninstall state: uninstall
name: pycowsay name: pycowsay
@@ -54,11 +54,7 @@
- name: Uninstall pycowsay and black (again) - name: Uninstall pycowsay and black (again)
community.general.pipx: community.general.pipx:
state: uninstall state: uninstall
name: "{{ item }}" name: pycowsay
loop:
- black
- pycowsay
register: uninstall_all_2
- name: Assert uninstall-all - name: Assert uninstall-all
ansible.builtin.assert: ansible.builtin.assert:

View File

@@ -3,28 +3,28 @@
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) # GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
- name: 9009-Ensure application pylint is uninstalled - name: 9009-Ensure application pycowsay is uninstalled
community.general.pipx: community.general.pipx:
name: pylint name: pycowsay
state: absent state: absent
global: true global: true
- name: 9009-Install application pylint - name: 9009-Install application pycowsay
community.general.pipx: community.general.pipx:
name: pylint name: pycowsay
global: true global: true
register: install_pylint register: install_pycowsay
- name: 9009-Inject packages - name: 9009-Inject packages
community.general.pipx: community.general.pipx:
state: inject state: inject
name: pylint name: pycowsay
global: true global: true
inject_packages: inject_packages:
- licenses - licenses
- name: 9009-Ensure application pylint is uninstalled - name: 9009-Ensure application pycowsay is uninstalled
community.general.pipx: community.general.pipx:
name: pylint name: pycowsay
state: absent state: absent
global: true global: true

View File

@@ -23,9 +23,9 @@
global: true global: true
register: upgrade_hw register: upgrade_hw
- name: 9103-Ensure application pylint is uninstalled - name: 9103-Ensure application hello-world is uninstalled
community.general.pipx: community.general.pipx:
name: pylint name: hello-world
state: absent state: absent
global: true global: true

View File

@@ -23,9 +23,9 @@
global: true global: true
register: latest_hw register: latest_hw
- name: 9619-Ensure application pylint is uninstalled - name: 9619-Ensure application hello-world is uninstalled
community.general.pipx: community.general.pipx:
name: pylint name: hello-world
state: absent state: absent
global: true global: true

View File

@@ -74,22 +74,9 @@
- ansible_distribution == 'Ubuntu' - ansible_distribution == 'Ubuntu'
- ansible_facts.distribution_major_version is version('24', '>=') - ansible_facts.distribution_major_version is version('24', '>=')
- name: make sure the dbus service is started under systemd
systemd:
name: dbus
state: started
when:
- ansible_service_mgr == 'systemd'
- ansible_distribution == 'Fedora'
- ansible_facts.distribution_major_version is version('31', '<')
- name: Run tests - name: Run tests
# Skip tests on Fedora 31 and 32 because dbus fails to start unless the container is run in privileged mode.
# Even then, it starts unreliably. This may be due to the move to cgroup v2 in Fedora 31 and 32.
# https://www.redhat.com/sysadmin/fedora-31-control-group-v2
when: when:
- ansible_facts.distribution ~ ansible_facts.distribution_major_version not in ['Fedora31', 'Fedora32']
- not (ansible_os_family == 'Alpine') # TODO - not (ansible_os_family == 'Alpine') # TODO
- not (ansible_distribution == 'Archlinux') # TODO - not (ansible_distribution == 'Archlinux') # TODO
block: block:

View File

@@ -1,20 +1,3 @@
plugins/cache/pickle.py pylint:ansible-bad-import-from
plugins/callback/dense.py pylint:ansible-bad-import-from
plugins/callback/elastic.py pylint:ansible-bad-import-from
plugins/callback/opentelemetry.py pylint:ansible-bad-import-from
plugins/filter/from_ini.py pylint:ansible-bad-import-from
plugins/filter/lists_mergeby.py pylint:ansible-bad-import-from
plugins/filter/random_mac.py pylint:ansible-bad-import-from
plugins/filter/to_prettytable.py pylint:ansible-bad-import-from
plugins/filter/unicode_normalize.py pylint:ansible-bad-import-from
plugins/inventory/cobbler.py pylint:ansible-bad-import-from
plugins/inventory/lxd.py pylint:ansible-bad-import-from
plugins/inventory/proxmox.py pylint:ansible-bad-import-from
plugins/inventory/scaleway.py pylint:ansible-bad-import-from
plugins/lookup/dependent.py pylint:ansible-bad-import-from
plugins/lookup/flattened.py pylint:ansible-bad-import-from
plugins/lookup/onepassword.py pylint:ansible-bad-import-from
plugins/lookup/revbitspss.py pylint:ansible-bad-import-from
plugins/module_utils/csv.py pylint:ansible-bad-import-from plugins/module_utils/csv.py pylint:ansible-bad-import-from
plugins/module_utils/gitlab.py pylint:ansible-bad-import-from plugins/module_utils/gitlab.py pylint:ansible-bad-import-from
plugins/module_utils/homebrew.py pylint:ansible-bad-import-from plugins/module_utils/homebrew.py pylint:ansible-bad-import-from
@@ -57,10 +40,6 @@ plugins/modules/xfconf.py validate-modules:return-syntax-error
plugins/modules/xml.py pylint:ansible-bad-import-from plugins/modules/xml.py pylint:ansible-bad-import-from
plugins/modules/zpool_facts.py pylint:ansible-bad-import-from plugins/modules/zpool_facts.py pylint:ansible-bad-import-from
plugins/modules/zypper_repository.py pylint:ansible-bad-import-from plugins/modules/zypper_repository.py pylint:ansible-bad-import-from
plugins/plugin_utils/keys_filter.py pylint:ansible-bad-import-from
plugins/plugin_utils/unsafe.py pylint:ansible-bad-import-from
plugins/test/fqdn_valid.py pylint:ansible-bad-import-from
tests/integration/targets/callback/filter_plugins/helper.py pylint:ansible-bad-import-from
tests/unit/plugins/module_utils/identity/keycloak/test_keycloak_connect.py pylint:ansible-bad-import-from tests/unit/plugins/module_utils/identity/keycloak/test_keycloak_connect.py pylint:ansible-bad-import-from
tests/unit/plugins/module_utils/net_tools/pritunl/test_api.py pylint:ansible-bad-import-from tests/unit/plugins/module_utils/net_tools/pritunl/test_api.py pylint:ansible-bad-import-from
tests/unit/plugins/modules/conftest.py pylint:ansible-bad-import-from tests/unit/plugins/modules/conftest.py pylint:ansible-bad-import-from

View File

@@ -9,12 +9,12 @@ from ansible_collections.community.internal_test_tools.tests.unit.compat import
from ansible_collections.community.internal_test_tools.tests.unit.compat.mock import patch, call from ansible_collections.community.internal_test_tools.tests.unit.compat.mock import patch, call
from ansible.errors import AnsibleError from ansible.errors import AnsibleError
from ansible.module_utils.urls import ConnectionError, SSLValidationError from ansible.module_utils.urls import ConnectionError, SSLValidationError
from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
from ansible.module_utils import six from ansible.module_utils import six
from ansible.plugins.loader import lookup_loader from ansible.plugins.loader import lookup_loader
from ansible_collections.community.general.plugins.lookup.manifold import ManifoldApiClient, ApiError from ansible_collections.community.general.plugins.lookup.manifold import ManifoldApiClient, ApiError
import json import json
import os import os
from urllib.error import HTTPError, URLError
API_FIXTURES = { API_FIXTURES = {