Compare commits

...

88 Commits

Author SHA1 Message Date
Felix Fontein
a1357411cb [stable-11] Replace default favicon URL again (#11909) (#11914) (#11916)
Replace default favicon URL again (#11909)

* replace default favicon URL

* add changelog fragment for PR 11909

* fix syntax for change fragment

* use higher res favicon by default

---------

(cherry picked from commit d57a667274)




(cherry picked from commit ac0c24637a)

Co-authored-by: Lars Krahl <57526005+mmslkr@users.noreply.github.com>
Co-authored-by: Lars Krahl <lars.krahl@telekom.de>
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2026-04-22 20:50:29 +02:00
patchback[bot]
671abf7d05 [PR #11898/6b5bf0a0 backport][stable-10] Fix FQCNs in examples (#11899)
Fix FQCNs in examples (#11898)

Fix FQCNs in examples.

(cherry picked from commit 6b5bf0a0bc)

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-04-20 15:16:53 +02:00
patchback[bot]
236460861a [PR #11862/342a76d5 backport][stable-10] Remove unstable CI target (#11868)
Remove unstable CI target (#11862)

Remove unstable CI target.

(cherry picked from commit 342a76d5dd)

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-04-17 18:31:28 +02:00
patchback[bot]
ebdbfe30fd [PR #11612/5e4fbfee backport][stable-10] Update BOTMETA.yml (#11614)
Update BOTMETA.yml (#11612)

remove myself from teams

(cherry picked from commit 5e4fbfeee0)

Co-authored-by: Anatoly Pugachev <matorola@gmail.com>
2026-03-18 07:05:04 +01:00
patchback[bot]
82e771cd25 [PR #11546/b2476039 backport][stable-10] [stable-11] Update tests to pass on macOS arm64 (#11544) (#11595)
[stable-11] Update tests to pass on macOS arm64 (#11544) (#11546)

Update tests to pass on macOS arm64 (#11544)

(cherry picked from commit 9b9d8eac09)


(cherry picked from commit b247603961)

Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Matt Clay <matt@mystile.com>
2026-03-14 23:49:34 +01:00
patchback[bot]
09037c0e0f [PR #11541/4cd91ba4 backport][stable-10] Fix templating bug in iptables_state tests (#11570)
Fix templating bug in iptables_state tests (#11541)

* Fix templating bug in iptables_state tests.

* Try to install older packages on RHEL.

(cherry picked from commit 4cd91ba4d4)

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-03-11 22:15:46 +01:00
Felix Fontein
2dd395bd12 The next release will be 10.7.9. 2026-02-23 18:14:11 +01:00
Felix Fontein
042c05cf26 Release 10.7.8. 2026-02-23 17:48:14 +01:00
Felix Fontein
c158c2cc95 Prepare 10.7.8. 2026-02-22 16:40:53 +01:00
patchback[bot]
4b4479844b [PR #11497/d9e48f04 backport][stable-10] [stable-11] python_requirements_info: use importlib.metadata when available (#11495) (#11498)
[stable-11] python_requirements_info: use importlib.metadata when available (#11495) (#11497)

python_requirements_info: use importlib.metadata when available (#11495)

Use importlib.metadata when available.

(cherry picked from commit 88adca3fb4)
(cherry picked from commit d9e48f0488)

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-02-11 07:27:45 +01:00
patchback[bot]
bba060ef71 [PR #11484/63ddca7f backport][stable-10] supervisorctl: remove unstable tag from integration tests (#11493)
supervisorctl: remove unstable tag from integration tests (#11484)

(cherry picked from commit 63ddca7f21)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2026-02-10 21:51:12 +01:00
Felix Fontein
aaec9ae7ba Make sure stable-12 CI runs in cron.
(cherry picked from commit 28b16eab66)
2026-01-11 00:43:24 +01:00
patchback[bot]
340cb0d231 [PR #11417/a689bb8e backport][stable-10] CI: Arch Linux switched to Python 3.14 (#11418)
CI: Arch Linux switched to Python 3.14 (#11417)

Arch Linux switched to Python 3.14.

(cherry picked from commit a689bb8e8d)

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-01-11 00:36:33 +01:00
Felix Fontein
1e488d995a [stable-10] CI: Replace RHEL 10.0 with 10.1 (#11403)
Replace RHEL 10.0 with 10.1.
2026-01-08 09:41:35 +01:00
patchback[bot]
0a661a6506 [PR #11387/d4089ca2 backport][stable-10] Update RHEL 9.x to 9.7 in CI (#11393)
Update RHEL 9.x to 9.7 in CI (#11387)

* Update RHEL 9.x to 9.7 in CI.

* Add skips.

(cherry picked from commit d4089ca29a)

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-01-06 18:26:51 +01:00
patchback[bot]
f53804f542 [PR #11357/ddf05104 backport][stable-10] Add missing integration test aliases files (#11370)
Add missing integration test aliases files (#11357)

* Add missing aliases files.

* Fix directory name.

* Add another missing aliases file.

* Adjust test to also work with newer jsonpatch versions.

(cherry picked from commit ddf05104f3)

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-01-02 15:02:58 +01:00
Felix Fontein
e09afd224b The next release will be 10.7.8. 2025-12-29 15:14:39 +01:00
Felix Fontein
d311049808 Release 10.7.7. 2025-12-29 14:46:59 +01:00
Felix Fontein
89ca1a7eae Prepare 10.7.7. 2025-12-23 21:40:15 +01:00
patchback[bot]
02a5b75cc3 [PR #11316/3debc968 backport][stable-10] Fixing documentation for scaleway_private_network module. (#11317)
Fixing documentation for scaleway_private_network module. (#11316)

(cherry picked from commit 3debc968a4)

Co-authored-by: Greg Harvey <greg.harvey@gmail.com>
2025-12-23 14:19:54 +01:00
patchback[bot]
2c8d75917f [PR #11295/a5aec7d6 backport][stable-10] Fix typo in auth_username in examples (#11299)
Fix typo in auth_username in examples (#11295)

(cherry picked from commit a5aec7d61a)

Co-authored-by: Ivan Kokalovic <67540157+koke1997@users.noreply.github.com>
2025-12-19 21:10:07 +01:00
patchback[bot]
435d593e23 [PR #11284/df349459 backport][stable-10] keycloak_authentication_required_actions: fix examples (#11286)
keycloak_authentication_required_actions: fix examples (#11284)

The correct parameter name is "required_actions" (plural).

(cherry picked from commit df34945991)

Co-authored-by: Samuli Seppänen <samuli.seppanen@puppeteers.net>
2025-12-15 19:25:01 +01:00
patchback[bot]
5e5ae243b1 [PR #11276/a96a5c44 backport][stable-10] sysrc tests: skip FreeBSD 14.2 for ezjail tests (#11278)
sysrc tests: skip FreeBSD 14.2 for ezjail tests (#11276)

Looks like 14.2 no longer works.

(cherry picked from commit a96a5c44a5)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-12-14 12:05:59 +01:00
patchback[bot]
f5b3f7da24 [PR #11273/b2f16f18 backport][stable-10] test(integration): monit: backport of PR 11255 (#11274)
test(integration): monit: backport of PR 11255 (#11273)

* test(integration): monit: backport of PR 11255

* add changelog frag

(cherry picked from commit b2f16f184a)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-12-12 07:42:19 +01:00
patchback[bot]
06c24f1f6a [PR #11216/6b4100d7 backport][stable-10] CONTRIBUTING.md: fixes/improvements (#11219)
CONTRIBUTING.md: fixes/improvements (#11216)

* CONTRIBUTING.md: fixes/improvements

* Update CONTRIBUTING.md



---------


(cherry picked from commit 6b4100d70f)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-11-25 22:10:38 +01:00
Felix Fontein
49a51c127e [stable-10] Bump actions/checkout from 5 to 6 in the ci group (#11200) (#11203)
Bump actions/checkout from 5 to 6 in the ci group (#11200)

Bumps the ci group with 1 update: [actions/checkout](https://github.com/actions/checkout).

Updates `actions/checkout` from 5 to 6
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: ci
...



(cherry picked from commit a803156277)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-24 18:44:03 +01:00
patchback[bot]
8b2d61b436 [PR #11185/4517b86e backport][stable-10] snmp_facts: update docs with dependency constraint (#11186)
snmp_facts: update docs with dependency constraint (#11185)

(cherry picked from commit 4517b86ed4)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-11-22 22:44:07 +01:00
Felix Fontein
e7b3808bac [stable-10] docs: migrate RTD URLs to docs.ansible.com (#11109) (#11177)
docs: migrate RTD URLs to docs.ansible.com (#11109)

* docs: update readthedocs.io URLs to docs.ansible.com equivalents

🤖 Generated with Claude Code
https://claude.ai/code



* Adjust favicon URL.



---------




(cherry picked from commit d98df2d3a5)

Co-authored-by: John Barker <john@johnrbarker.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Don Naro <dnaro@redhat.com>
2025-11-19 18:22:34 +01:00
patchback[bot]
f6be766263 [PR #11123/1a82e93c backport][stable-10] Re-enable Copr integration tests (#11124)
Re-enable Copr integration tests (#11123)

Fixes: https://github.com/ansible-collections/community.general/issues/10987
(cherry picked from commit 1a82e93c6d)

Co-authored-by: Maxwell G <maxwell@gtmx.me>
2025-11-12 19:46:14 +01:00
Felix Fontein
a8ec62e620 [stable-10] Move ansible-core 2.17 to EOL CI (#11128)
Move ansible-core 2.17 to EOL CI.
2025-11-12 19:46:02 +01:00
patchback[bot]
4f49435e8a [PR #11089/c26a4e61 backport][stable-10] consul_kv: adjust RV in docs (#11090)
consul_kv: adjust RV in docs (#11089)

(cherry picked from commit c26a4e613b)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-11-11 06:09:11 +01:00
patchback[bot]
95978430f5 [PR #11083/943c0214 backport][stable-10] [stable-11] Migrate 1 RTD URLs to docs.ansible.com (#11081) (#11085)
[stable-11] Migrate 1 RTD URLs to docs.ansible.com (#11081) (#11083)

Migrate 1 RTD URLs to docs.ansible.com (#11081)

Migrate RTD URLs to docs.ansible.com

Updated 1 ansible.readthedocs.io URLs to docs.ansible.com equivalents
as part of the Read the Docs migration.

🤖 Generated with Claude Code
https://claude.ai/code

(cherry picked from commit e8bdf46627)



(cherry picked from commit 943c021446)

Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: John Barker <john@johnrbarker.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-10 21:12:57 +01:00
patchback[bot]
cc7e0083b8 [PR #11057/0d8521c7 backport][stable-10] supervisorctl: investigate integration tests (#11063)
supervisorctl: investigate integration tests (#11057)

* supervisorctl: investigate integration tests

* wait for supervisord to complete stop

* adjust in module

(cherry picked from commit 0d8521c718)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-11-09 09:52:45 +01:00
Felix Fontein
f55c9b77fc Adjust CI schedules: remove stable-9, move stable-10 to weekly.
(cherry picked from commit 09d8b2bb77)
2025-11-02 14:04:46 +01:00
Felix Fontein
3fc582a380 The next release will be 10.7.7. 2025-11-02 14:03:43 +01:00
Felix Fontein
7f63f47efc Release 10.7.6. 2025-11-02 13:02:24 +01:00
patchback[bot]
be65a9f345 [PR #11001/eb6337c0 backport][stable-10] omapi_host: fix bytes vs. str confusion (#11021)
omapi_host: fix bytes vs. str confusion (#11001)

* omapi_host: fix bytes vs. str confusion

After an update of the control node from Debian
bookworm to trixie, the omapi_host module fails to
work with the error message:

Key of type 'bytes' is not JSON serializable by the
'module_legacy_m2c' profile.

https://github.com/ansible/ansible/issues/85937 had the
same error, but the fix is a bit more intricate here
because the result dict is dynamically generated from
an API response object.

This also fixes unpacking the MAC and IP address and
hardware type, which were broken for Python3.

* Merge suggestion for changelog fragment



* do not unpack_ip twice

Noticed by Felix Fontein <felix@fontein.de>

* mention py3k in changelog fragment, too

---------


(cherry picked from commit eb6337c0c9)

Co-authored-by: mirabilos <tg@mirbsd.org>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-10-30 20:27:54 +01:00
patchback[bot]
044831904c [PR #11005/54af64ad backport][stable-10] keycloak_user: mark credentials[].value as no_log=True (#11011)
keycloak_user: mark credentials[].value as no_log=True (#11005)

Mark credentials[].value as no_log=True.

(cherry picked from commit 54af64ad36)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-10-29 17:15:33 +00:00
patchback[bot]
0ed510a050 [PR #10955/e84f59a6 backport][stable-10] fix(pritunl_user): improve resilience to null or missing user parameters (#11013)
fix(pritunl_user): improve resilience to null or missing user parameters (#10955)

* fix(pritunl_user): improve resilience to null or missing user parameters

* added changelog fragment - 10955

* standardize 10955 changelog fragment content



* simplify user params comparison



* simplify list fetch



* simplify remote value retrieval



---------



(cherry picked from commit e84f59a62d)

Co-authored-by: David Jenkins <david.jenkins@twosixtech.com>
Co-authored-by: djenkins <djenkins@twosix.net>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-10-29 17:15:21 +00:00
patchback[bot]
103bde7764 [PR #10965/ce0d06b3 backport][stable-10] onepassword: extend CLI class initialization with additional parameters (#11006)
onepassword: extend CLI class initialization with additional parameters (#10965)

* onepassword: extend CLI class initialization with additional parameters

* add changelog fragment 10965-onepassword-bugfix.yml

* Update changelogs/fragments/10965-onepassword-bugfix.yml



---------


(cherry picked from commit ce0d06b306)

Co-authored-by: Matthew <mjmjelde@gmail.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-10-28 21:38:27 +01:00
patchback[bot]
b8f55cccdf [PR #11003/9cb619ff backport][stable-10] [stable-11] terraform: Fix bug when None values aren't processed correctly (#10961) (#11004)
[stable-11] terraform: Fix bug when None values aren't processed correctly (#10961) (#11003)

terraform: Fix bug when None values aren't processed correctly (#10961)

* terraform: Fix bug when None values aren't processed correctly

Just found that i can't pass null values as complex variables into terraform using this module, while i can do that with terraform itself. Fixed undesired behavior.

* chore: changelog fragment 10961-terraform-complexvars-null-bugfix.yaml

* Update changelogs/fragments/10961-terraform-complexvars-null-bugfix.yaml

* Update plugins/modules/terraform.py

* Update plugins/modules/terraform.py

* Fix condition to check for None type in terraform.py

---------

(cherry picked from commit af8c4fb95e)


(cherry picked from commit 9cb619ff6c)

Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: nbragin4 <139489942+nbragin4@users.noreply.github.com>
2025-10-28 21:23:35 +01:00
Felix Fontein
b5abccfe31 Prepare 10.7.6. 2025-10-27 19:40:44 +01:00
Felix Fontein
335f6606fe [stable-10] Move ansible-core 2.16 to EOL CI (#10995)
Remove ansible-core 2.16 to EOL CI.
2025-10-27 19:16:21 +01:00
patchback[bot]
5bdbbd1f4f [PR #10988/f6781f65 backport][stable-10] CI: temporarily disable tests for copr (#10990)
CI: temporarily disable tests for copr (#10988)

Temporarily disable tests for copr.

(cherry picked from commit f6781f654e)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-10-26 21:57:02 +01:00
patchback[bot]
3f67766bac [PR #10948/7572b46c backport][stable-10] filesystem: docs adjustments (#10951)
filesystem: docs adjustments (#10948)

(cherry picked from commit 7572b46c7b)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-10-21 06:45:32 +02:00
patchback[bot]
6848d6a302 [PR #10918/7e666a9c backport][stable-10] fix(modules/gitlab_runner): Fix exception in check mode on new runners (#10943)
fix(modules/gitlab_runner): Fix exception in check mode on new runners (#10918)

* fix(modules/gitlab_runner): Fix exception in check mode on new runners

When a new runner is added in check mode, the role used to throw an
exception. Fix this by returning a valid runner object instead of a
boolean.

Fixes #8854

* docs: Add changelog fragment

(cherry picked from commit 7e666a9c31)

Co-authored-by: carlfriedrich <carlfriedrich@posteo.de>
2025-10-19 09:31:21 +02:00
patchback[bot]
0f8dd60627 [PR #10926/9dedd774 backport][stable-10] Add __init__.py to work around ansible-test/pylint bug (#10927)
Add __init__.py to work around ansible-test/pylint bug (#10926)

Add __init__.py to work around ansible-test/pylint bug.

(cherry picked from commit 9dedd77459)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-10-15 21:55:29 +02:00
Felix Fontein
4190629e61 [stable-10] Replace devel with stable-2.20 (#10925)
Replace devel with stable-2.20.
2025-10-15 13:36:06 +02:00
patchback[bot]
38d719da07 [PR #10914/c5253c50 backport][stable-10] build(deps): bump github/codeql-action from 3 to 4 in the ci group (#10916)
build(deps): bump github/codeql-action from 3 to 4 in the ci group (#10914)

Bumps the ci group with 1 update: [github/codeql-action](https://github.com/github/codeql-action).

Updates `github/codeql-action` from 3 to 4
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: ci
...



(cherry picked from commit c5253c5007)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-13 09:57:46 +02:00
Felix Fontein
ea40a39a09 [stable-10] random_string: replace random.SystemRandom() with secrets.SystemRandom() (#10896)
random_string: replace random.SystemRandom() with secrets.SystemRandom() (#10893)

* random_string: replace random.SystemRandom() with secrets.SystemRandom()



* add the forgotten blank line



* Update changelogs/fragments/replace-random-with-secrets.yml



* readd the description



* Update changelogs/fragments/replace-random-with-secrets.yml



---------



(cherry picked from commit 14a858fd9c)

Signed-off-by: Thomas Sjögren <konstruktoid@users.noreply.github.com>
Co-authored-by: Thomas Sjögren <konstruktoid@users.noreply.github.com>
2025-10-10 19:55:47 +02:00
patchback[bot]
67562860e2 [PR #10887/68b83451 backport][stable-10] pacman: link to yay bug report (#10889)
pacman: link to yay bug report (#10887)

Link to yay bug report.

(cherry picked from commit 68b8345199)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-10-10 08:10:26 +02:00
Felix Fontein
0ece2053f8 The next release will be 10.7.6. 2025-10-06 18:56:05 +02:00
Felix Fontein
3653dff68c Release 10.7.5. 2025-10-06 18:20:18 +02:00
Felix Fontein
171a028ef8 [stable-10] Avoid six in plugin code (#10873) (#10877)
Avoid six in plugin code (#10873)

Avoid six in plugin code.

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

(cherry picked from commit 41b65161bd)

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

Make sure variable exists before use.

(cherry picked from commit 68684a7a4c)

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

Make compatible with ansible-core 2.19.

(cherry picked from commit 648ff7db02)

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

* fix bug in missing realm argument when searching for groups

* MR change fragment

* 39+1=40

(cherry picked from commit b865bf5751)

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

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

* Remove response variable from fail_json module

* Add a missing blank line to match pep8 requirement

* Add changelog fragment of issue #10796

* Rename fragment section

* Improve fragment readability



---------



(cherry picked from commit 0f23b9e391)

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

* Exclude aliases before comparison

* add test

* fragment

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



---------



(cherry picked from commit 7c40c6b6b5)

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

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

(cherry picked from commit 2bf8ae88be)

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

(cherry picked from commit 0911db457e)

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

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

(cherry picked from commit d2e2395ae3)

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

* Fedora 31 and 32 are EOL, remove conditions related


(cherry picked from commit a7e4cee47d)

Signed-off-by: Abhijeet Kasurde <Akasurde@redhat.com>
Co-authored-by: Abhijeet Kasurde <akasurde@redhat.com>
2025-09-12 06:41:17 +02:00
Felix Fontein
25a17e7b6e Release 10.7.4. 2025-09-08 18:57:25 +02:00
Felix Fontein
dc92cda736 Prepare 10.7.4. 2025-09-04 07:10:29 +02:00
patchback[bot]
ee895080fb [PR #10638/07ce0041 backport][stable-10] CI: Add Debian 13 Trixie (#10780)
CI: Add Debian 13 Trixie (#10638)

* Add Debian 13 Trixie to CI.

* Add adjustments.

* Disable one apache2_module test for Debian 13.

* Disable ejabberd_user test on Debian 13.

* Fix paramiko install.

* Skip cloud_init_data_facts on Debian 13.

* Fix postgresql setup.

* Fix timezone tests.

(cherry picked from commit 07ce00417d)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-31 16:49:56 +02:00
patchback[bot]
5436a0c602 [PR #10770/3cc4f28f backport][stable-10] minor fixes in doc guides (#10776)
minor fixes in doc guides (#10770)

(cherry picked from commit 3cc4f28fd7)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-08-31 12:10:44 +02:00
patchback[bot]
6b59a3c1f6 [PR #10752/f6003f61 backport][stable-10] selective: don't hard code ansible_loop_var 'item' (#10763)
selective: don't hard code ansible_loop_var 'item' (#10752)

* selective: don't hard code ansible_loop_var 'item'

* Add changelog fragment

* Update changelog message



---------


(cherry picked from commit f6003f61cc)

Co-authored-by: Hoang Nguyen <folliekazetani@protonmail.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-29 07:06:42 +02:00
patchback[bot]
02fa9106c6 [PR #10751/d6ad9beb backport][stable-10] kdeconfig: add support for kwriteconfig6 (#10761)
kdeconfig: add support for kwriteconfig6 (#10751)

* kdeconfig: add support for kwriteconfig6

Rationale:
With a minimal install of KDE Plasma 6, the kdeconfig module would systematically fail with the following error: `kwriteconfig is not installed.`
In this configuration, kwriteconfig6 is the only version of kwriteconfig installed, and the kdeconfig module did not not find it.

Fixes #10746

* Add changelog fragment

* Update changelogs/fragments/10751-kdeconfig-support-kwriteconfig6.yml



---------


(cherry picked from commit d6ad9beb58)

Co-authored-by: Thibault Geoffroy <33561374+nebularnoise@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-29 07:00:00 +02:00
patchback[bot]
94699318e2 [PR #10743/469e557b backport][stable-10] monit: handle arbitrary error status (#10759)
monit: handle arbitrary error status (#10743)

* handle arbitrary error status

* add changelog fragment

* mock module in test

* Update changelogs/fragments/10743-monit-handle-unknown-status.yml



---------


(cherry picked from commit 469e557b95)

Co-authored-by: Simon Kelly <skelly@dimagi.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-28 22:18:02 +02:00
patchback[bot]
0dab7c8f3b [PR #10755/9d0866bf backport][stable-10] Add ignores necessary for ansible-core 2.20 (#10756)
* Add ignores necessary for ansible-core 2.20 (#10755)

Add ignores necessary for ansible-core 2.20 if Python 2.7 is still supported by the collection.

(cherry picked from commit 9d0866bfb8)

* Add missing ignore.

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-28 21:56:44 +02:00
patchback[bot]
e29c1fe51f [PR #10732/5ee02297 backport][stable-10] ssh_config tests: remove paramiko version restriction (#10734)
ssh_config tests: remove paramiko version restriction (#10732)

Remove paramiko version restriction for ssh_config tests.

(cherry picked from commit 5ee02297b0)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-25 07:26:00 +02:00
patchback[bot]
196f9b1bac [PR #10728/82b37bdb backport][stable-10] pacman: re-enable yay test (#10730)
pacman: re-enable yay test (#10728)

Re-enable yay test.

(cherry picked from commit 82b37bdb56)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-25 06:57:37 +02:00
patchback[bot]
4f6f4b343f [PR #10706/5eab0f24 backport][stable-10] CI: Remove no longer necessary constraints (#10722)
CI: Remove no longer necessary constraints (#10706)

Remove no longer necessary constraints.

(cherry picked from commit 5eab0f2419)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-23 19:24:19 +02:00
patchback[bot]
6d75ac4fb3 [PR #10701/3b9acafc backport][stable-10] update requirements for Python versions currently used (#10702)
update requirements for Python versions currently used (#10701)

(cherry picked from commit 3b9acafc72)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-08-19 07:14:03 +02:00
patchback[bot]
eca2094831 [PR #10695/6827680c backport][stable-10] build(deps): bump actions/checkout from 4 to 5 in the ci group (#10697)
build(deps): bump actions/checkout from 4 to 5 in the ci group (#10695)

Bumps the ci group with 1 update: [actions/checkout](https://github.com/actions/checkout).

Updates `actions/checkout` from 4 to 5
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: ci
...



(cherry picked from commit 6827680cda)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-18 18:27:59 +02:00
Felix Fontein
8a6fb28296 [stable-10] ansible-core 2.20: avoid deprecated functionality (#10687) (#10694)
ansible-core 2.20: avoid deprecated functionality (#10687)

Avoid deprecated functionality.

(cherry picked from commit 47e8a3c193)
2025-08-18 05:18:40 +00:00
patchback[bot]
6d94f0acbe [PR #10688/ceba0cbe backport][stable-10] pids: avoid type error if name is empty (#10691)
pids: avoid type error if name is empty (#10688)

Avoid type error if name is empty.

(cherry picked from commit ceba0cbedb)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-18 06:41:22 +02:00
patchback[bot]
ce05de750e [PR #10617/c84f16c5 backport][stable-10] scaleway_lb: fix RETURN docs (#10685)
scaleway_lb: fix RETURN docs (#10617)

* scaleway_lb: fix RETURN docs

* remove outer dict from sample content

(cherry picked from commit c84f16c5e9)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-08-17 17:28:37 +02:00
patchback[bot]
31f1b9a7c7 [PR #10423/735a066d backport][stable-10] apache2_module: updated cgi action conditions (#10681)
apache2_module: updated cgi action conditions (#10423)

* apache2_module: updated cgi action conditions

Only the activation of the cgi module in threaded mode should be a
restriction due to apache2 limitations, not the deactivation.
Especially when the cgi module isn't enabled yet at all. Fixes #9140

* bug(fix): apache2_module fails to disable cgi module

* Update changelog fragment.

---------


(cherry picked from commit 735a066d92)

Co-authored-by: Daniel Hoffend <dh@dotlan.net>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-17 13:12:52 +02:00
patchback[bot]
46790b3dcb [PR #10674/dfc2a54d backport][stable-10] pacman: temporary disable yay test (#10677)
pacman: temporary disable yay test (#10674)

Temporary disable pacman yay test.

(cherry picked from commit dfc2a54d16)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-15 21:03:32 +02:00
patchback[bot]
41aa6bc450 [PR #10668/d84d2397 backport][stable-10] ipa_*: adjust common connection notes to modules (#10670)
ipa_*: adjust common connection notes to modules (#10668)

(cherry picked from commit d84d2397b9)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-08-15 20:14:12 +02:00
patchback[bot]
15b0eb155b [PR #10657/3c0d6074 backport][stable-10] jc filter: remove skips for FreeBSD (#10658)
jc filter: remove skips for FreeBSD (#10657)

(cherry picked from commit 3c0d60740c)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-08-12 09:58:14 +02:00
patchback[bot]
169b65b43e [PR #10653/eb5708a1 backport][stable-10] CI: Make sure to install Java in Debian Bullseye (#10655)
CI: Make sure to install Java in Debian Bullseye (#10653)

Make sure to install Java in Debian Bullseye.

(cherry picked from commit eb5708a125)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-12 01:21:32 +02:00
Felix Fontein
f71f8e608d The next release will be 10.7.4. 2025-08-11 22:25:36 +02:00
175 changed files with 1124 additions and 733 deletions

View File

@@ -29,14 +29,14 @@ schedules:
always: true
branches:
include:
- stable-12
- stable-11
- stable-10
- cron: 0 11 * * 0
displayName: Weekly (old stable branches)
always: true
branches:
include:
- stable-9
- stable-10
variables:
- name: checkoutPath
@@ -57,14 +57,14 @@ pool: Standard
stages:
### Sanity
- stage: Sanity_devel
displayName: Sanity devel
- stage: Sanity_2_20
displayName: Sanity 2.20
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Test {0}
testFormat: devel/sanity/{0}
testFormat: 2.20/sanity/{0}
targets:
- test: 1
- test: 2
@@ -96,41 +96,15 @@ stages:
- test: 2
- test: 3
- test: 4
- stage: Sanity_2_17
displayName: Sanity 2.17
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Test {0}
testFormat: 2.17/sanity/{0}
targets:
- test: 1
- test: 2
- test: 3
- test: 4
- stage: Sanity_2_16
displayName: Sanity 2.16
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Test {0}
testFormat: 2.16/sanity/{0}
targets:
- test: 1
- test: 2
- test: 3
- test: 4
### Units
- stage: Units_devel
displayName: Units devel
- stage: Units_2_20
displayName: Units 2.20
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Python {0}
testFormat: devel/units/{0}/1
testFormat: 2.20/units/{0}/1
targets:
- test: 3.9
- test: '3.10'
@@ -162,39 +136,15 @@ stages:
- test: 3.8
- test: "3.11"
- test: "3.13"
- stage: Units_2_17
displayName: Units 2.17
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Python {0}
testFormat: 2.17/units/{0}/1
targets:
- test: 3.7
- test: "3.10"
- test: "3.12"
- stage: Units_2_16
displayName: Units 2.16
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Python {0}
testFormat: 2.16/units/{0}/1
targets:
- test: 2.7
- test: 3.6
- test: "3.11"
## Remote
- stage: Remote_devel_extra_vms
displayName: Remote devel extra VMs
- stage: Remote_2_20_extra_vms
displayName: Remote 2.20 extra VMs
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: devel/{0}
testFormat: 2.20/{0}
targets:
- name: Alpine 3.22
test: alpine/3.22
@@ -206,20 +156,20 @@ stages:
test: ubuntu/24.04
groups:
- vm
- stage: Remote_devel
displayName: Remote devel
- stage: Remote_2_20
displayName: Remote 2.20
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: devel/{0}
testFormat: 2.20/{0}
targets:
- name: macOS 15.3
test: macos/15.3
- name: RHEL 10.0
test: rhel/10.0
- name: RHEL 9.6
test: rhel/9.6
- name: RHEL 10.1
test: rhel/10.1
- name: RHEL 9.7
test: rhel/9.7
- name: FreeBSD 14.3
test: freebsd/14.3
- name: FreeBSD 13.5
@@ -236,10 +186,8 @@ stages:
parameters:
testFormat: 2.19/{0}
targets:
- name: RHEL 9.5
test: rhel/9.5
- name: RHEL 10.0
test: rhel/10.0
- name: RHEL 10.1
test: rhel/10.1
- name: FreeBSD 14.2
test: freebsd/14.2
groups:
@@ -254,63 +202,23 @@ stages:
parameters:
testFormat: 2.18/{0}
targets:
- name: macOS 14.3
test: macos/14.3
- name: RHEL 9.4
test: rhel/9.4
# - name: macOS 14.3
# test: macos/14.3
- name: FreeBSD 14.1
test: freebsd/14.1
groups:
- 1
- 2
- 3
- stage: Remote_2_17
displayName: Remote 2.17
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: 2.17/{0}
targets:
- name: FreeBSD 13.5
test: freebsd/13.5
- name: RHEL 9.3
test: rhel/9.3
groups:
- 1
- 2
- 3
- stage: Remote_2_16
displayName: Remote 2.16
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: 2.16/{0}
targets:
- name: macOS 13.2
test: macos/13.2
- name: RHEL 9.2
test: rhel/9.2
- name: RHEL 8.8
test: rhel/8.8
- name: RHEL 7.9
test: rhel/7.9
# - name: FreeBSD 13.2
# test: freebsd/13.2
groups:
- 1
- 2
- 3
### Docker
- stage: Docker_devel
displayName: Docker devel
- stage: Docker_2_20
displayName: Docker 2.20
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: devel/linux/{0}
testFormat: 2.20/linux/{0}
targets:
- name: Fedora 42
test: fedora42
@@ -358,60 +266,24 @@ stages:
- 1
- 2
- 3
- stage: Docker_2_17
displayName: Docker 2.17
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: 2.17/linux/{0}
targets:
- name: Fedora 39
test: fedora39
- name: Alpine 3.19
test: alpine319
- name: Ubuntu 20.04
test: ubuntu2004
groups:
- 1
- 2
- 3
- stage: Docker_2_16
displayName: Docker 2.16
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: 2.16/linux/{0}
targets:
- name: Fedora 38
test: fedora38
- name: openSUSE 15
test: opensuse15
- name: Alpine 3
test: alpine3
- name: CentOS 7
test: centos7
groups:
- 1
- 2
- 3
### Community Docker
- stage: Docker_community_devel
displayName: Docker (community images) devel
- stage: Docker_community_2_20
displayName: Docker (community images) 2.20
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: devel/linux-community/{0}
testFormat: 2.20/linux-community/{0}
targets:
- name: Debian Bullseye
- name: Debian 11 Bullseye
test: debian-bullseye/3.9
- name: Debian Bookworm
- name: Debian 12 Bookworm
test: debian-bookworm/3.11
- name: Debian 13 Trixie
test: debian-13-trixie/3.13
- name: ArchLinux
test: archlinux/3.13
test: archlinux/3.14
groups:
- 1
- 2
@@ -419,14 +291,14 @@ stages:
### Generic
# Right now all generic tests are disabled. Uncomment when at least one of them is re-enabled.
# - stage: Generic_devel
# displayName: Generic devel
# - stage: Generic_2_20
# displayName: Generic 2.20
# dependsOn: []
# jobs:
# - template: templates/matrix.yml
# parameters:
# nameFormat: Python {0}
# testFormat: devel/generic/{0}/1
# testFormat: 2.20/generic/{0}/1
# targets:
# - test: '3.9'
# - test: '3.12'
@@ -453,60 +325,27 @@ stages:
# targets:
# - test: '3.8'
# - test: '3.13'
# - stage: Generic_2_17
# displayName: Generic 2.17
# dependsOn: []
# jobs:
# - template: templates/matrix.yml
# parameters:
# nameFormat: Python {0}
# testFormat: 2.17/generic/{0}/1
# targets:
# - test: '3.7'
# - test: '3.12'
# - stage: Generic_2_16
# displayName: Generic 2.16
# dependsOn: []
# jobs:
# - template: templates/matrix.yml
# parameters:
# nameFormat: Python {0}
# testFormat: 2.16/generic/{0}/1
# targets:
# - test: '2.7'
# - test: '3.6'
# - test: '3.11'
- stage: Summary
condition: succeededOrFailed()
dependsOn:
- Sanity_devel
- Sanity_2_20
- Sanity_2_19
- Sanity_2_18
- Sanity_2_17
- Sanity_2_16
- Units_devel
- Units_2_20
- Units_2_19
- Units_2_18
- Units_2_17
- Units_2_16
- Remote_devel_extra_vms
- Remote_devel
- Remote_2_20_extra_vms
- Remote_2_20
- Remote_2_19
- Remote_2_18
- Remote_2_17
- Remote_2_16
- Docker_devel
- Docker_2_20
- Docker_2_19
- Docker_2_18
- Docker_2_17
- Docker_2_16
- Docker_community_devel
- Docker_community_2_20
# Right now all generic tests are disabled. Uncomment when at least one of them is re-enabled.
# - Generic_devel
# - Generic_2_20
# - Generic_2_19
# - Generic_2_18
# - Generic_2_17
# - Generic_2_16
jobs:
- template: templates/coverage.yml

4
.github/BOTMETA.yml vendored
View File

@@ -1596,7 +1596,7 @@ macros:
plugin_utils: plugins/plugin_utils
tests: plugins/test
team_ansible_core:
team_aix: MorrisA bcoca d-little flynn1973 gforster kairoaraujo marvin-sinister mator molekuul ramooncamacho wtcross
team_aix: MorrisA bcoca d-little flynn1973 gforster kairoaraujo marvin-sinister molekuul ramooncamacho wtcross
team_bsd: JoergFiedler MacLemon bcoca dch jasperla mekanix opoplawski overhacked tuxillo
team_consul: sgargan apollo13 Ilgmi
team_cyberark_conjur: jvanderhoof ryanprior
@@ -1618,7 +1618,7 @@ macros:
team_redfish: mraineri tomasg2012 xmadsen renxulei rajeevkallur bhavya06 jyundt
team_rhsm: cnsnyder ptoscano
team_scaleway: remyleone abarbare
team_solaris: bcoca fishman jasperla jpdasma mator scathatheworm troy2914 xen0l
team_solaris: bcoca fishman jasperla jpdasma scathatheworm troy2914 xen0l
team_suse: commel evrardjp lrupp AnderEnder alxgu andytom sealor
team_virt: joshainglis karmab Thulium-Drake Ajpantuso
team_wdc: mikemoerk

View File

@@ -146,7 +146,7 @@ body:
attributes:
label: Code of Conduct
description: |
Read the [Ansible Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--ansible-collections) first.
Read the [Ansible Code of Conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--ansible-collections) first.
options:
- label: I agree to follow the Ansible Code of Conduct
required: true

View File

@@ -7,7 +7,7 @@
blank_issues_enabled: false # default: true
contact_links:
- name: Security bug report
url: https://docs.ansible.com/ansible-core/devel/community/reporting_bugs_and_features.html?utm_medium=github&utm_source=issue_template_chooser_ansible_collections
url: https://docs.ansible.com/projects/ansible-core/devel/community/reporting_bugs_and_features.html?utm_medium=github&utm_source=issue_template_chooser_ansible_collections
about: |
Please learn how to report security vulnerabilities here.
@@ -16,12 +16,12 @@ contact_links:
a prompt response.
For more information, see
https://docs.ansible.com/ansible/latest/community/reporting_bugs_and_features.html
https://docs.ansible.com/projects/ansible/latest/community/reporting_bugs_and_features.html
- name: Ansible Code of Conduct
url: https://docs.ansible.com/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_template_chooser_ansible_collections
url: https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_template_chooser_ansible_collections
about: Be nice to other members of the community.
- name: Talks to the community
url: https://docs.ansible.com/ansible/latest/community/communication.html?utm_medium=github&utm_source=issue_template_chooser#mailing-list-information
url: https://docs.ansible.com/projects/ansible/latest/community/communication.html?utm_medium=github&utm_source=issue_template_chooser#mailing-list-information
about: Please ask and answer usage questions here
- name: Working groups
url: https://github.com/ansible/community/wiki

View File

@@ -122,7 +122,7 @@ body:
attributes:
label: Code of Conduct
description: |
Read the [Ansible Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--ansible-collections) first.
Read the [Ansible Code of Conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--ansible-collections) first.
options:
- label: I agree to follow the Ansible Code of Conduct
required: true

View File

@@ -66,7 +66,7 @@ body:
attributes:
label: Code of Conduct
description: |
Read the [Ansible Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--ansible-collections) first.
Read the [Ansible Code of Conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--ansible-collections) first.
options:
- label: I agree to follow the Ansible Code of Conduct
required: true

View File

@@ -4,7 +4,7 @@
<!--- HINT: Include "Fixes #nnn" if you are fixing an existing issue -->
<!--- Please do not forget to include a changelog fragment:
https://docs.ansible.com/ansible/devel/community/collection_development_process.html#creating-changelog-fragments
https://docs.ansible.com/projects/ansible/devel/community/collection_development_process.html#creating-changelog-fragments
No need to include one for docs-only or test-only PR, and for new plugin/module PRs.
Read about more details in CONTRIBUTING.md.
-->

View File

@@ -30,6 +30,8 @@ jobs:
matrix:
ansible:
- '2.15'
- '2.16'
- '2.17'
# Ansible-test on various stable branches does not yet work well with cgroups v2.
# Since ubuntu-latest now uses Ubuntu 22.04, we need to fall back to the ubuntu-20.04
# image for these stable branches. The list of branches where this is necessary will
@@ -73,6 +75,18 @@ jobs:
python: '3.5'
- ansible: '2.15'
python: '3.10'
- ansible: '2.16'
python: '2.7'
- ansible: '2.16'
python: '3.6'
- ansible: '2.16'
python: '3.11'
- ansible: '2.17'
python: '3.7'
- ansible: '2.17'
python: '3.10'
- ansible: '2.17'
python: '3.12'
steps:
- name: >-
@@ -138,19 +152,80 @@ jobs:
docker: fedora37
python: ''
target: azp/posix/3/
# Right now all generic tests are disabled. Uncomment when at least one of them is re-enabled.
# - ansible: '2.13'
# docker: default
# python: '3.9'
# target: azp/generic/1/
# - ansible: '2.14'
# docker: default
# python: '3.10'
# target: azp/generic/1/
# - ansible: '2.15'
# docker: default
# python: '3.9'
# target: azp/generic/1/
# 2.16
- ansible: '2.16'
docker: alpine3
python: ''
target: azp/posix/1/
- ansible: '2.16'
docker: alpine3
python: ''
target: azp/posix/2/
- ansible: '2.16'
docker: alpine3
python: ''
target: azp/posix/3/
- ansible: '2.16'
docker: fedora38
python: ''
target: azp/posix/1/
- ansible: '2.16'
docker: fedora38
python: ''
target: azp/posix/2/
- ansible: '2.16'
docker: fedora38
python: ''
target: azp/posix/3/
- ansible: '2.16'
docker: opensuse15
python: ''
target: azp/posix/1/
- ansible: '2.16'
docker: opensuse15
python: ''
target: azp/posix/2/
- ansible: '2.16'
docker: opensuse15
python: ''
target: azp/posix/3/
# 2.17
- ansible: '2.17'
docker: fedora39
python: ''
target: azp/posix/1/
- ansible: '2.17'
docker: fedora39
python: ''
target: azp/posix/2/
- ansible: '2.17'
docker: fedora39
python: ''
target: azp/posix/3/
- ansible: '2.17'
docker: alpine319
python: ''
target: azp/posix/1/
- ansible: '2.17'
docker: alpine319
python: ''
target: azp/posix/2/
- ansible: '2.17'
docker: alpine319
python: ''
target: azp/posix/3/
- ansible: '2.17'
docker: ubuntu2004
python: ''
target: azp/posix/1/
- ansible: '2.17'
docker: ubuntu2004
python: ''
target: azp/posix/2/
- ansible: '2.17'
docker: ubuntu2004
python: ''
target: azp/posix/3/
steps:
- name: >-

View File

@@ -24,15 +24,15 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
persist-credentials: false
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@v4
with:
languages: python
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
uses: github/codeql-action/analyze@v4

View File

@@ -21,7 +21,7 @@ jobs:
name: "Run extra sanity tests"
steps:
- name: Check out collection
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Run nox

View File

@@ -2,87 +2,103 @@
**Topics**
- <a href="#v10-7-3">v10\.7\.3</a>
- <a href="#v10-7-8">v10\.7\.8</a>
- <a href="#release-summary">Release Summary</a>
- <a href="#bugfixes">Bugfixes</a>
- <a href="#v10-7-2">v10\.7\.2</a>
- <a href="#v10-7-7">v10\.7\.7</a>
- <a href="#release-summary-1">Release Summary</a>
- <a href="#bugfixes-1">Bugfixes</a>
- <a href="#v10-7-1">v10\.7\.1</a>
- <a href="#v10-7-6">v10\.7\.6</a>
- <a href="#release-summary-2">Release Summary</a>
- <a href="#security-fixes">Security Fixes</a>
- <a href="#bugfixes-2">Bugfixes</a>
- <a href="#v10-7-5">v10\.7\.5</a>
- <a href="#release-summary-3">Release Summary</a>
- <a href="#bugfixes-3">Bugfixes</a>
- <a href="#v10-7-4">v10\.7\.4</a>
- <a href="#release-summary-4">Release Summary</a>
- <a href="#bugfixes-4">Bugfixes</a>
- <a href="#v10-7-3">v10\.7\.3</a>
- <a href="#release-summary-5">Release Summary</a>
- <a href="#bugfixes-5">Bugfixes</a>
- <a href="#v10-7-2">v10\.7\.2</a>
- <a href="#release-summary-6">Release Summary</a>
- <a href="#bugfixes-6">Bugfixes</a>
- <a href="#v10-7-1">v10\.7\.1</a>
- <a href="#release-summary-7">Release Summary</a>
- <a href="#minor-changes">Minor Changes</a>
- <a href="#deprecated-features">Deprecated Features</a>
- <a href="#bugfixes-2">Bugfixes</a>
- <a href="#bugfixes-7">Bugfixes</a>
- <a href="#v10-7-0">v10\.7\.0</a>
- <a href="#release-summary-3">Release Summary</a>
- <a href="#release-summary-8">Release Summary</a>
- <a href="#minor-changes-1">Minor Changes</a>
- <a href="#deprecated-features-1">Deprecated Features</a>
- <a href="#bugfixes-3">Bugfixes</a>
- <a href="#bugfixes-8">Bugfixes</a>
- <a href="#new-plugins">New Plugins</a>
- <a href="#callback">Callback</a>
- <a href="#filter">Filter</a>
- <a href="#new-modules">New Modules</a>
- <a href="#v10-6-0">v10\.6\.0</a>
- <a href="#release-summary-4">Release Summary</a>
- <a href="#release-summary-9">Release Summary</a>
- <a href="#minor-changes-2">Minor Changes</a>
- <a href="#deprecated-features-2">Deprecated Features</a>
- <a href="#bugfixes-4">Bugfixes</a>
- <a href="#bugfixes-9">Bugfixes</a>
- <a href="#known-issues">Known Issues</a>
- <a href="#new-plugins-1">New Plugins</a>
- <a href="#connection">Connection</a>
- <a href="#v10-5-0">v10\.5\.0</a>
- <a href="#release-summary-5">Release Summary</a>
- <a href="#release-summary-10">Release Summary</a>
- <a href="#minor-changes-3">Minor Changes</a>
- <a href="#bugfixes-5">Bugfixes</a>
- <a href="#bugfixes-10">Bugfixes</a>
- <a href="#new-modules-1">New Modules</a>
- <a href="#v10-4-0">v10\.4\.0</a>
- <a href="#release-summary-6">Release Summary</a>
- <a href="#release-summary-11">Release Summary</a>
- <a href="#minor-changes-4">Minor Changes</a>
- <a href="#deprecated-features-3">Deprecated Features</a>
- <a href="#bugfixes-6">Bugfixes</a>
- <a href="#bugfixes-11">Bugfixes</a>
- <a href="#new-modules-2">New Modules</a>
- <a href="#v10-3-1">v10\.3\.1</a>
- <a href="#release-summary-7">Release Summary</a>
- <a href="#release-summary-12">Release Summary</a>
- <a href="#minor-changes-5">Minor Changes</a>
- <a href="#bugfixes-7">Bugfixes</a>
- <a href="#bugfixes-12">Bugfixes</a>
- <a href="#v10-3-0">v10\.3\.0</a>
- <a href="#release-summary-8">Release Summary</a>
- <a href="#release-summary-13">Release Summary</a>
- <a href="#minor-changes-6">Minor Changes</a>
- <a href="#deprecated-features-4">Deprecated Features</a>
- <a href="#security-fixes">Security Fixes</a>
- <a href="#bugfixes-8">Bugfixes</a>
- <a href="#security-fixes-1">Security Fixes</a>
- <a href="#bugfixes-13">Bugfixes</a>
- <a href="#new-plugins-2">New Plugins</a>
- <a href="#connection-1">Connection</a>
- <a href="#filter-1">Filter</a>
- <a href="#lookup">Lookup</a>
- <a href="#new-modules-3">New Modules</a>
- <a href="#v10-2-0">v10\.2\.0</a>
- <a href="#release-summary-9">Release Summary</a>
- <a href="#release-summary-14">Release Summary</a>
- <a href="#minor-changes-7">Minor Changes</a>
- <a href="#deprecated-features-5">Deprecated Features</a>
- <a href="#security-fixes-1">Security Fixes</a>
- <a href="#bugfixes-9">Bugfixes</a>
- <a href="#security-fixes-2">Security Fixes</a>
- <a href="#bugfixes-14">Bugfixes</a>
- <a href="#new-plugins-3">New Plugins</a>
- <a href="#inventory">Inventory</a>
- <a href="#new-modules-4">New Modules</a>
- <a href="#v10-1-0">v10\.1\.0</a>
- <a href="#release-summary-10">Release Summary</a>
- <a href="#release-summary-15">Release Summary</a>
- <a href="#minor-changes-8">Minor Changes</a>
- <a href="#deprecated-features-6">Deprecated Features</a>
- <a href="#bugfixes-10">Bugfixes</a>
- <a href="#bugfixes-15">Bugfixes</a>
- <a href="#new-plugins-4">New Plugins</a>
- <a href="#filter-2">Filter</a>
- <a href="#new-modules-5">New Modules</a>
- <a href="#v10-0-1">v10\.0\.1</a>
- <a href="#release-summary-11">Release Summary</a>
- <a href="#bugfixes-11">Bugfixes</a>
- <a href="#release-summary-16">Release Summary</a>
- <a href="#bugfixes-16">Bugfixes</a>
- <a href="#v10-0-0">v10\.0\.0</a>
- <a href="#release-summary-12">Release Summary</a>
- <a href="#release-summary-17">Release Summary</a>
- <a href="#minor-changes-9">Minor Changes</a>
- <a href="#breaking-changes--porting-guide">Breaking Changes / Porting Guide</a>
- <a href="#deprecated-features-7">Deprecated Features</a>
- <a href="#removed-features-previously-deprecated">Removed Features \(previously deprecated\)</a>
- <a href="#bugfixes-12">Bugfixes</a>
- <a href="#bugfixes-17">Bugfixes</a>
- <a href="#known-issues-1">Known Issues</a>
- <a href="#new-plugins-5">New Plugins</a>
- <a href="#filter-3">Filter</a>
@@ -90,17 +106,102 @@
- <a href="#new-modules-6">New Modules</a>
This changelog describes changes after version 9\.0\.0\.
<a id="v10-7-3"></a>
## v10\.7\.3
<a id="v10-7-8"></a>
## v10\.7\.8
<a id="release-summary"></a>
### Release Summary
Regular bugfix release\.
Bugfix release\.
<a id="bugfixes"></a>
### Bugfixes
* python\_requirements\_info \- use <code>importlib\.metadata</code> if <code>pkg\_resources</code> from <code>setuptools</code> cannot be imported\. That module has been removed from setuptools 82\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/issues/11491](https\://github\.com/ansible\-collections/community\.general/issues/11491)\, [https\://github\.com/ansible\-collections/community\.general/pull/11492](https\://github\.com/ansible\-collections/community\.general/pull/11492)\)\.
<a id="v10-7-7"></a>
## v10\.7\.7
<a id="release-summary-1"></a>
### Release Summary
Bugfix release\.
<a id="bugfixes-1"></a>
### Bugfixes
* monit \- add delay of 0\.5 seconds after state change and check for status \([https\://github\.com/ansible\-collections/community\.general/pull/11255](https\://github\.com/ansible\-collections/community\.general/pull/11255)\)\.
<a id="v10-7-6"></a>
## v10\.7\.6
<a id="release-summary-2"></a>
### Release Summary
Regular bugfix release\.
<a id="security-fixes"></a>
### Security Fixes
* keycloak\_user \- the parameter <code>credentials\[\]\.value</code> is now marked as <code>no\_log\=true</code>\. Before it was logged by Ansible\, unless the task was marked as <code>no\_log\: true</code>\. Since this parameter can be used for passwords\, this resulted in credential leaking \([https\://github\.com/ansible\-collections/community\.general/issues/11000](https\://github\.com/ansible\-collections/community\.general/issues/11000)\, [https\://github\.com/ansible\-collections/community\.general/pull/11005](https\://github\.com/ansible\-collections/community\.general/pull/11005)\)\.
<a id="bugfixes-2"></a>
### Bugfixes
* gitlab\_runner \- fix exception in check mode when a new runner is created \([https\://github\.com/ansible\-collections/community\.general/issues/8854](https\://github\.com/ansible\-collections/community\.general/issues/8854)\)\.
* omapi\_host \- make return values compatible with ansible\-core 2\.19 and Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/11001](https\://github\.com/ansible\-collections/community\.general/pull/11001)\)\.
* onepassword\_doc and onepassword\_ssh\_key lookup plugins \- ensure that all connection parameters are passed to CLI class \([https\://github\.com/ansible\-collections/community\.general/pull/10965](https\://github\.com/ansible\-collections/community\.general/pull/10965)\)\.
* pritunl\_user \- improve resilience when comparing user parameters if remote fields are <code>null</code> or missing\. List parameters \(<code>groups</code>\, <code>mac\_addresses</code>\) now safely default to empty lists for comparison and avoids <code>KeyError</code> issues \([https\://github\.com/ansible\-collections/community\.general/issues/10954](https\://github\.com/ansible\-collections/community\.general/issues/10954)\, [https\://github\.com/ansible\-collections/community\.general/pull/10955](https\://github\.com/ansible\-collections/community\.general/pull/10955)\)\.
* random\_string lookup plugin \- replace <code>random\.SystemRandom\(\)</code> with <code>secrets\.SystemRandom\(\)</code> when generating strings\. This has no practical effect\, as both are the same \([https\://github\.com/ansible\-collections/community\.general/pull/10893](https\://github\.com/ansible\-collections/community\.general/pull/10893)\)\.
* terraform \- fix bug when <code>null</code> values inside complex vars are throwing error instead of being passed to terraform\. Now terraform can handle <code>null\`\`s in \`\`complex\_vars</code> itself \([https\://github\.com/ansible\-collections/community\.general/pull/10961](https\://github\.com/ansible\-collections/community\.general/pull/10961)\)\.
<a id="v10-7-5"></a>
## v10\.7\.5
<a id="release-summary-3"></a>
### Release Summary
Regular bugfix release\.
<a id="bugfixes-3"></a>
### 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-4"></a>
### Release Summary
Regular bugfix release\.
<a id="bugfixes-4"></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)\)\.
* 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)\)\.
* monit \- fix crash caused by an unknown status value returned from the monit service \([https\://github\.com/ansible\-collections/community\.general/issues/10742](https\://github\.com/ansible\-collections/community\.general/issues/10742)\, [https\://github\.com/ansible\-collections/community\.general/pull/10743](https\://github\.com/ansible\-collections/community\.general/pull/10743)\)\.
* pids \- prevent error when an empty string is provided for <code>name</code> \([https\://github\.com/ansible\-collections/community\.general/issues/10672](https\://github\.com/ansible\-collections/community\.general/issues/10672)\, [https\://github\.com/ansible\-collections/community\.general/pull/10688](https\://github\.com/ansible\-collections/community\.general/pull/10688)\)\.
* selective callback plugin \- specify <code>ansible\_loop\_var</code> instead of the explicit value <code>item</code> when printing task result \([https\://github\.com/ansible\-collections/community\.general/pull/10752](https\://github\.com/ansible\-collections/community\.general/pull/10752)\)\.
<a id="v10-7-3"></a>
## v10\.7\.3
<a id="release-summary-5"></a>
### Release Summary
Regular bugfix release\.
<a id="bugfixes-5"></a>
### 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)\)\.
* apk \- fix check for empty/whitespace\-only package names \([https\://github\.com/ansible\-collections/community\.general/pull/10532](https\://github\.com/ansible\-collections/community\.general/pull/10532)\)\.
* apk \- handle empty name strings properly \([https\://github\.com/ansible\-collections/community\.general/issues/10441](https\://github\.com/ansible\-collections/community\.general/issues/10441)\, [https\://github\.com/ansible\-collections/community\.general/pull/10442](https\://github\.com/ansible\-collections/community\.general/pull/10442)\)\.
@@ -125,12 +226,12 @@ Regular bugfix release\.
<a id="v10-7-2"></a>
## v10\.7\.2
<a id="release-summary-1"></a>
<a id="release-summary-6"></a>
### Release Summary
Regular bugfix release\.
<a id="bugfixes-1"></a>
<a id="bugfixes-6"></a>
### 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)\)\.
@@ -143,7 +244,7 @@ Regular bugfix release\.
<a id="v10-7-1"></a>
## v10\.7\.1
<a id="release-summary-2"></a>
<a id="release-summary-7"></a>
### Release Summary
Regular bugfix release\.
@@ -159,7 +260,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)\)\.
<a id="bugfixes-2"></a>
<a id="bugfixes-7"></a>
### 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)\)\.
@@ -173,7 +274,7 @@ Regular bugfix release\.
<a id="v10-7-0"></a>
## v10\.7\.0
<a id="release-summary-3"></a>
<a id="release-summary-8"></a>
### Release Summary
Bugfix and feature release\.
@@ -197,7 +298,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)\)\.
* 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-3"></a>
<a id="bugfixes-8"></a>
### 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)\)\.
@@ -229,7 +330,7 @@ From now on\, there will only be bugfix 10\.7\.x releases for the community\.gen
<a id="v10-6-0"></a>
## v10\.6\.0
<a id="release-summary-4"></a>
<a id="release-summary-9"></a>
### Release Summary
Regular bugfix and feature release\.
@@ -273,7 +374,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)\)\.
* 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-4"></a>
<a id="bugfixes-9"></a>
### 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)\)\.
@@ -306,7 +407,7 @@ Regular bugfix and feature release\.
<a id="v10-5-0"></a>
## v10\.5\.0
<a id="release-summary-5"></a>
<a id="release-summary-10"></a>
### Release Summary
Regular bugfix and feature release\.
@@ -328,7 +429,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)\)\.
* 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-5"></a>
<a id="bugfixes-10"></a>
### 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)\)\.
@@ -348,7 +449,7 @@ Regular bugfix and feature release\.
<a id="v10-4-0"></a>
## v10\.4\.0
<a id="release-summary-6"></a>
<a id="release-summary-11"></a>
### Release Summary
Regular bugfix and feature release\.
@@ -378,7 +479,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\_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-6"></a>
<a id="bugfixes-11"></a>
### 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)\)\.
@@ -406,7 +507,7 @@ Regular bugfix and feature release\.
<a id="v10-3-1"></a>
## v10\.3\.1
<a id="release-summary-7"></a>
<a id="release-summary-12"></a>
### Release Summary
Bugfix release\.
@@ -416,7 +517,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)\)\.
<a id="bugfixes-7"></a>
<a id="bugfixes-12"></a>
### 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)\)\.
@@ -430,7 +531,7 @@ Bugfix release\.
<a id="v10-3-0"></a>
## v10\.3\.0
<a id="release-summary-8"></a>
<a id="release-summary-13"></a>
### Release Summary
Regular bugfix and feature release\.
@@ -564,12 +665,12 @@ Regular bugfix and feature release\.
* MH module utils \- attribute <code>debug</code> definition in subclasses of MH is now deprecated\, as that name will become a delegation to <code>AnsibleModule</code> in community\.general 12\.0\.0\, and any such attribute will be overridden by that delegation in that version \([https\://github\.com/ansible\-collections/community\.general/pull/9577](https\://github\.com/ansible\-collections/community\.general/pull/9577)\)\.
* proxmox \- removes default value <code>false</code> of <code>update</code> parameter\. This will be changed to a default of <code>true</code> in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9225](https\://github\.com/ansible\-collections/community\.general/pull/9225)\)\.
<a id="security-fixes"></a>
<a id="security-fixes-1"></a>
### Security Fixes
* 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-8"></a>
<a id="bugfixes-13"></a>
### 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)\)\.
@@ -613,7 +714,7 @@ Regular bugfix and feature release\.
<a id="v10-2-0"></a>
## v10\.2\.0
<a id="release-summary-9"></a>
<a id="release-summary-14"></a>
### Release Summary
Regular bugfix and feature release\.
@@ -767,12 +868,12 @@ Regular bugfix and feature release\.
* slack \- the default value <code>auto</code> of the <code>prepend\_hash</code> option is deprecated and will change to <code>never</code> in community\.general 12\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9443](https\://github\.com/ansible\-collections/community\.general/pull/9443)\)\.
* yaml callback plugin \- deprecate plugin in favor of <code>result\_format\=yaml</code> in plugin <code>ansible\.bulitin\.default</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9456](https\://github\.com/ansible\-collections/community\.general/pull/9456)\)\.
<a id="security-fixes-1"></a>
<a id="security-fixes-2"></a>
### Security Fixes
* 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-9"></a>
<a id="bugfixes-14"></a>
### 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)\)\.
@@ -803,7 +904,7 @@ Regular bugfix and feature release\.
<a id="v10-1-0"></a>
## v10\.1\.0
<a id="release-summary-10"></a>
<a id="release-summary-15"></a>
### Release Summary
Regular bugfix and feature release\.
@@ -835,7 +936,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)\)\.
* 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-10"></a>
<a id="bugfixes-15"></a>
### 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)\)\.
@@ -864,12 +965,12 @@ Regular bugfix and feature release\.
<a id="v10-0-1"></a>
## v10\.0\.1
<a id="release-summary-11"></a>
<a id="release-summary-16"></a>
### Release Summary
Bugfix release for inclusion in Ansible 11\.0\.0rc1\.
<a id="bugfixes-11"></a>
<a id="bugfixes-16"></a>
### 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)\)\.
@@ -879,7 +980,7 @@ Bugfix release for inclusion in Ansible 11\.0\.0rc1\.
<a id="v10-0-0"></a>
## v10\.0\.0
<a id="release-summary-12"></a>
<a id="release-summary-17"></a>
### Release Summary
This is release 10\.0\.0 of <code>community\.general</code>\, released on 2024\-11\-04\.
@@ -1114,7 +1215,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)\)\.
* 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-12"></a>
<a id="bugfixes-17"></a>
### 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)\)\.

View File

@@ -6,6 +6,91 @@ Community General Release Notes
This changelog describes changes after version 9.0.0.
v10.7.8
=======
Release Summary
---------------
Bugfix release.
Bugfixes
--------
- python_requirements_info - use ``importlib.metadata`` if ``pkg_resources`` from ``setuptools`` cannot be imported. That module has been removed from setuptools 82.0.0 (https://github.com/ansible-collections/community.general/issues/11491, https://github.com/ansible-collections/community.general/pull/11492).
v10.7.7
=======
Release Summary
---------------
Bugfix release.
Bugfixes
--------
- monit - add delay of 0.5 seconds after state change and check for status (https://github.com/ansible-collections/community.general/pull/11255).
v10.7.6
=======
Release Summary
---------------
Regular bugfix release.
Security Fixes
--------------
- keycloak_user - the parameter ``credentials[].value`` is now marked as ``no_log=true``. Before it was logged by Ansible, unless the task was marked as ``no_log: true``. Since this parameter can be used for passwords, this resulted in credential leaking (https://github.com/ansible-collections/community.general/issues/11000, https://github.com/ansible-collections/community.general/pull/11005).
Bugfixes
--------
- gitlab_runner - fix exception in check mode when a new runner is created (https://github.com/ansible-collections/community.general/issues/8854).
- omapi_host - make return values compatible with ansible-core 2.19 and Python 3 (https://github.com/ansible-collections/community.general/pull/11001).
- onepassword_doc and onepassword_ssh_key lookup plugins - ensure that all connection parameters are passed to CLI class (https://github.com/ansible-collections/community.general/pull/10965).
- pritunl_user - improve resilience when comparing user parameters if remote fields are ``null`` or missing. List parameters (``groups``, ``mac_addresses``) now safely default to empty lists for comparison and avoids ``KeyError`` issues (https://github.com/ansible-collections/community.general/issues/10954, https://github.com/ansible-collections/community.general/pull/10955).
- random_string lookup plugin - replace ``random.SystemRandom()`` with ``secrets.SystemRandom()`` when generating strings. This has no practical effect, as both are the same (https://github.com/ansible-collections/community.general/pull/10893).
- terraform - fix bug when ``null`` values inside complex vars are throwing error instead of being passed to terraform. Now terraform can handle ``null``s in ``complex_vars`` itself (https://github.com/ansible-collections/community.general/pull/10961).
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
=======
Release Summary
---------------
Regular bugfix release.
Bugfixes
--------
- Avoid deprecated functionality in ansible-core 2.20 (https://github.com/ansible-collections/community.general/pull/10687).
- apache2_module - check the ``cgi`` module restrictions only during activation (https://github.com/ansible-collections/community.general/pull/10423).
- kdeconfig - ``kwriteconfig`` executable could not be discovered automatically on systems with only ``kwriteconfig6`` installed. ``kwriteconfig6`` can now be discovered by Ansible (https://github.com/ansible-collections/community.general/issues/10746, https://github.com/ansible-collections/community.general/pull/10751).
- monit - fix crash caused by an unknown status value returned from the monit service (https://github.com/ansible-collections/community.general/issues/10742, https://github.com/ansible-collections/community.general/pull/10743).
- pids - prevent error when an empty string is provided for ``name`` (https://github.com/ansible-collections/community.general/issues/10672, https://github.com/ansible-collections/community.general/pull/10688).
- selective callback plugin - specify ``ansible_loop_var`` instead of the explicit value ``item`` when printing task result (https://github.com/ansible-collections/community.general/pull/10752).
v10.7.3
=======

View File

@@ -6,7 +6,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
# Contributing
We follow [Ansible Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html) in all our contributions and interactions within this repository.
We follow [Ansible Code of Conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html) in all our contributions and interactions within this repository.
If you are a committer, also refer to the [collection's committer guidelines](https://github.com/ansible-collections/community.general/blob/main/commit-rights.md).
@@ -20,33 +20,38 @@ so you can cooperate to create a better solution together.
* If you are interested in starting with an easy issue, look for [issues with an `easyfix` label](https://github.com/ansible-collections/community.general/labels/easyfix).
* Often issues that are waiting for contributors to pick up have [the `waiting_on_contributor` label](https://github.com/ansible-collections/community.general/labels/waiting_on_contributor).
## Open pull requests
## Review pull requests
Look through currently [open pull requests](https://github.com/ansible-collections/community.general/pulls).
You can help by reviewing them. Reviews help move pull requests to merge state. Some good pull requests cannot be merged only due to a lack of reviews. And it is always worth saying that good reviews are often more valuable than pull requests themselves.
Note that reviewing does not only mean code review, but also offering comments on new interfaces added to existing plugins/modules, interfaces of new plugins/modules, improving language (not everyone is a native english speaker), or testing bugfixes and new features!
Note that reviewing does not only mean code review, but also offering comments on new interfaces added to existing plugins/modules, interfaces of new plugins/modules, improving language (not everyone is a native English speaker), or testing bugfixes and new features!
Also, consider taking up a valuable, reviewed, but abandoned pull request which you could politely ask the original authors to complete yourself.
## Open pull requests
Please read our ['Contributing to collections'](https://docs.ansible.com/projects/ansible/devel/dev_guide/developing_collections_contributing.html#contributing-to-a-collection-community-general) guide.
* Try committing your changes with an informative but short commit message.
* Do not squash your commits and force-push to your branch if not needed. Reviews of your pull request are much easier with individual commits to comprehend the pull request history. All commits of your pull request branch will be squashed into one commit by GitHub upon merge.
* Do not add merge commits to your PR. The bot will complain and you will have to rebase ([instructions for rebasing](https://docs.ansible.com/ansible/latest/dev_guide/developing_rebasing.html)) to remove them before your PR can be merged. To avoid that git automatically does merges during pulls, you can configure it to do rebases instead by running `git config pull.rebase true` inside the repository checkout.
* Make sure your PR includes a [changelog fragment](https://docs.ansible.com/ansible/devel/community/collection_development_process.html#creating-a-changelog-fragment).
* Do not add merge commits to your PR. The bot will complain and you will have to rebase ([instructions for rebasing](https://docs.ansible.com/projects/ansible/latest/dev_guide/developing_rebasing.html)) to remove them before your PR can be merged. To avoid that git automatically does merges during pulls, you can configure it to do rebases instead by running `git config pull.rebase true` inside the repository checkout.
* Make sure your PR includes a [changelog fragment](https://docs.ansible.com/projects/ansible/devel/community/collection_development_process.html#creating-a-changelog-fragment).
* You must not include a fragment for new modules or new plugins. Also you shouldn't include one for docs-only changes. (If you're not sure, simply don't include one, we'll tell you whether one is needed or not :) )
* Please always include a link to the pull request itself, and if the PR is about an issue, also a link to the issue. Also make sure the fragment ends with a period, and begins with a lower-case letter after `-`. (Again, if you don't do this, we'll add suggestions to fix it, so don't worry too much :) )
* Avoid reformatting unrelated parts of the codebase in your PR. These types of changes will likely be requested for reversion, create additional work for reviewers, and may cause approval to be delayed.
You can also read [our Quick-start development guide](https://github.com/ansible/community-docs/blob/main/create_pr_quick_start_guide.rst).
You can also read the Ansible community's [Quick-start development guide](https://docs.ansible.com/projects/ansible/devel/community/create_pr_quick_start.html).
## Test pull requests
If you want to test a PR locally, refer to [our testing guide](https://github.com/ansible/community-docs/blob/main/test_pr_locally_guide.rst) for instructions on how do it quickly.
If you want to test a PR locally, refer to [our testing guide](https://docs.ansible.com/projects/ansible/devel/community/collection_contributors/collection_test_pr_locally.html) for instructions on how do it quickly.
If you find any inconsistencies or places in this document which can be improved, feel free to raise an issue or pull request to fix it.
## Run sanity or unit locally (with antsibull-nox)
The easiest way to run sanity and unit tests locally is to use [antsibull-nox](https://ansible.readthedocs.io/projects/antsibull-nox/).
The easiest way to run sanity and unit tests locally is to use [antsibull-nox](https://docs.ansible.com/projects/antsibull-nox/).
(If you have [nox](https://nox.thea.codes/en/stable/) installed, it will automatically install antsibull-nox in a virtual environment for you.)
### Sanity tests
@@ -88,7 +93,7 @@ If you replace `-Re` with `-e`, then the virtual environments will be re-created
Instead of using antsibull-nox, you can also run sanity and unit tests with ansible-test directly.
This also allows you to run integration tests.
You have to check out the repository into a specific path structure to be able to run `ansible-test`. The path to the git checkout must end with `.../ansible_collections/community/general`. Please see [our testing guide](https://github.com/ansible/community-docs/blob/main/test_pr_locally_guide.rst) for instructions on how to check out the repository into a correct path structure. The short version of these instructions is:
You have to check out the repository into a specific path structure to be able to run `ansible-test`. The path to the git checkout must end with `.../ansible_collections/community/general`. Please see [our testing guide](https://docs.ansible.com/projects/ansible/devel/community/collection_contributors/collection_test_pr_locally.html) for instructions on how to check out the repository into a correct path structure. The short version of these instructions is:
```.bash
mkdir -p ~/dev/ansible_collections/community
@@ -188,9 +193,9 @@ Creating new modules and plugins requires a bit more work than other Pull Reques
3. When creating a new module or plugin, please make sure that you follow various guidelines:
- Follow [development conventions](https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_best_practices.html);
- Follow [documentation standards](https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_documenting.html) and
the [Ansible style guide](https://docs.ansible.com/ansible/devel/dev_guide/style_guide/index.html#style-guide);
- Follow [development conventions](https://docs.ansible.com/projects/ansible/devel/dev_guide/developing_modules_best_practices.html);
- Follow [documentation standards](https://docs.ansible.com/projects/ansible/devel/dev_guide/developing_modules_documenting.html) and
the [Ansible style guide](https://docs.ansible.com/projects/ansible/devel/dev_guide/style_guide/index.html#style-guide);
- Make sure your modules and plugins are [GPL-3.0-or-later](https://www.gnu.org/licenses/gpl-3.0-standalone.html) licensed
(new module_utils can also be [BSD-2-clause](https://opensource.org/licenses/BSD-2-Clause) licensed);
- Make sure that new plugins and modules have tests (unit tests, integration tests, or both); it is preferable to have some tests

View File

@@ -6,7 +6,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
# Community General Collection
[![Documentation](https://img.shields.io/badge/docs-brightgreen.svg)](https://docs.ansible.com/ansible/latest/collections/community/general/)
[![Documentation](https://img.shields.io/badge/docs-brightgreen.svg)](https://docs.ansible.com/projects/ansible/latest/collections/community/general/)
[![Build Status](https://dev.azure.com/ansible/community.general/_apis/build/status/CI?branchName=stable-10)](https://dev.azure.com/ansible/community.general/_build?definitionId=31)
[![EOL CI](https://github.com/ansible-collections/community.general/actions/workflows/ansible-test.yml/badge.svg?branch=stable-10)](https://github.com/ansible-collections/community.general/actions)
[![Nox CI](https://github.com/ansible-collections/community.general/actions/workflows/nox.yml/badge.svg?branch=stable-10)](https://github.com/ansible-collections/community.general/actions)
@@ -15,15 +15,15 @@ SPDX-License-Identifier: GPL-3.0-or-later
This repository contains the `community.general` Ansible Collection. The collection is a part of the Ansible package and includes many modules and plugins supported by Ansible community which are not part of more specialized community collections.
You can find [documentation for this collection on the Ansible docs site](https://docs.ansible.com/ansible/latest/collections/community/general/).
You can find [documentation for this collection on the Ansible docs site](https://docs.ansible.com/projects/ansible/latest/collections/community/general/).
Please note that this collection does **not** support Windows targets. Only connection plugins included in this collection might support Windows targets, and will explicitly mention that in their documentation if they do so.
## Code of Conduct
We follow [Ansible Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html) in all our interactions within this project.
We follow [Ansible Code of Conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html) in all our interactions within this project.
If you encounter abusive behavior violating the [Ansible Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html), please refer to the [policy violations](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html#policy-violations) section of the Code of Conduct for information on how to raise a complaint.
If you encounter abusive behavior violating the [Ansible Code of Conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html), please refer to the [policy violations](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html#policy-violations) section of the Code of Conduct for information on how to raise a complaint.
## Communication
@@ -33,13 +33,13 @@ If you encounter abusive behavior violating the [Ansible Code of Conduct](https:
* [Social Spaces](https://forum.ansible.com/c/chat/4): gather and interact with fellow enthusiasts.
* [News & Announcements](https://forum.ansible.com/c/news/5): track project-wide announcements including social events.
* The Ansible [Bullhorn newsletter](https://docs.ansible.com/ansible/devel/community/communication.html#the-bullhorn): used to announce releases and important changes.
* The Ansible [Bullhorn newsletter](https://docs.ansible.com/projects/ansible/devel/community/communication.html#the-bullhorn): used to announce releases and important changes.
For more information about communication, see the [Ansible communication guide](https://docs.ansible.com/ansible/devel/community/communication.html).
For more information about communication, see the [Ansible communication guide](https://docs.ansible.com/projects/ansible/devel/community/communication.html).
## Tested with Ansible
Tested with the current ansible-core 2.15, ansible-core 2.16, ansible-core 2.17, ansible-core 2.18, ansible-core 2.19 releases and the current development version of ansible-core. Ansible-core versions before 2.15.0 are not supported. This includes all ansible-base 2.10 and Ansible 2.9 releases.
Tested with the current ansible-core 2.15, ansible-core 2.16, ansible-core 2.17, ansible-core 2.18, ansible-core 2.19, and ansible-core 2.20 releases. Ansible-core versions before 2.15.0 are not supported. This includes all ansible-base 2.10 and Ansible 2.9 releases.
## External requirements
@@ -47,7 +47,7 @@ Some modules and plugins require external libraries. Please check the requiremen
## Included content
Please check the included content on the [Ansible Galaxy page for this collection](https://galaxy.ansible.com/ui/repo/published/community/general/) or the [documentation on the Ansible docs site](https://docs.ansible.com/ansible/latest/collections/community/general/).
Please check the included content on the [Ansible Galaxy page for this collection](https://galaxy.ansible.com/ui/repo/published/community/general/) or the [documentation on the Ansible docs site](https://docs.ansible.com/projects/ansible/latest/collections/community/general/).
## Using this collection
@@ -76,7 +76,7 @@ You can also install a specific version of the collection, for example, if you n
ansible-galaxy collection install community.general:==X.Y.Z
```
See [Ansible Using collections](https://docs.ansible.com/ansible/latest/user_guide/collections_using.html) for more details.
See [Ansible Using collections](https://docs.ansible.com/projects/ansible/latest/user_guide/collections_using.html) for more details.
## Contributing to this collection
@@ -90,13 +90,13 @@ You don't know how to start? Refer to our [contribution guide](https://github.co
The current maintainers are listed in the [commit-rights.md](https://github.com/ansible-collections/community.general/blob/main/commit-rights.md#people) file. If you have questions or need help, feel free to mention them in the proposals.
You can find more information in the [developer guide for collections](https://docs.ansible.com/ansible/devel/dev_guide/developing_collections.html#contributing-to-collections), and in the [Ansible Community Guide](https://docs.ansible.com/ansible/latest/community/index.html).
You can find more information in the [developer guide for collections](https://docs.ansible.com/projects/ansible/devel/dev_guide/developing_collections.html#contributing-to-collections), and in the [Ansible Community Guide](https://docs.ansible.com/projects/ansible/latest/community/index.html).
Also for some notes specific to this collection see [our CONTRIBUTING documentation](https://github.com/ansible-collections/community.general/blob/main/CONTRIBUTING.md).
### Running tests
See [here](https://docs.ansible.com/ansible/devel/dev_guide/developing_collections.html#testing-collections).
See [here](https://docs.ansible.com/projects/ansible/devel/dev_guide/developing_collections.html#testing-collections).
## Collection maintenance
@@ -110,7 +110,7 @@ It is necessary for maintainers of this collection to be subscribed to:
* The collection itself (the `Watch` button → `All Activity` in the upper right corner of the repository's homepage).
* The "Changes Impacting Collection Contributors and Maintainers" [issue](https://github.com/ansible-collections/overview/issues/45).
They also should be subscribed to Ansible's [The Bullhorn newsletter](https://docs.ansible.com/ansible/devel/community/communication.html#the-bullhorn).
They also should be subscribed to Ansible's [The Bullhorn newsletter](https://docs.ansible.com/projects/ansible/devel/community/communication.html#the-bullhorn).
## Publishing New Version
@@ -129,9 +129,9 @@ See [this issue](https://github.com/ansible-collections/community.general/issues
## More information
- [Ansible Collection overview](https://github.com/ansible-collections/overview)
- [Ansible User guide](https://docs.ansible.com/ansible/latest/user_guide/index.html)
- [Ansible Developer guide](https://docs.ansible.com/ansible/latest/dev_guide/index.html)
- [Ansible Community code of conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html)
- [Ansible User guide](https://docs.ansible.com/projects/ansible/latest/user_guide/index.html)
- [Ansible Developer guide](https://docs.ansible.com/projects/ansible/latest/dev_guide/index.html)
- [Ansible Community code of conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html)
## Licensing

View File

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

View File

@@ -2020,3 +2020,117 @@ releases:
- 151-connection-paramiko.yml
- become-pipelining.yml
release_date: '2025-08-11'
10.7.4:
changes:
bugfixes:
- Avoid deprecated functionality in ansible-core 2.20 (https://github.com/ansible-collections/community.general/pull/10687).
- apache2_module - check the ``cgi`` module restrictions only during activation
(https://github.com/ansible-collections/community.general/pull/10423).
- kdeconfig - ``kwriteconfig`` executable could not be discovered automatically
on systems with only ``kwriteconfig6`` installed. ``kwriteconfig6`` can
now be discovered by Ansible (https://github.com/ansible-collections/community.general/issues/10746,
https://github.com/ansible-collections/community.general/pull/10751).
- monit - fix crash caused by an unknown status value returned from the monit
service (https://github.com/ansible-collections/community.general/issues/10742,
https://github.com/ansible-collections/community.general/pull/10743).
- pids - prevent error when an empty string is provided for ``name`` (https://github.com/ansible-collections/community.general/issues/10672,
https://github.com/ansible-collections/community.general/pull/10688).
- selective callback plugin - specify ``ansible_loop_var`` instead of the
explicit value ``item`` when printing task result (https://github.com/ansible-collections/community.general/pull/10752).
release_summary: Regular bugfix release.
fragments:
- 10.7.4.yml
- 10423-apache_module-condition.yml
- 10687-deprecations.yml
- 10688-pids.yml
- 10743-monit-handle-unknown-status.yml
- 10751-kdeconfig-support-kwriteconfig6.yml
- 10752-selective-hardcoded-loop-var.yml
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'
10.7.6:
changes:
bugfixes:
- gitlab_runner - fix exception in check mode when a new runner is created
(https://github.com/ansible-collections/community.general/issues/8854).
- omapi_host - make return values compatible with ansible-core 2.19 and Python
3 (https://github.com/ansible-collections/community.general/pull/11001).
- onepassword_doc and onepassword_ssh_key lookup plugins - ensure that all
connection parameters are passed to CLI class (https://github.com/ansible-collections/community.general/pull/10965).
- pritunl_user - improve resilience when comparing user parameters if remote
fields are ``null`` or missing. List parameters (``groups``, ``mac_addresses``)
now safely default to empty lists for comparison and avoids ``KeyError``
issues (https://github.com/ansible-collections/community.general/issues/10954,
https://github.com/ansible-collections/community.general/pull/10955).
- random_string lookup plugin - replace ``random.SystemRandom()`` with ``secrets.SystemRandom()``
when generating strings. This has no practical effect, as both are the same
(https://github.com/ansible-collections/community.general/pull/10893).
- terraform - fix bug when ``null`` values inside complex vars are throwing
error instead of being passed to terraform. Now terraform can handle ``null``s
in ``complex_vars`` itself (https://github.com/ansible-collections/community.general/pull/10961).
release_summary: Regular bugfix release.
security_fixes:
- 'keycloak_user - the parameter ``credentials[].value`` is now marked as
``no_log=true``. Before it was logged by Ansible, unless the task was marked
as ``no_log: true``. Since this parameter can be used for passwords, this
resulted in credential leaking (https://github.com/ansible-collections/community.general/issues/11000,
https://github.com/ansible-collections/community.general/pull/11005).'
fragments:
- 10.7.6.yml
- 10918-gitlab-runner-fix-check-mode.yml
- 10955-pritunl_user-null-missing-params.yaml
- 10961-terraform-complexvars-null-bugfix.yaml
- 10965-onepassword-bugfix.yml
- 11001-omapi.yml
- 11005-keycloak_user.yml
- replace-random-with-secrets.yml
release_date: '2025-11-02'
10.7.7:
changes:
bugfixes:
- monit - add delay of 0.5 seconds after state change and check for status
(https://github.com/ansible-collections/community.general/pull/11255).
release_summary: Bugfix release.
fragments:
- 10.7.7.yml
- 11255-monit-integrationtests.yml
release_date: '2025-12-29'
10.7.8:
changes:
bugfixes:
- python_requirements_info - use ``importlib.metadata`` if ``pkg_resources``
from ``setuptools`` cannot be imported. That module has been removed from
setuptools 82.0.0 (https://github.com/ansible-collections/community.general/issues/11491,
https://github.com/ansible-collections/community.general/pull/11492).
release_summary: Bugfix release.
fragments:
- 10.7.8.yml
- 11492-python_requires_info.yml
release_date: '2026-02-23'

View File

@@ -0,0 +1,2 @@
minor_changes:
- "mattermost, rocketchat, slack - update default ``icon_url`` to ansible favicon (https://github.com/ansible-collections/community.general/pull/11909)."

View File

@@ -7,7 +7,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
Committers Guidelines for community.general
===========================================
This document is based on the [Ansible committer guidelines](https://github.com/ansible/ansible/blob/b57444af14062ec96e0af75fdfc2098c74fe2d9a/docs/docsite/rst/community/committer_guidelines.rst) ([latest version](https://docs.ansible.com/ansible/devel/community/committer_guidelines.html)).
This document is based on the [Ansible committer guidelines](https://github.com/ansible/ansible/blob/b57444af14062ec96e0af75fdfc2098c74fe2d9a/docs/docsite/rst/community/committer_guidelines.rst) ([latest version](https://docs.ansible.com/projects/ansible/devel/community/committer_guidelines.html)).
These are the guidelines for people with commit privileges on the Ansible Community General Collection GitHub repository. Please read the guidelines before you commit.
@@ -45,7 +45,7 @@ Individuals with direct commit access to this collection repository are entruste
- Do not commit directly.
- Do not merge your own PRs. Someone else should have a chance to review and approve the PR merge. You have a small amount of leeway here for very minor changes.
- Do not forget about non-standard / alternate environments. Consider the alternatives. Yes, people have bad/unusual/strange environments (like binaries from multiple init systems installed), but they are the ones who need us the most.
- Do not drag your community team members down. Discuss the technical merits of any pull requests you review. Avoid negativity and personal comments. For more guidance on being a good community member, read the [Ansible Community Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html).
- Do not drag your community team members down. Discuss the technical merits of any pull requests you review. Avoid negativity and personal comments. For more guidance on being a good community member, read the [Ansible Community Code of Conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html).
- Do not forget about the maintenance burden. High-maintenance features may not be worth adding.
- Do not break playbooks. Always keep backwards compatibility in mind.
- Do not forget to keep it simple. Complexity breeds all kinds of problems.

View File

@@ -22,6 +22,7 @@ The same example from the Developer Guide would become:
from ansible_collections.community.general.plugins.module_utils import deps
with deps.declare("foo"):
import foo

View File

@@ -21,7 +21,7 @@ That is where ``ModuleHelper`` comes to assistance: a lot of that boilerplate co
Quickstart
""""""""""
See the `example from Ansible documentation <https://docs.ansible.com/ansible/latest/dev_guide/developing_modules_general.html#creating-a-module>`_
See the `example from Ansible documentation <https://docs.ansible.com/projects/ansible/latest/dev_guide/developing_modules_general.html#creating-a-module>`_
written with ``ModuleHelper``.
But bear in mind that it does not showcase all of MH's features:
@@ -75,6 +75,7 @@ section above, but there are more elements that will take part in it.
from ansible_collections.community.general.plugins.module_utils.module_helper import ModuleHelper
class MyTest(ModuleHelper):
# behavior for module paramaters ONLY, see below for further information
output_params = ()
@@ -272,9 +273,9 @@ With that, MH will automatically generate the diff output for variables that hav
class MyTest(ModuleHelper):
diff_params = ('value', )
def __run__(self):
# example from community.general.gio_mime
self.vars.set_meta("handler", initial_value=gio_mime_get(self.runner, self.vars.mime_type), diff=True, change=True)
def __run__(self):
# example from community.general.gio_mime
self.vars.set_meta("handler", initial_value=gio_mime_get(self.runner, self.vars.mime_type), diff=True, change=True)
.. important::
@@ -569,9 +570,9 @@ The other option is to use the parameter ``value``, in which case the method wil
References
^^^^^^^^^^
- `Ansible Developer Guide <https://docs.ansible.com/ansible/latest/dev_guide/index.html>`_
- `Creating a module <https://docs.ansible.com/ansible/latest/dev_guide/developing_modules_general.html#creating-a-module>`_
- `Returning ansible facts <https://docs.ansible.com/ansible/latest/reference_appendices/common_return_values.html#ansible-facts>`_
- `Ansible Developer Guide <https://docs.ansible.com/projects/ansible/latest/dev_guide/index.html>`_
- `Creating a module <https://docs.ansible.com/projects/ansible/latest/dev_guide/developing_modules_general.html#creating-a-module>`_
- `Returning ansible facts <https://docs.ansible.com/projects/ansible/latest/reference_appendices/common_return_values.html#ansible-facts>`_
- :ref:`ansible_collections.community.general.docsite.guide_vardict`

View File

@@ -5,7 +5,7 @@
namespace: community
name: general
version: 10.7.3
version: 10.7.9
readme: README.md
authors:
- Ansible (https://github.com/ansible)
@@ -16,6 +16,6 @@ license_file: COPYING
tags:
- community
repository: https://github.com/ansible-collections/community.general
documentation: https://docs.ansible.com/ansible/latest/collections/community/general/
documentation: https://docs.ansible.com/projects/ansible/latest/collections/community/general/
homepage: https://github.com/ansible-collections/community.general
issues: https://github.com/ansible-collections/community.general/issues

View File

@@ -88,7 +88,7 @@ plugin_routing:
deprecation:
removal_version: 12.0.0
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:
docker:
redirect: community.docker.docker

View File

@@ -94,7 +94,7 @@ EXAMPLES = r"""
from re import compile as re_compile
from ansible.plugins.become import BecomeBase
from ansible.module_utils._text import to_bytes
from ansible.module_utils.common.text.converters import to_bytes
ansi_color_codes = re_compile(to_bytes(r'\x1B\[[0-9;]+m'))

View File

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

View File

@@ -80,7 +80,7 @@ EXAMPLES = r"""
from re import compile as re_compile
from ansible.plugins.become import BecomeBase
from ansible.module_utils._text import to_bytes
from ansible.module_utils.common.text.converters import to_bytes
ansi_color_codes = re_compile(to_bytes(r"\x1B\[[0-9;]+m"))

View File

@@ -54,7 +54,7 @@ from multiprocessing import Lock
from itertools import chain
from ansible.errors import AnsibleError
from ansible.module_utils.common._collections_compat import MutableSet
from collections.abc import MutableSet
from ansible.plugins.cache import BaseCacheModule
from ansible.utils.display import Display

View File

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

View File

@@ -44,8 +44,7 @@ options:
# TODO: determine whether it is OK to change to: type: float
"""
import codecs
import os
import yaml
@@ -60,9 +59,9 @@ class CacheModule(BaseFileCacheModule):
"""
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()
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)

View File

@@ -27,8 +27,7 @@ try:
except ImportError:
pass
from ansible.module_utils.six import binary_type, text_type
from ansible.module_utils.common._collections_compat import MutableMapping, MutableSequence
from collections.abc import MutableMapping, MutableSequence
from ansible.plugins.callback.default import CallbackModule as CallbackModule_default
from ansible.utils.color import colorize, hostcolor
from ansible.utils.display import Display
@@ -236,7 +235,7 @@ class CallbackModule(CallbackModule_default):
# Remove empty attributes (list, dict, str)
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]:
del result[attr]

View File

@@ -39,7 +39,7 @@ notes:
seealso:
- name: default default Ansible screen output
description: The official documentation on the B(default) callback plugin.
link: https://docs.ansible.com/ansible/latest/plugins/callback/default.html
link: https://docs.ansible.com/projects/ansible/latest/plugins/callback/default.html
requirements:
- set as stdout_callback in configuration
options:

View File

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

View File

@@ -34,7 +34,7 @@ import json
from ansible.utils.path import makedirs_safe
from ansible.module_utils.common.text.converters import to_bytes
from ansible.module_utils.common._collections_compat import MutableMapping
from collections.abc import MutableMapping
from ansible.parsing.ajson import AnsibleJSONEncoder
from ansible.plugins.callback import CallbackBase

View File

@@ -66,7 +66,8 @@ options:
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.urls import open_url
from ansible.plugins.callback import CallbackBase

View File

@@ -97,7 +97,7 @@ options:
otel_exporter_otlp_traces_protocol:
type: str
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
U(https://opentelemetry-python.readthedocs.io/en/latest/sdk/environment_variables.html#envvar-OTEL_EXPORTER_OTLP_TRACES_PROTOCOL).
default: grpc
@@ -137,14 +137,12 @@ import json
import os
import socket
import uuid
from time import time_ns
from collections import OrderedDict
from os.path import basename
from time import time_ns
from urllib.parse import urlparse
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
try:
@@ -499,9 +497,9 @@ class CallbackModule(CallbackBase):
self.otel_exporter_otlp_traces_protocol = None
if OTEL_LIBRARY_IMPORT_ERROR:
raise_from(
AnsibleError('The `opentelemetry-api`, `opentelemetry-exporter-otlp` or `opentelemetry-sdk` must be installed to use this plugin'),
OTEL_LIBRARY_IMPORT_ERROR)
raise AnsibleError(
'The `opentelemetry-api`, `opentelemetry-exporter-otlp` or `opentelemetry-sdk` must be installed to use this plugin'
) from OTEL_LIBRARY_IMPORT_ERROR
self.tasks_data = OrderedDict()

View File

@@ -208,7 +208,7 @@ class CallbackModule(CallbackBase):
stderr = [r.get('exception', None), r.get('module_stderr', None)]
stderr = "\n".join([e for e in stderr if e]).strip()
self._print_host_or_item(r['item'],
self._print_host_or_item(r[r['ansible_loop_var']],
r.get('changed', False),
to_text(r.get('msg', '')),
r.get('diff', None),

View File

@@ -75,11 +75,11 @@ import os
import os.path
import subprocess
import traceback
from shlex import quote as shlex_quote
from ansible.errors import AnsibleError
from ansible.module_utils.basic import is_executable
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.plugins.connection import ConnectionBase, BUFSIZE
from ansible.utils.display import Display

View File

@@ -80,7 +80,7 @@ from subprocess import call, Popen, PIPE
from ansible.errors import AnsibleError, AnsibleConnectionFailure, AnsibleFileNotFound
from ansible.module_utils.common.process import get_bin_path
from ansible.module_utils._text import to_bytes, to_text
from ansible.module_utils.common.text.converters import to_bytes, to_text
from ansible.plugins.connection import ConnectionBase

View File

@@ -38,9 +38,9 @@ import os
import os.path
import subprocess
import traceback
from shlex import quote as shlex_quote
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.text.converters import to_bytes, to_native, to_text
from ansible.plugins.connection import ConnectionBase, BUFSIZE

View File

@@ -31,9 +31,9 @@ import os
import os.path
import subprocess
import traceback
from shlex import quote as shlex_quote
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.text.converters import to_bytes
from ansible.plugins.connection import ConnectionBase, BUFSIZE

View File

@@ -12,7 +12,7 @@ class ModuleDocFragment(object):
options:
venv:
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.
type: path
settings:

View File

@@ -80,5 +80,6 @@ options: {}
notes:
- This module uses JSON-RPC over HTTP(S) to communicate with the FreeIPA server.
If you need to enroll the managed node into FreeIPA realm, you might want to consider using the collection
L(freeipa.ansible_freeipa, https://galaxy.ansible.com/ui/repo/published/freeipa/ansible_freeipa/), but that will require shell access to the managed node.
L(freeipa.ansible_freeipa, https://galaxy.ansible.com/ui/repo/published/freeipa/ansible_freeipa/), but shell access to one
node from the realm is required to manage the deployment.
"""

View File

@@ -36,7 +36,7 @@ _value:
"""
from ansible.errors import AnsibleFilterError
from ansible.module_utils.common._collections_compat import Sequence
from collections.abc import Sequence
from collections import Counter

View File

@@ -45,10 +45,10 @@ _value:
"""
from io import StringIO
from configparser import ConfigParser
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):
@@ -73,7 +73,7 @@ class IniParser(ConfigParser):
def from_ini(obj):
''' 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)}')
parser = IniParser()

View File

@@ -54,7 +54,7 @@ _value:
"""
from ansible.errors import AnsibleFilterError
from ansible.module_utils.common._collections_compat import Mapping, Sequence
from collections.abc import Mapping, Sequence
def groupby_as_dict(sequence, attribute):

View File

@@ -196,8 +196,7 @@ _value:
"""
from ansible.errors import AnsibleFilterError
from ansible.module_utils.six import string_types
from ansible.module_utils.common._collections_compat import Mapping, Sequence
from collections.abc import Mapping, Sequence
from ansible.utils.vars import merge_hash
from collections import defaultdict
@@ -257,7 +256,7 @@ def lists_mergeby(*terms, **kwargs):
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. "
"%s is %s")
raise AnsibleFilterError(msg % (index, type(index)))

View File

@@ -45,14 +45,13 @@ import re
from random import Random, SystemRandom
from ansible.errors import AnsibleFilterError
from ansible.module_utils.six import string_types
def random_mac(value, seed=None):
''' takes string prefix, and return it completed with random bytes
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)' %
(type(value), value))

View File

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

View File

@@ -119,8 +119,7 @@ except ImportError:
HAS_PRETTYTABLE = False
from ansible.errors import AnsibleFilterError
from ansible.module_utils._text import to_text
from ansible.module_utils.six import string_types
from ansible.module_utils.common.text.converters import to_text
class TypeValidationError(AnsibleFilterError):
@@ -131,7 +130,7 @@ class TypeValidationError(AnsibleFilterError):
expected: Description of expected type
"""
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}")
@@ -160,7 +159,7 @@ def _validate_list_param(param, param_name, ensure_strings=True):
if ensure_strings:
for item in param:
if not isinstance(item, string_types):
if not isinstance(item, str):
# Maintain original error message format
if param_name == "column_order":
error_msg = "a string for column name"
@@ -186,7 +185,7 @@ def _match_key(item_dict, lookup_key):
return lookup_key
# 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:
return True
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
for key, value in column_alignments.items():
# 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")
# 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")
# Check that values are valid alignments
@@ -394,7 +393,7 @@ def to_prettytable(data, *args, **kwargs):
row.append(item.get(matched_key, ""))
else:
# 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:
row.append(item.get(reverse_key_map[lower_col], ""))
else:

View File

@@ -49,7 +49,6 @@ _value:
from unicodedata import normalize
from ansible.errors import AnsibleFilterError
from ansible.module_utils.six import text_type
try:
from ansible.errors import AnsibleTypeError
@@ -69,7 +68,7 @@ def unicode_normalize(data, form='NFC'):
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))
if form not in ('NFC', 'NFD', 'NFKC', 'NFKD'):

View File

@@ -131,7 +131,6 @@ import socket
from ansible.errors import AnsibleError
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
@@ -260,7 +259,7 @@ class InventoryModule(BaseInventoryPlugin, Cacheable):
self.cobbler = xmlrpc_client.Server(self.cobbler_url, allow_none=True)
self.token = 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.use_cache = cache and self.get_option('cache')

View File

@@ -96,11 +96,11 @@ compose:
"""
import json
from urllib.error import HTTPError
from ansible.errors import AnsibleParserError
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable
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

View File

@@ -171,12 +171,12 @@ import json
import re
import time
import os
from urllib.parse import urlencode
from ansible.plugins.inventory import BaseInventoryPlugin
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.six import raise_from
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.plugin_utils.unsafe import make_unsafe
@@ -1094,9 +1094,7 @@ class InventoryModule(BaseInventoryPlugin):
Returns:
None"""
if IPADDRESS_IMPORT_ERROR:
raise_from(
AnsibleError('another_library must be installed to use this plugin'),
IPADDRESS_IMPORT_ERROR)
raise AnsibleError('another_library must be installed to use this plugin') from IPADDRESS_IMPORT_ERROR
super(InventoryModule, self).parse(inventory, loader, path, cache=False)
# Read the inventory YAML file

View File

@@ -62,13 +62,13 @@ groups:
import json
from sys import version as python_version
from urllib.parse import urljoin
from ansible.errors import AnsibleError
from ansible.module_utils.urls import open_url
from ansible.plugins.inventory import BaseInventoryPlugin
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.six.moves.urllib.parse import urljoin
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe

View File

@@ -224,13 +224,12 @@ want_proxmox_nodes_ansible_host: true
import itertools
import re
from urllib.parse import urlencode
from ansible.module_utils.common._collections_compat import MutableMapping
from ansible.errors import AnsibleError
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_collections.community.general.plugins.module_utils.version import LooseVersion
@@ -498,7 +497,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
out_val[k] = v
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(",")):
# split off strings with commas to a dict
# skip over any keys that cannot be processed

View File

@@ -128,9 +128,8 @@ from ansible_collections.community.general.plugins.module_utils.scaleway import
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
from ansible.module_utils.urls import open_url
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):
@@ -334,7 +333,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable):
def parse(self, inventory, loader, path, cache=True):
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)
self._read_config_data(path=path)

View File

@@ -77,7 +77,7 @@ from subprocess import Popen, PIPE
from ansible.errors import AnsibleParserError
from ansible.module_utils.common.text.converters import to_bytes, to_text
from ansible.module_utils.common._collections_compat import MutableMapping
from collections.abc import MutableMapping
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable, Cacheable
from ansible.module_utils.common.process import get_bin_path

View File

@@ -112,7 +112,8 @@ _raw:
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.plugins.lookup import LookupBase
from ansible.module_utils.common.text.converters import to_text

View File

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

View File

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

View File

@@ -75,8 +75,9 @@ except ImportError:
import time
import json
from urllib.error import HTTPError
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.plugins.lookup import LookupBase
from ansible.utils.display import Display

View File

@@ -63,16 +63,18 @@ RETURN = '''
the same environment variable(s), the last one returned by the Manifold API will take precedence.
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.plugins.lookup import LookupBase
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.utils.display import Display
from traceback import format_exception
import json
import sys
display = Display()

View File

@@ -86,7 +86,6 @@ from ansible.plugins.lookup import LookupBase
from ansible.errors import AnsibleLookupError, AnsibleOptionsError
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.six import with_metaclass
from ansible_collections.community.general.plugins.module_utils.onepassword import OnePasswordConfig
@@ -99,7 +98,7 @@ def _lower_if_possible(value):
return value
class OnePassCLIBase(with_metaclass(abc.ABCMeta, object)):
class OnePassCLIBase(object, metaclass=abc.ABCMeta):
bin = "op"
def __init__(
@@ -611,7 +610,8 @@ class OnePass(object):
def _get_cli_class(self, cli_class=None):
if cli_class is not None:
return cli_class(self.subdomain, self.domain, self.username, self.secret_key, self.master_password, self.service_account_token)
return cli_class(self.subdomain, self.domain, self.username, self.secret_key, self.master_password, self.service_account_token,
self.account_id, self.connect_host, self.connect_token)
version = OnePassCLIBase.get_current_version()
for cls in OnePassCLIBase.__subclasses__():

View File

@@ -16,7 +16,7 @@ short_description: Generates random string
version_added: '3.2.0'
description:
- Generates random string based upon the given constraints.
- Uses L(random.SystemRandom,https://docs.python.org/3/library/random.html#random.SystemRandom), so should be strong enough
- Uses L(secrets.SystemRandom,https://docs.python.org/3/library/secrets.html#secrets.SystemRandom), so should be strong enough
for cryptographic purposes.
options:
length:
@@ -149,6 +149,7 @@ _raw:
import base64
import random
import secrets
import string
from ansible.errors import AnsibleLookupError
@@ -178,7 +179,7 @@ class LookupModule(LookupBase):
lower_chars = string.ascii_lowercase
upper_chars = string.ascii_uppercase
special_chars = string.punctuation
random_generator = random.SystemRandom()
random_generator = secrets.SystemRandom()
self.set_options(var_options=variables, direct=kwargs)

View File

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

View File

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

View File

View File

@@ -1626,7 +1626,7 @@ class KeycloakAPI(object):
return None
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)
if is_id:

View File

@@ -31,7 +31,7 @@ except ImportError:
from ansible.module_utils import six
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
from ansible.module_utils.common.text.converters import to_native
from ansible.module_utils.common._collections_compat import Mapping
from ansible.module_utils.six.moves.collections_abc import Mapping
def transform_list_to_dict(list_):

View File

@@ -23,7 +23,7 @@ notes:
seealso:
- name: C(ansible-galaxy) command manual page
description: Manual page for the command.
link: https://docs.ansible.com/ansible/latest/cli/ansible-galaxy.html
link: https://docs.ansible.com/projects/ansible/latest/cli/ansible-galaxy.html
requirements:
- ansible-core 2.11 or newer

View File

@@ -258,8 +258,8 @@ def main():
)
name = module.params['name']
if name == 'cgi' and _run_threaded(module):
module.fail_json(msg="Your MPM seems to be threaded. No automatic actions on module cgi possible.")
if name == 'cgi' and module.params['state'] == 'present' and _run_threaded(module):
module.fail_json(msg="Your MPM seems to be threaded, therefore enabling cgi module is not allowed.")
if not module.params['identifier']:
module.params['identifier'] = create_apache_identifier(module.params['name'])

View File

@@ -15,7 +15,7 @@ module: consul_kv
short_description: Manipulate entries in the key/value store of a Consul cluster
description:
- Allows the retrieval, addition, modification and deletion of key/value entries in a Consul cluster using the agent. The
entire contents of the record, including the indices, flags and session are returned as C(value).
entire contents of the record, including the indices, flags and session are returned as RV(ignore:value).
- If the O(key) represents a prefix then note that when a value is removed, the existing value if any is returned as part
of the results.
- See http://www.consul.io/docs/agent/http.html#kv for more details.
@@ -36,11 +36,11 @@ options:
state:
description:
- The action to take with the supplied key and value. If the state is V(present) and O(value) is set, the key contents
is set to the value supplied and C(changed) is set to V(true) only if the value was different to the current contents.
is set to the value supplied and RV(ignore:changed) is set to V(true) only if the value was different to the current contents.
If the state is V(present) and O(value) is not set, the existing value associated to the key is returned. The state
V(absent) is used to remove the key/value pair, again C(changed) is set to V(true) only if the key actually existed
V(absent) is used to remove the key/value pair, again RV(ignore:changed) is set to V(true) only if the key actually existed
prior to the removal. An attempt can be made to obtain or free the lock associated with a key/value pair with the
states V(acquire) or V(release) respectively. A valid session must be supplied to make the attempt C(changed) is V(true)
states V(acquire) or V(release) respectively. A valid session must be supplied to make the attempt RV(ignore:changed) is V(true)
if the attempt is successful, V(false) otherwise.
type: str
choices: [absent, acquire, present, release]

View File

@@ -80,7 +80,7 @@ EXAMPLES = r"""
webhook_token: "XXXYYY"
content: "This is a message from ansible"
username: Ansible
avatar_url: "https://docs.ansible.com/ansible/latest/_static/images/logo_invert.png"
avatar_url: "https://docs.ansible.com/favicon/favicon-32x32.png"
- name: Send a embedded message to the Discord channel
community.general.discord:
@@ -92,7 +92,7 @@ EXAMPLES = r"""
footer:
text: "Author: Ansible"
image:
url: "https://docs.ansible.com/ansible/latest/_static/images/logo_invert.png"
url: "https://docs.ansible.com/favicon/favicon-32x32.png"
- name: Send two embedded messages
community.general.discord:
@@ -104,12 +104,12 @@ EXAMPLES = r"""
footer:
text: "Author: Ansible"
image:
url: "https://docs.ansible.com/ansible/latest/_static/images/logo_invert.png"
url: "https://docs.ansible.com/favicon/favicon-32x32.png"
- title: "Second message"
description: "This is my first second message"
footer:
text: "Author: Ansible"
icon_url: "https://docs.ansible.com/ansible/latest/_static/images/logo_invert.png"
icon_url: "https://docs.ansible.com/favicon/favicon-32x32.png"
fields:
- name: "Field 1"
value: "Value of my first field"

View File

@@ -41,14 +41,14 @@ options:
choices: [bcachefs, btrfs, ext2, ext3, ext4, ext4dev, f2fs, lvm, ocfs2, reiserfs, xfs, vfat, swap, ufs]
description:
- Filesystem type to be created. This option is required with O(state=present) (or if O(state) is omitted).
- Ufs support has been added in community.general 3.4.0.
- Bcachefs support has been added in community.general 8.6.0.
- V(ufs) support has been added in community.general 3.4.0.
- V(bcachefs) support has been added in community.general 8.6.0.
type: str
aliases: [type]
dev:
description:
- Target path to block device (Linux) or character device (FreeBSD) or regular file (both).
- When setting Linux-specific filesystem types on FreeBSD, this module only works when applying to regular files, aka
- When setting Linux-specific filesystem types on FreeBSD, this module only works when applying to regular files, also known as
disk images.
- Currently V(lvm) (Linux-only) and V(ufs) (FreeBSD-only) do not support a regular file as their target O(dev).
- Support for character devices on FreeBSD has been added in community.general 3.4.0.
@@ -63,8 +63,9 @@ options:
resizefs:
description:
- If V(true), if the block device and filesystem size differ, grow the filesystem into the space.
- Supported for C(bcachefs), C(btrfs), C(ext2), C(ext3), C(ext4), C(ext4dev), C(f2fs), C(lvm), C(xfs), C(ufs) and C(vfat)
filesystems. Attempts to resize other filesystem types fail.
- >-
Supported when O(fstype) is one of: V(bcachefs), V(btrfs), V(ext2), V(ext3), V(ext4), V(ext4dev), V(f2fs), V(lvm), V(xfs), V(ufs) and V(vfat).
Attempts to resize other filesystem types fail.
- XFS only grows if mounted. Currently, the module is based on commands from C(util-linux) package to perform operations,
so resizing of XFS is not supported on FreeBSD systems.
- VFAT is likely to fail if C(fatresize < 1.04).
@@ -81,7 +82,7 @@ options:
- The UUID options specified in O(opts) take precedence over this value.
- See xfs_admin(8) (C(xfs)), tune2fs(8) (C(ext2), C(ext3), C(ext4), C(ext4dev)) for possible values.
- For O(fstype=lvm) the value is ignored, it resets the PV UUID if set.
- Supported for O(fstype) being one of C(bcachefs), C(ext2), C(ext3), C(ext4), C(ext4dev), C(lvm), or C(xfs).
- Supported for O(fstype) being one of V(bcachefs), V(ext2), V(ext3), V(ext4), V(ext4dev), V(lvm), or V(xfs).
- This is B(not idempotent). Specifying this option always results in a change.
- Mutually exclusive with O(resizefs).
type: str
@@ -93,7 +94,7 @@ requirements:
- On FreeBSD, either C(util-linux) or C(e2fsprogs) package is required.
notes:
- Potential filesystems on O(dev) are checked using C(blkid). In case C(blkid) is unable to detect a filesystem (and in
case C(fstyp) on FreeBSD is also unable to detect a filesystem), this filesystem is overwritten even if O(force) is V(false).
case C(fstyp) on FreeBSD is also unable to detect a filesystem), this filesystem is overwritten even if O(force=false).
- On FreeBSD systems, both C(e2fsprogs) and C(util-linux) packages provide a C(blkid) command that is compatible with this
module. However, these packages conflict with each other, and only the C(util-linux) package provides the command required
to not fail when O(state=absent).

View File

@@ -284,6 +284,8 @@ class GithubDeployKey(object):
body = info.get('body')
if body:
err = self.module.from_json(body)['message']
else:
err = None
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)

View File

@@ -345,7 +345,10 @@ class GitLabRunner(object):
'''
def create_runner(self, arguments):
if self._module.check_mode:
return True
class MockRunner:
def __init__(self):
self._attrs = {}
return MockRunner()
try:
if arguments.get('token') is not None:

View File

@@ -146,7 +146,7 @@ options:
type: str
required: false
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.
- Note that JIRA may not allow changing field values on specific transitions or states.
account_id:

View File

@@ -257,7 +257,7 @@ def main():
if module.params['kwriteconfig_path'] is not None:
kwriteconfig = module.get_bin_path(module.params['kwriteconfig_path'], required=True)
else:
for progname in ('kwriteconfig5', 'kwriteconfig', 'kwriteconfig4'):
for progname in ('kwriteconfig6', 'kwriteconfig5', 'kwriteconfig', 'kwriteconfig4'):
kwriteconfig = module.get_bin_path(progname)
if kwriteconfig is not None:
break

View File

@@ -93,7 +93,7 @@ EXAMPLES = r"""
auth_realm: "master"
auth_username: "admin"
realm: "master"
required_action:
required_actions:
- alias: "TERMS_AND_CONDITIONS"
name: "Terms and conditions"
providerId: "TERMS_AND_CONDITIONS"
@@ -108,7 +108,7 @@ EXAMPLES = r"""
auth_realm: "master"
auth_username: "admin"
realm: "master"
required_action:
required_actions:
- alias: "TERMS_AND_CONDITIONS"
enabled: false
state: "present"
@@ -121,7 +121,7 @@ EXAMPLES = r"""
auth_realm: "master"
auth_username: "admin"
realm: "master"
required_action:
required_actions:
- alias: "TERMS_AND_CONDITIONS"
state: "absent"
"""

View File

@@ -57,7 +57,7 @@ EXAMPLES = r"""
- name: Retrive info of a UserStorageProvider named myldap
community.general.keycloak_component_info:
auth_keycloak_url: http://localhost:8080/auth
auth_sername: admin
auth_username: admin
auth_password: password
auth_realm: master
realm: myrealm
@@ -67,7 +67,7 @@ EXAMPLES = r"""
- name: Retrive key info component
community.general.keycloak_component_info:
auth_keycloak_url: http://localhost:8080/auth
auth_sername: admin
auth_username: admin
auth_password: password
auth_realm: master
realm: myrealm
@@ -77,7 +77,7 @@ EXAMPLES = r"""
- name: Retrive all component from realm master
community.general.keycloak_component_info:
auth_keycloak_url: http://localhost:8080/auth
auth_sername: admin
auth_username: admin
auth_password: password
auth_realm: master
realm: myrealm
@@ -85,7 +85,7 @@ EXAMPLES = r"""
- name: Retrive all sub components of parent component filter by type
community.general.keycloak_component_info:
auth_keycloak_url: http://localhost:8080/auth
auth_sername: admin
auth_username: admin
auth_password: password
auth_realm: master
realm: myrealm

View File

@@ -364,7 +364,7 @@ def main():
else:
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:
composites = kc.get_role_composites(rolerep=before_role, clientid=clientid, realm=realm)
before_role['composites'] = []

View File

@@ -357,7 +357,7 @@ def main():
argument_spec['auth_username']['aliases'] = []
credential_spec = dict(
type=dict(type='str', required=True),
value=dict(type='str', required=True),
value=dict(type='str', required=True, no_log=True),
temporary=dict(type='bool', default=False)
)
client_consents_spec = dict(

View File

@@ -50,7 +50,7 @@ options:
- 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.
- 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.
type: str
lifetime:

View File

@@ -66,7 +66,7 @@ options:
type: str
description:
- URL for the message sender's icon.
default: https://docs.ansible.com/favicon.ico
default: https://docs.ansible.com/favicon/favicon.ico
priority:
type: str
description:
@@ -139,7 +139,7 @@ def main():
text=dict(type='str'),
channel=dict(type='str', default=None),
username=dict(type='str', default='Ansible'),
icon_url=dict(type='str', default='https://docs.ansible.com/favicon.ico'),
icon_url=dict(type='str', default='https://docs.ansible.com/favicon/favicon.ico'),
priority=dict(type='str', default=None, choices=['important', 'urgent']),
validate_certs=dict(default=True, type='bool'),
attachments=dict(type='list', elements='dict'),

View File

@@ -174,7 +174,11 @@ class Monit(object):
status_val = status_val.split(' | ')[0]
if ' - ' not in status_val:
status_val = status_val.replace(' ', '_')
return getattr(Status, status_val)
try:
return getattr(Status, status_val)
except AttributeError:
self.module.warn("Unknown monit status '%s', treating as execution failed" % status_val)
return Status.EXECUTION_FAILED
else:
status_val, substatus = status_val.split(' - ')
action, state = substatus.split()
@@ -255,6 +259,9 @@ class Monit(object):
def change_state(self, state, expected_status, invert_expected=None):
current_status = self.get_status()
self.run_command(STATE_COMMAND_MAP[state])
# Give monit daemon a moment to process the command before checking status
# to avoid race condition where HTTP interface may be temporarily unresponsive
time.sleep(0.5)
status = self.wait_for_status_change(current_status)
status = self.wait_for_monit_to_stop_pending(status)
status_match = status.value == expected_status.value

View File

@@ -146,7 +146,7 @@ except ImportError:
pureomapi_found = False
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
from ansible.module_utils.common.text.converters import to_bytes, to_native
from ansible.module_utils.common.text.converters import to_bytes, to_native, to_text
class OmapiHostManager:
@@ -178,15 +178,18 @@ class OmapiHostManager:
@staticmethod
def unpack_facts(obj):
result = dict(obj)
result = {}
for k, v in dict(obj).items():
result[to_text(k)] = v
if 'hardware-address' in result:
result['hardware-address'] = to_native(unpack_mac(result[to_bytes('hardware-address')]))
result['hardware-address'] = to_native(unpack_mac(result['hardware-address']))
if 'ip-address' in result:
result['ip-address'] = to_native(unpack_ip(result[to_bytes('ip-address')]))
result['ip-address'] = to_native(unpack_ip(result['ip-address']))
if 'hardware-type' in result:
result['hardware-type'] = struct.unpack("!I", result[to_bytes('hardware-type')])
result['hardware-type'] = struct.unpack("!I", result['hardware-type'])
return result
@@ -234,8 +237,8 @@ class OmapiHostManager:
response_obj = self.unpack_facts(host_response.obj)
fields_to_update = {}
if to_bytes('ip-address', errors='surrogate_or_strict') not in response_obj or \
unpack_ip(response_obj[to_bytes('ip-address', errors='surrogate_or_strict')]) != self.module.params['ip']:
if 'ip-address' not in response_obj or \
response_obj['ip-address'] != self.module.params['ip']:
fields_to_update['ip-address'] = pack_ip(self.module.params['ip'])
# Name cannot be changed

View File

@@ -86,7 +86,7 @@ EXAMPLES = r"""
tasks:
- name: Create volume
packet_volume:
community.general.packet_volume:
description: "{{ volname }}"
project_id: "{{ project_id }}"
facility: ewr1
@@ -98,7 +98,7 @@ EXAMPLES = r"""
snapshot_frequency: 1day
- name: Create a device
packet_device:
community.general.packet_device:
project_id: "{{ project_id }}"
hostnames: "{{ devname }}"
operating_system: ubuntu_16_04

View File

@@ -128,7 +128,8 @@ notes:
- To use an AUR helper (O(executable) option), a few extra setup steps might be required beforehand. For example, a dedicated
build user with permissions to install packages could be necessary.
- 'In the tests, while using C(yay) as the O(executable) option, the module failed to install AUR packages with the error:
C(error: target not found: <pkg>).'
C(error: target not found: <pkg>). This is caused by an incompatibility of yay with the arguments passed by this module.
See L(yay bug #1744 report for details, https://github.com/Jguer/yay/issues/1744).'
- The common return values `stdout` and `stderr` are returned upon success, when needed, since community.general 4.1.0.
"""

View File

@@ -195,7 +195,7 @@ class Pids(object):
self._pids = []
def execute(self):
if self._name:
if self._name is not None:
self._pids = self._ps.get_pids_by_name(self._name)
else:
try:

View File

@@ -210,16 +210,18 @@ def add_or_update_pritunl_user(module):
for key in user_params.keys():
# When a param is not specified grab existing ones to prevent from changing it with the PUT request
if user_params[key] is None:
user_params[key] = users[0][key]
user_params[key] = users[0].get(key)
# 'groups' and 'mac_addresses' are list comparison
if key == "groups" or key == "mac_addresses":
if set(users[0][key]) != set(user_params[key]):
remote_list = users[0].get(key) or []
local_list = user_params[key] or []
if set(remote_list) != set(local_list):
user_params_changed = True
# otherwise it is either a boolean or a string
else:
if users[0][key] != user_params[key]:
if users[0].get(key) != user_params[key]:
user_params_changed = True
# Trigger a PUT on the API to update the current user if settings have changed

View File

@@ -123,15 +123,25 @@ import re
import sys
import operator
HAS_DISTUTILS = False
from ansible.module_utils.basic import AnsibleModule
from ansible_collections.community.general.plugins.module_utils.version import LooseVersion
HAS_IMPORTLIB_METADATA = False
try:
import pkg_resources
from ansible_collections.community.general.plugins.module_utils.version import LooseVersion
HAS_DISTUTILS = True
import importlib.metadata
HAS_IMPORTLIB_METADATA = True
except ImportError:
pass
from ansible.module_utils.basic import AnsibleModule
HAS_DISTUTILS = False
try:
import pkg_resources
HAS_DISTUTILS = True
except ImportError:
pass
operations = {
'<=': operator.le,
@@ -157,9 +167,9 @@ def main():
),
supports_check_mode=True,
)
if not HAS_DISTUTILS:
if not HAS_DISTUTILS and not HAS_IMPORTLIB_METADATA:
module.fail_json(
msg='Could not import "distutils" and "pkg_resources" libraries to introspect python environment.',
msg='Could not import "pkg_resources" or "importlib.metadata" libraries to introspect Python environment.',
python=sys.executable,
python_version=sys.version,
python_version_info=python_version_info,
@@ -180,12 +190,20 @@ def main():
pkg, op, version = match.groups()
if op is not None and op not in operations:
module.fail_json(msg="Failed to parse version requirement '{0}'. Operator must be one of >, <, <=, >=, or ==".format(dep))
try:
existing = pkg_resources.get_distribution(pkg).version
except pkg_resources.DistributionNotFound:
# not there
results['not_found'].append(pkg)
continue
if HAS_DISTUTILS:
try:
existing = pkg_resources.get_distribution(pkg).version
except pkg_resources.DistributionNotFound:
# not there
results['not_found'].append(pkg)
continue
else:
try:
existing = importlib.metadata.version(pkg)
except importlib.metadata.PackageNotFoundError:
# not there
results['not_found'].append(pkg)
continue
if op is None and version is None:
results['valid'][pkg] = {
'installed': existing,

View File

@@ -1111,7 +1111,7 @@ def main():
module.fail_json(msg=to_native(result['msg']))
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
if command == 'GracefulRestart':
command = 'PowerGracefulRestart'

View File

@@ -32,7 +32,7 @@ notes:
- It is possible to interact with C(subscription-manager) only as root, so root permissions are required to successfully
run this module.
- 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)
attributes (using O(syspurpose)).
requirements:

View File

@@ -63,7 +63,7 @@ options:
type: str
description:
- URL for the message sender's icon.
default: "https://docs.ansible.com/favicon.ico"
default: "https://docs.ansible.com/favicon/favicon.ico"
icon_emoji:
type: str
description:
@@ -203,14 +203,17 @@ def build_payload_for_rocketchat(module, text, channel, username, icon_url, icon
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:
module.fail_json(msg="Invalid Token specified, provide a valid 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:
module.fail_json(msg="failed to send message, return status=%s" % str(info['status']))
@@ -224,7 +227,7 @@ def main():
msg=dict(type='str', required=False),
channel=dict(type='str'),
username=dict(type='str', default='Ansible'),
icon_url=dict(type='str', default='https://docs.ansible.com/favicon.ico'),
icon_url=dict(type='str', default='https://docs.ansible.com/favicon/favicon.ico'),
icon_emoji=dict(type='str'),
link_names=dict(type='int', default=1, choices=[0, 1]),
validate_certs=dict(default=True, type='bool'),
@@ -248,7 +251,7 @@ def main():
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)
do_notify_rocketchat(module, domain, token, protocol, payload)
do_notify_rocketchat(module, domain, token, protocol, payload, is_pre740)
module.exit_json(msg="OK")

View File

@@ -113,36 +113,40 @@ EXAMPLES = r"""
region: fr-par
"""
RETURNS = """
{
"scaleway_lb": {
RETURN = r"""
scaleway_lb:
description: The load-balancer object.
returned: success
type: dict
sample:
{
"backend_count": 0,
"frontend_count": 0,
"description": "Description of my load-balancer",
"id": "00000000-0000-0000-0000-000000000000",
"instances": [
{
"id": "00000000-0000-0000-0000-000000000000",
"ip_address": "10.0.0.1",
"region": "fr-par",
"status": "ready"
},
{
"id": "00000000-0000-0000-0000-000000000000",
"ip_address": "10.0.0.2",
"region": "fr-par",
"status": "ready"
}
{
"id": "00000000-0000-0000-0000-000000000000",
"ip_address": "10.0.0.1",
"region": "fr-par",
"status": "ready"
},
{
"id": "00000000-0000-0000-0000-000000000000",
"ip_address": "10.0.0.2",
"region": "fr-par",
"status": "ready"
}
],
"ip": [
{
"id": "00000000-0000-0000-0000-000000000000",
"ip_address": "192.168.0.1",
"lb_id": "00000000-0000-0000-0000-000000000000",
"region": "fr-par",
"organization_id": "00000000-0000-0000-0000-000000000000",
"reverse": ""
}
{
"id": "00000000-0000-0000-0000-000000000000",
"ip_address": "192.168.0.1",
"lb_id": "00000000-0000-0000-0000-000000000000",
"region": "fr-par",
"organization_id": "00000000-0000-0000-0000-000000000000",
"reverse": ""
}
],
"name": "lb_ansible_test",
"organization_id": "00000000-0000-0000-0000-000000000000",
@@ -152,8 +156,7 @@ RETURNS = """
"first_tag",
"second_tag"
]
}
}
}
"""
import datetime

View File

@@ -73,7 +73,7 @@ options:
EXAMPLES = r"""
- name: Create an private network
community.general.scaleway_vpc:
community.general.scaleway_private_network:
project: '{{ scw_project }}'
name: 'vpc_one'
state: present
@@ -81,7 +81,7 @@ EXAMPLES = r"""
register: vpc_creation_task
- name: Make sure private network with name 'foo' is deleted in region par1
community.general.scaleway_vpc:
community.general.scaleway_private_network:
name: 'foo'
state: absent
region: par1

View File

@@ -83,7 +83,7 @@ options:
type: str
description:
- URL for the message sender's icon.
default: https://docs.ansible.com/favicon.ico
default: https://docs.ansible.com/favicon/favicon.ico
icon_emoji:
type: str
description:
@@ -445,7 +445,7 @@ def main():
channel=dict(type='str'),
thread_id=dict(type='str'),
username=dict(type='str', default='Ansible'),
icon_url=dict(type='str', default='https://docs.ansible.com/favicon.ico'),
icon_url=dict(type='str', default='https://docs.ansible.com/favicon/favicon.ico'),
icon_emoji=dict(type='str'),
link_names=dict(type='int', default=1, choices=[0, 1]),
parse=dict(type='str', choices=['none', 'full']),

View File

@@ -17,7 +17,7 @@ short_description: Retrieve facts for a device using SNMP
description:
- Retrieve facts for a device using SNMP, the facts will be inserted to the C(ansible_facts) key.
requirements:
- pysnmp
- pysnmp < 6.2.4 - that version removed components used by this module.
extends_documentation_fragment:
- community.general.attributes
- community.general.attributes.facts

View File

@@ -61,7 +61,7 @@ options:
signal:
type: str
description:
- The signal to send to the program/group, when combined with the 'signalled' state. Required when l(state=signalled).
- The signal to send to the program/group, when combined with the V(signalled) state. Required when l(state=signalled).
supervisorctl_path:
type: path
description:
@@ -116,6 +116,7 @@ EXAMPLES = r"""
state: restarted
"""
import os
from ansible.module_utils.basic import AnsibleModule, is_executable

View File

@@ -548,7 +548,9 @@ def main():
command.append('-parallelism=%d' % module.params.get('parallelism'))
def format_args(vars):
if isinstance(vars, str):
if vars is None:
return 'null'
elif isinstance(vars, str):
return '"{string}"'.format(string=vars.replace('\\', '\\\\').replace('"', '\\"')).replace('\n', '\\n')
elif isinstance(vars, bool):
if vars:
@@ -565,7 +567,7 @@ def main():
ret_out.append('{0}={{{1}}}'.format(k, process_complex_args(v)))
elif isinstance(v, list):
ret_out.append("{0}={1}".format(k, process_complex_args(v)))
elif isinstance(v, (integer_types, float, str, bool)):
elif isinstance(v, (integer_types, float, str, bool)) or v is None:
ret_out.append('{0}={1}'.format(k, format_args(v)))
else:
# only to handle anything unforeseen
@@ -577,7 +579,7 @@ def main():
l_out.append("{{{0}}}".format(process_complex_args(item)))
elif isinstance(item, list):
l_out.append("{0}".format(process_complex_args(item)))
elif isinstance(item, (str, integer_types, float, bool)):
elif isinstance(item, (str, integer_types, float, bool)) or item is None:
l_out.append(format_args(item))
else:
# only to handle anything unforeseen

View File

@@ -47,7 +47,7 @@ options:
aliases: [rtc]
choices: [local, UTC]
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 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).

Some files were not shown because too many files have changed in this diff Show More