mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-07 05:42:50 +00:00
Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3653dff68c | ||
|
|
171a028ef8 | ||
|
|
4ab8f79eae | ||
|
|
871e2809ed | ||
|
|
ebf5dd9007 | ||
|
|
054b369740 | ||
|
|
f9598c8586 | ||
|
|
0b116fa1dc | ||
|
|
01d0f3ccb7 | ||
|
|
7a8c3346ff | ||
|
|
f8acda70d2 | ||
|
|
2eedbdc928 | ||
|
|
c251868e55 | ||
|
|
e501974a9e |
129
CHANGELOG.md
129
CHANGELOG.md
@@ -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)\)\.
|
||||||
|
|||||||
@@ -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
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
|||||||
@@ -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]
|
||||||
|
|||||||
@@ -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'
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
4
plugins/cache/pickle.py
vendored
4
plugins/cache/pickle.py
vendored
@@ -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:
|
||||||
|
|||||||
7
plugins/cache/yaml.py
vendored
7
plugins/cache/yaml.py
vendored
@@ -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)
|
||||||
|
|||||||
@@ -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]
|
||||||
|
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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)))
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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'):
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|
||||||
|
|||||||
@@ -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__(
|
||||||
|
|||||||
@@ -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(
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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'] = []
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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'
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|
||||||
|
|||||||
@@ -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).
|
||||||
|
|||||||
@@ -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'])))
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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': {
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|
||||||
|
|||||||
@@ -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 }}"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 = {
|
||||||
|
|||||||
Reference in New Issue
Block a user