Compare commits

...

57 Commits

Author SHA1 Message Date
Felix Fontein
334f8d3708 Release 11.4.7. 2026-04-20 12:33:14 +02:00
patchback[bot]
485b8b9f23 [PR #11812/e2a7dc46 backport][stable-11] sefcontext: flush in-process matchpathcon cache (#11853)
sefcontext: flush in-process matchpathcon cache (#11812)

* fix sefcontext: flush in-process matchpathcon cache after changes

Fixes https://github.com/ansible-collections/community.general/issues/888



* update changelog fragment with PR number and URL



---------


(cherry picked from commit e2a7dc467d)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 18:31:47 +02:00
patchback[bot]
865c96e66c [PR #11850/f8869af6 backport][stable-11] homebrew_cask: fix sudo_password failing with special characters (#11866)
* homebrew_cask: fix sudo_password failing with special characters (#11850)

* homebrew_cask: fix sudo_password with special characters in password

The SUDO_ASKPASS script embedded the password inside single quotes, which
breaks shell parsing whenever the password contains a single quote. Use a
quoted heredoc (cat <<'SUDO_PASS') instead, which treats the content
completely literally regardless of special characters.

Also replace .file.close() with .flush() (correct semantics — flushes
the write buffer without leaving the NamedTemporaryFile in a half-closed
state) and remove the redundant add_cleanup_file() call (the context
manager already deletes the file on exit).

Fixes #4957

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* homebrew_cask: add changelog fragment for #11850

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* homebrew_cask: fix sudo_password example and clarify ansible_become_password

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* homebrew_cask: use shlex.quote() for sudo_password instead of heredoc

shlex.quote() is the standard Python approach for shell-safe quoting
and handles all special characters without the edge cases of heredocs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit f8869af65f)

* Make Python 2 compatible.

---------

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2026-04-17 18:31:36 +02:00
patchback[bot]
14498b7ad1 [PR #11862/342a76d5 backport][stable-11] Remove unstable CI target (#11869)
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:23 +02:00
Felix Fontein
76372a8975 [stable-11] Fix flatpak module for Fedora 44 (#11847)
CI: Replace Fedora 43 with 44 for devel (#11836)

* Replace Fedora 43 with 44 for devel in CI.

* Adjust tests.

* Adjust flatpak module to Fedora 44.

(cherry picked from commit ef656cb9b6)
2026-04-17 07:03:28 +02:00
Felix Fontein
1fa6d37c0b [stable-11] CI: Temporarily skip failing callback unit tests for ansible-core 2.21+ (#11845)
CI: Temporarily skip failing callback unit tests for ansible-core 2.21+ (#11842)

Temporarily skip failing unit tests.

(cherry picked from commit 7884a3f2a2)
2026-04-16 21:44:57 +02:00
patchback[bot]
07704d22fa [PR #11826/7dcd3c1c backport][stable-11] lxd_container: document that config values must be strings (#11828)
lxd_container: document that config values must be strings (#11826)

Fixes #8307


(cherry picked from commit 7dcd3c1c45)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 22:01:53 +02:00
patchback[bot]
9343652086 [PR #11823/71723268 backport][stable-11] lvol: fix LVM version regex to handle date formats without dashes (#11830)
lvol: fix LVM version regex to handle date formats without dashes (#11823)

* lvol: fix LVM version regex to handle date formats without dashes

Fixes #5445



* lvol: add changelog fragment for issue 5445



---------


(cherry picked from commit 7172326868)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 22:01:44 +02:00
patchback[bot]
62c026968a [PR #11815/78d004d9 backport][stable-11] lvg: clarify desired-state semantics of pvs parameter in docs (#11822)
lvg: clarify desired-state semantics of pvs parameter in docs (#11815)

lvg: doc adjustment
(cherry picked from commit 78d004d96e)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2026-04-14 22:03:03 +02:00
Felix Fontein
a15260f85f Prepare 11.4.7. 2026-04-08 20:14:29 +02:00
patchback[bot]
bc13d83a64 [PR #11754/b780224d backport][stable-11] mssql_script: only pass params to cursor.execute() when provided (#11759)
mssql_script: only pass params to cursor.execute() when provided (#11754)

* mssql_script: only pass params to cursor.execute() when provided

Fixes #11699



* mssql_script: add changelog fragment for PR #11754



---------


(cherry picked from commit b780224d6d)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-08 20:06:04 +02:00
Felix Fontein
b9e5db4373 [stable-11] Change devel to stable-2.21 in CI (#11744)
Change devel to stable-2.21 in CI.
2026-04-07 08:43:44 +02:00
patchback[bot]
2e5d3a0e1f [PR #11720/982f9472 backport][stable-11] test(integration): fix for ansible-core devel changes in register (#11723)
test(integration): fix for ansible-core devel changes in register (#11720)

(cherry picked from commit 982f9472c5)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2026-04-03 07:34:50 +02:00
patchback[bot]
dabdc16010 [PR #11685/909458a6 backport][stable-11] docs: improve timezone module examples and add hwclock usage (#11695)
docs: improve timezone module examples and add hwclock usage (#11685)

* docs: add variable-based example for timezone module

### Summary
Added a variable-based example to the EXAMPLES section of the timezone module.

### Changes
- Added an example demonstrating how to set timezone dynamically using a variable

### Motivation
Using variables is a common practice in Ansible playbooks. This example helps users understand how to make the module usage more flexible and reusable.

* docs: improve timezone module examples with hwclock usage

### Summary
Improved the EXAMPLES section of the timezone module by adding a more meaningful, module-specific example.

### Changes
- Added an example demonstrating usage of the `hwclock` parameter
- Simplified examples to avoid redundancy
- Fixed formatting issues causing CI failures (invalid YAML, lint errors)

### Motivation
The previous examples were minimal and did not demonstrate module-specific features. This update adds a more practical use case and ensures the examples follow proper formatting and validation rules.

(cherry picked from commit 909458a661)

Co-authored-by: Anshjeet Mahir <anshjeetmahir123@gmail.com>
2026-03-27 12:45:07 +01:00
Felix Fontein
bd56572025 The next release will be 11.4.7. 2026-03-23 21:39:54 +01:00
Felix Fontein
2b22a3c60b Release 11.4.6. 2026-03-23 21:15:32 +01:00
patchback[bot]
4f418ce747 [PR #11656/4dad53ab backport][stable-11] counter_enabled callback: honor display_ok_hosts setting (#11666)
counter_enabled callback: honor display_ok_hosts setting (#11656)

* fix(callback/counter_enabled): honor display_ok_hosts setting

* add changelog frag

* Update changelogs/fragments/11656-counter_enabled-display_ok_hosts.yml

(cherry picked from commit 4dad53abac)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2026-03-23 20:34:32 +01:00
Felix Fontein
fb26dbfa31 Prepare 11.4.6. 2026-03-22 20:34:40 +01:00
patchback[bot]
4bd1bb8c2a [PR #11645/a09e879f backport][stable-11] xfconf: fix boolean return values (#11649)
xfconf: fix boolean return values (#11645)

* xfconf: fix boolean return values

* add changelog frag

(cherry picked from commit a09e879ff2)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2026-03-22 20:33:24 +01:00
patchback[bot]
a742525c89 [PR #11631/b4336659 backport][stable-11] CI: Remove FreeBSD 14.3 for devel, and replace macOS 15.3 with 26.3 (#11633)
CI: Remove FreeBSD 14.3 for devel, and replace macOS 15.3 with 26.3 (#11631)

* Replace FreeBSD 14.3 with 14.4, and macOS 15.3 with 26.3.

* FreeBSD 14.4 seems to have the same problem as FreeBSD 15.0, disabling for now.

(cherry picked from commit b4336659f6)

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-03-21 21:13:53 +01:00
Felix Fontein
badfef8070 [stable-11] CI: Replace apt_repository and apt_key with deb822_repository (#11625) (#11628)
CI: Replace apt_repository and apt_key with deb822_repository (#11625)

Replace apt_repository and apt_key with deb822_repository.

(cherry picked from commit bc22fbcaa0)
2026-03-20 08:06:15 +01:00
patchback[bot]
33ed69bc93 [PR #11612/5e4fbfee backport][stable-11] Update BOTMETA.yml (#11615)
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:02 +01:00
patchback[bot]
8736ff46f2 [PR #11541/4cd91ba4 backport][stable-11] Fix templating bug in iptables_state tests (#11571)
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:49 +01:00
patchback[bot]
543a292f4b [PR #11548/2f33ff10 backport][stable-11] keycloak_authentication: fix TypeError when flow has no authenticationExecutions (#11564)
keycloak_authentication: fix TypeError when flow has no authenticationExecutions (#11548)

* TIAAS-12174: fix(keycloak_authentication): handle None authenticationExecutions

When a flow is defined without authenticationExecutions, module.params.get()
returns None but the key still exists in the config dict. The 'in' check
passes but iterating over None raises TypeError.

Guard the iteration with an explicit None check.

* keycloak_authentication: add changelog fragment for NoneType fix

* keycloak_authentication: update changelog fragment with PR link

* Update plugins/modules/keycloak_authentication.py



* Changelog polishing

---------



(cherry picked from commit 2f33ff1041)

Co-authored-by: Ivan Kokalovic <67540157+koke1997@users.noreply.github.com>
Co-authored-by: Ivan Kokalovic <ivan.kokalovic@example.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2026-03-10 06:57:43 +01:00
patchback[bot]
a93ae0c1ae [PR #11552/aaef821f backport][stable-11] Update links to iocage. Current iocage documentation is at freebsd.gi… (#11553)
Update links to iocage. Current iocage documentation is at freebsd.gi… (#11552)

Update links to iocage. Current iocage documentation is at freebsd.github.io/iocage/

(cherry picked from commit aaef821f60)

Co-authored-by: Vladimir Botka <vbotka@gmail.com>
2026-03-06 05:49:49 +00:00
Felix Fontein
b247603961 [stable-11] Update tests to pass on macOS arm64 (#11544) (#11546)
Update tests to pass on macOS arm64 (#11544)

(cherry picked from commit 9b9d8eac09)

Co-authored-by: Matt Clay <matt@mystile.com>
2026-02-27 19:29:50 +01:00
Felix Fontein
d91ff5c282 The next release will be 11.4.6. 2026-02-23 18:23:41 +01:00
Felix Fontein
c66a43aa27 Release 11.4.5. 2026-02-23 17:48:41 +01:00
Felix Fontein
30ac14bfc1 Prepare 11.4.5. 2026-02-22 16:40:03 +01:00
Felix Fontein
d9e48f0488 [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)
2026-02-11 07:12:00 +01:00
patchback[bot]
80efe01bbf [PR #11484/63ddca7f backport][stable-11] supervisorctl: remove unstable tag from integration tests (#11492)
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:15 +01:00
Felix Fontein
7bfdae02e9 The next release will be 11.4.5. 2026-01-26 18:45:47 +01:00
Felix Fontein
a552266120 Release 11.4.4. 2026-01-26 18:22:40 +01:00
patchback[bot]
2c16874370 [PR #11440/53e1e86b backport][stable-11] Logstash plugin version fix (#11449)
Logstash plugin version fix (#11440)

* logstash_plugin: fix argument order when using version parameter

* logstash_plugin: add integration tests

* logstash_plugin: add changelog fragment

(cherry picked from commit 53e1e86bcc)

Co-authored-by: Nicolas Boutet <amd3002@gmail.com>
2026-01-26 06:26:54 +01:00
Felix Fontein
275961b4ad Prepare 11.4.4. 2026-01-20 22:42:33 +01:00
Felix Fontein
c083b2fa6c [stable-11] Update ignore.txt (#11428)
Update ignore.txt.
2026-01-15 22:02:29 +01:00
Felix Fontein
cc32ee2889 Fix markup in changelog. 2026-01-11 14:28:14 +01:00
Felix Fontein
e677c46329 Make sure stable-12 CI runs in cron.
(cherry picked from commit 28b16eab66)
2026-01-11 00:43:16 +01:00
patchback[bot]
e90b6d0184 [PR #11417/a689bb8e backport][stable-11] CI: Arch Linux switched to Python 3.14 (#11419)
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:41:07 +01:00
patchback[bot]
c398c6bb96 [PR #11401/0e6ba072 backport][stable-11] Update CI pipelines (#11404)
Update CI pipelines (#11401)

Update CI pipelines:
- Fedora 42 -> 43 for devel
- RHEL 10.0 -> 10.1 for all ansible-core branches
- FreeBSD 13.5 -> 15.0 for devel
- Alpine 3.22 -> 3.23 for devel

(cherry picked from commit 0e6ba07261)

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-01-08 12:28:37 +01:00
patchback[bot]
6185f06f64 [PR #11387/d4089ca2 backport][stable-11] Update RHEL 9.x to 9.7 in CI (#11392)
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:17:59 +01:00
Felix Fontein
91ba894643 [stable-11] cloudflare_dns: also allow 128 as a value for flag (#11377) (#11384)
cloudflare_dns: also allow 128 as a value for flag (#11377)

* Also allow 128 as a value for flag.

* Forgot to add changelog fragment.

(cherry picked from commit c00fb4fb5c)
2026-01-05 18:57:35 +01:00
patchback[bot]
5807791c80 [PR #11357/ddf05104 backport][stable-11] Add missing integration test aliases files (#11371)
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:03:05 +01:00
patchback[bot]
378c73a2a1 [PR #11369/20ba59cc backport][stable-11] Added "See Also" section (#11373)
Added "See Also" section (#11369)

* Added "See Also" section

* Corrected seealso documentation

* Update ini_file.py

Removed seealso descriptions

* Update to_ini.py

Removed seealso descriptions

* Update from_ini.py

Removed seealso descriptions

(cherry picked from commit 20ba59cce6)

Co-authored-by: daomah <129229601+daomah@users.noreply.github.com>
2026-01-02 15:02:54 +01:00
Felix Fontein
a8e60d0358 The next release will be 11.4.4. 2025-12-29 15:21:16 +01:00
Felix Fontein
f2d6ac54e9 Release 11.4.3. 2025-12-29 14:46:32 +01:00
patchback[bot]
9d7fe2f0ae [PR #11332/280d269d backport][stable-11] fix: listen_ports_facts return no facts when using with podman (#11334)
fix: listen_ports_facts return no facts when using with podman (#11332)

* fix: listen_ports_facts return no facts when using with podman

* Update changelogs/fragments/listen-ports-facts-return-no-facts.yml



---------


(cherry picked from commit 280d269d78)

Co-authored-by: Daniel Gonçalves <dangoncalves@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-12-28 21:15:32 +01:00
Felix Fontein
57b3ce9572 Prepare 11.4.3. 2025-12-23 21:39:27 +01:00
patchback[bot]
405435236f [PR #11316/3debc968 backport][stable-11] Fixing documentation for scaleway_private_network module. (#11318)
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:57 +01:00
patchback[bot]
538a701f89 [PR #11295/a5aec7d6 backport][stable-11] Fix typo in auth_username in examples (#11298)
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:10 +01:00
patchback[bot]
5d3132cfe0 [PR #11284/df349459 backport][stable-11] keycloak_authentication_required_actions: fix examples (#11287)
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:04 +01:00
patchback[bot]
41690c84a2 [PR #11277/1b15e595 backport][stable-11] use FQCN for extending docs with files and url (#11282)
use FQCN for extending docs with files and url (#11277)

* use FQCN for extending docs with files and url

* remove typo

(cherry picked from commit 1b15e595e0)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-12-14 12:16:23 +01:00
patchback[bot]
5d9f58b69d [PR #11276/a96a5c44 backport][stable-11] sysrc tests: skip FreeBSD 14.2 for ezjail tests (#11279)
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:06:01 +01:00
Alexei Znamensky
b2f16f184a test(integration): monit: backport of PR 11255 (#11273)
* test(integration): monit: backport of PR 11255

* add changelog frag
2025-12-12 07:25:09 +01:00
patchback[bot]
bc61b2d656 [PR #11260/a977c6f7 backport][stable-11] fix(sanitize_cr): avoid crash when realmrep is empty (#11267)
fix(sanitize_cr): avoid crash when realmrep is empty (#11260)

* fix(docs): missing info on id when creating realms

* fix(sanitize_cr): avoid crash when realmrep is empty

* remove unrelated change

* remove unrelated change

* added changlog

* correct: changelogs

* Update changelogs



---------



(cherry picked from commit a977c6f7c1)

Co-authored-by: Guillaume Dorschner <44686652+GuillaumeDorschner@users.noreply.github.com>
Co-authored-by: Guillaume Dorschner <guillaume.dorschner@thalesgroup.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-12-08 23:03:21 +01:00
Alexei Znamensky
364e491b7e [stable-11] monit: fix check for pending (#11253)
* monit: fix check for pending

* add changelog frag

* adjust testcases
2025-12-03 19:19:55 +13:00
Felix Fontein
df3898b08c Next release will be 11.4.3. 2025-12-01 21:30:31 +01:00
85 changed files with 836 additions and 236 deletions

View File

@@ -29,6 +29,7 @@ schedules:
always: true always: true
branches: branches:
include: include:
- stable-12
- stable-11 - stable-11
- cron: 0 11 * * 0 - cron: 0 11 * * 0
displayName: Weekly (old stable branches) displayName: Weekly (old stable branches)
@@ -56,14 +57,14 @@ pool: Standard
stages: stages:
### Sanity ### Sanity
- stage: Sanity_devel - stage: Sanity_2_21
displayName: Sanity devel displayName: Sanity 2.21
dependsOn: [] dependsOn: []
jobs: jobs:
- template: templates/matrix.yml - template: templates/matrix.yml
parameters: parameters:
nameFormat: Test {0} nameFormat: Test {0}
testFormat: devel/sanity/{0} testFormat: 2.21/sanity/{0}
targets: targets:
- test: 1 - test: 1
- test: 2 - test: 2
@@ -109,14 +110,14 @@ stages:
- test: 3 - test: 3
- test: 4 - test: 4
### Units ### Units
- stage: Units_devel - stage: Units_2_21
displayName: Units devel displayName: Units 2.21
dependsOn: [] dependsOn: []
jobs: jobs:
- template: templates/matrix.yml - template: templates/matrix.yml
parameters: parameters:
nameFormat: Python {0} nameFormat: Python {0}
testFormat: devel/units/{0}/1 testFormat: 2.21/units/{0}/1
targets: targets:
- test: 3.9 - test: 3.9
- test: '3.10' - test: '3.10'
@@ -162,42 +163,44 @@ stages:
- test: "3.13" - test: "3.13"
## Remote ## Remote
- stage: Remote_devel_extra_vms - stage: Remote_2_21_extra_vms
displayName: Remote devel extra VMs displayName: Remote 2.21 extra VMs
dependsOn: [] dependsOn: []
jobs: jobs:
- template: templates/matrix.yml - template: templates/matrix.yml
parameters: parameters:
testFormat: devel/{0} testFormat: 2.21/{0}
targets: targets:
- name: Alpine 3.22 - name: Alpine 3.23
test: alpine/3.22 test: alpine/3.23
# - name: Fedora 42 # - name: Fedora 43
# test: fedora/42 # test: fedora/43
- name: Ubuntu 22.04 - name: Ubuntu 22.04
test: ubuntu/22.04 test: ubuntu/22.04
- name: Ubuntu 24.04 - name: Ubuntu 24.04
test: ubuntu/24.04 test: ubuntu/24.04
groups: groups:
- vm - vm
- stage: Remote_devel - stage: Remote_2_21
displayName: Remote devel displayName: Remote 2.21
dependsOn: [] dependsOn: []
jobs: jobs:
- template: templates/matrix.yml - template: templates/matrix.yml
parameters: parameters:
testFormat: devel/{0} testFormat: 2.21/{0}
targets: targets:
- name: macOS 15.3 - name: macOS 26.3
test: macos/15.3 test: macos/26.3
- name: RHEL 10.0 - name: RHEL 10.1
test: rhel/10.0 test: rhel/10.1
- name: RHEL 9.6 - name: RHEL 9.7
test: rhel/9.6 test: rhel/9.7
- name: FreeBSD 14.3 # TODO: enable this ASAP!
test: freebsd/14.3 # - name: FreeBSD 15.0
- name: FreeBSD 13.5 # test: freebsd/15.0
test: freebsd/13.5 # TODO: enable this ASAP!
# - name: FreeBSD 14.4
# test: freebsd/14.4
groups: groups:
- 1 - 1
- 2 - 2
@@ -210,8 +213,10 @@ stages:
parameters: parameters:
testFormat: 2.20/{0} testFormat: 2.20/{0}
targets: targets:
- name: RHEL 10.0 - name: macOS 15.3
test: rhel/10.0 test: macos/15.3
- name: RHEL 10.1
test: rhel/10.1
- name: FreeBSD 14.3 - name: FreeBSD 14.3
test: freebsd/14.3 test: freebsd/14.3
groups: groups:
@@ -226,10 +231,8 @@ stages:
parameters: parameters:
testFormat: 2.19/{0} testFormat: 2.19/{0}
targets: targets:
- name: RHEL 9.5 - name: RHEL 10.1
test: rhel/9.5 test: rhel/10.1
- name: RHEL 10.0
test: rhel/10.0
- name: FreeBSD 14.2 - name: FreeBSD 14.2
test: freebsd/14.2 test: freebsd/14.2
groups: groups:
@@ -244,10 +247,8 @@ stages:
parameters: parameters:
testFormat: 2.18/{0} testFormat: 2.18/{0}
targets: targets:
- name: macOS 14.3 # - name: macOS 14.3
test: macos/14.3 # test: macos/14.3
- name: RHEL 9.4
test: rhel/9.4
- name: FreeBSD 14.1 - name: FreeBSD 14.1
test: freebsd/14.1 test: freebsd/14.1
groups: groups:
@@ -256,18 +257,18 @@ stages:
- 3 - 3
### Docker ### Docker
- stage: Docker_devel - stage: Docker_2_21
displayName: Docker devel displayName: Docker 2.21
dependsOn: [] dependsOn: []
jobs: jobs:
- template: templates/matrix.yml - template: templates/matrix.yml
parameters: parameters:
testFormat: devel/linux/{0} testFormat: 2.21/linux/{0}
targets: targets:
- name: Fedora 42 - name: Fedora 43
test: fedora42 test: fedora43
- name: Alpine 3.22 - name: Alpine 3.23
test: alpine322 test: alpine323
- name: Ubuntu 22.04 - name: Ubuntu 22.04
test: ubuntu2204 test: ubuntu2204
- name: Ubuntu 24.04 - name: Ubuntu 24.04
@@ -328,13 +329,13 @@ stages:
- 3 - 3
### Community Docker ### Community Docker
- stage: Docker_community_devel - stage: Docker_community_2_21
displayName: Docker (community images) devel displayName: Docker (community images) 2.21
dependsOn: [] dependsOn: []
jobs: jobs:
- template: templates/matrix.yml - template: templates/matrix.yml
parameters: parameters:
testFormat: devel/linux-community/{0} testFormat: 2.21/linux-community/{0}
targets: targets:
- name: Debian 11 Bullseye - name: Debian 11 Bullseye
test: debian-bullseye/3.9 test: debian-bullseye/3.9
@@ -343,7 +344,7 @@ stages:
- name: Debian 13 Trixie - name: Debian 13 Trixie
test: debian-13-trixie/3.13 test: debian-13-trixie/3.13
- name: ArchLinux - name: ArchLinux
test: archlinux/3.13 test: archlinux/3.14
groups: groups:
- 1 - 1
- 2 - 2
@@ -351,14 +352,14 @@ stages:
### Generic ### Generic
# Right now all generic tests are disabled. Uncomment when at least one of them is re-enabled. # Right now all generic tests are disabled. Uncomment when at least one of them is re-enabled.
# - stage: Generic_devel # - stage: Generic_2_21
# displayName: Generic devel # displayName: Generic 2.21
# dependsOn: [] # dependsOn: []
# jobs: # jobs:
# - template: templates/matrix.yml # - template: templates/matrix.yml
# parameters: # parameters:
# nameFormat: Python {0} # nameFormat: Python {0}
# testFormat: devel/generic/{0}/1 # testFormat: 2.21/generic/{0}/1
# targets: # targets:
# - test: '3.9' # - test: '3.9'
# - test: '3.12' # - test: '3.12'
@@ -400,26 +401,26 @@ stages:
- stage: Summary - stage: Summary
condition: succeededOrFailed() condition: succeededOrFailed()
dependsOn: dependsOn:
- Sanity_devel - Sanity_2_21
- Sanity_2_20 - Sanity_2_20
- Sanity_2_19 - Sanity_2_19
- Sanity_2_18 - Sanity_2_18
- Units_devel - Units_2_21
- Units_2_20 - Units_2_20
- Units_2_19 - Units_2_19
- Units_2_18 - Units_2_18
- Remote_devel_extra_vms - Remote_2_21_extra_vms
- Remote_devel - Remote_2_21
- Remote_2_20 - Remote_2_20
- Remote_2_19 - Remote_2_19
- Remote_2_18 - Remote_2_18
- Docker_devel - Docker_2_21
- Docker_2_20 - Docker_2_20
- Docker_2_19 - Docker_2_19
- Docker_2_18 - Docker_2_18
- Docker_community_devel - Docker_community_2_21
# Right now all generic tests are disabled. Uncomment when at least one of them is re-enabled. # Right now all generic tests are disabled. Uncomment when at least one of them is re-enabled.
# - Generic_devel # - Generic_2_21
# - Generic_2_20 # - Generic_2_20
# - Generic_2_19 # - Generic_2_19
# - Generic_2_18 # - Generic_2_18

4
.github/BOTMETA.yml vendored
View File

@@ -1592,7 +1592,7 @@ macros:
plugin_utils: plugins/plugin_utils plugin_utils: plugins/plugin_utils
tests: plugins/test tests: plugins/test
team_ansible_core: 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_bsd: JoergFiedler MacLemon bcoca dch jasperla mekanix opoplawski overhacked tuxillo
team_consul: sgargan apollo13 Ilgmi team_consul: sgargan apollo13 Ilgmi
team_cyberark_conjur: jvanderhoof ryanprior team_cyberark_conjur: jvanderhoof ryanprior
@@ -1614,7 +1614,7 @@ macros:
team_redfish: mraineri tomasg2012 xmadsen renxulei rajeevkallur bhavya06 jyundt team_redfish: mraineri tomasg2012 xmadsen renxulei rajeevkallur bhavya06 jyundt
team_rhsm: cnsnyder ptoscano team_rhsm: cnsnyder ptoscano
team_scaleway: remyleone abarbare 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_suse: commel evrardjp lrupp AnderEnder alxgu andytom sealor
team_virt: joshainglis karmab Thulium-Drake Ajpantuso team_virt: joshainglis karmab Thulium-Drake Ajpantuso
team_wdc: mikemoerk team_wdc: mikemoerk

View File

@@ -2,61 +2,76 @@
**Topics** **Topics**
- <a href="#v11-4-2">v11\.4\.2</a> - <a href="#v11-4-7">v11\.4\.7</a>
- <a href="#release-summary">Release Summary</a> - <a href="#release-summary">Release Summary</a>
- <a href="#minor-changes">Minor Changes</a>
- <a href="#bugfixes">Bugfixes</a> - <a href="#bugfixes">Bugfixes</a>
- <a href="#v11-4-1">v11\.4\.1</a> - <a href="#v11-4-6">v11\.4\.6</a>
- <a href="#release-summary-1">Release Summary</a> - <a href="#release-summary-1">Release Summary</a>
- <a href="#bugfixes-1">Bugfixes</a>
- <a href="#v11-4-5">v11\.4\.5</a>
- <a href="#release-summary-2">Release Summary</a>
- <a href="#bugfixes-2">Bugfixes</a>
- <a href="#v11-4-4">v11\.4\.4</a>
- <a href="#release-summary-3">Release Summary</a>
- <a href="#bugfixes-3">Bugfixes</a>
- <a href="#v11-4-3">v11\.4\.3</a>
- <a href="#release-summary-4">Release Summary</a>
- <a href="#bugfixes-4">Bugfixes</a>
- <a href="#v11-4-2">v11\.4\.2</a>
- <a href="#release-summary-5">Release Summary</a>
- <a href="#minor-changes">Minor Changes</a>
- <a href="#bugfixes-5">Bugfixes</a>
- <a href="#v11-4-1">v11\.4\.1</a>
- <a href="#release-summary-6">Release Summary</a>
- <a href="#minor-changes-1">Minor Changes</a> - <a href="#minor-changes-1">Minor Changes</a>
- <a href="#security-fixes">Security Fixes</a> - <a href="#security-fixes">Security Fixes</a>
- <a href="#bugfixes-1">Bugfixes</a> - <a href="#bugfixes-6">Bugfixes</a>
- <a href="#v11-4-0">v11\.4\.0</a> - <a href="#v11-4-0">v11\.4\.0</a>
- <a href="#release-summary-2">Release Summary</a> - <a href="#release-summary-7">Release Summary</a>
- <a href="#minor-changes-2">Minor Changes</a> - <a href="#minor-changes-2">Minor Changes</a>
- <a href="#bugfixes-2">Bugfixes</a> - <a href="#bugfixes-7">Bugfixes</a>
- <a href="#v11-3-0">v11\.3\.0</a> - <a href="#v11-3-0">v11\.3\.0</a>
- <a href="#release-summary-3">Release Summary</a> - <a href="#release-summary-8">Release Summary</a>
- <a href="#minor-changes-3">Minor Changes</a> - <a href="#minor-changes-3">Minor Changes</a>
- <a href="#deprecated-features">Deprecated Features</a> - <a href="#deprecated-features">Deprecated Features</a>
- <a href="#bugfixes-3">Bugfixes</a> - <a href="#bugfixes-8">Bugfixes</a>
- <a href="#new-plugins">New Plugins</a> - <a href="#new-plugins">New Plugins</a>
- <a href="#filter">Filter</a> - <a href="#filter">Filter</a>
- <a href="#new-modules">New Modules</a> - <a href="#new-modules">New Modules</a>
- <a href="#v11-2-1">v11\.2\.1</a> - <a href="#v11-2-1">v11\.2\.1</a>
- <a href="#release-summary-4">Release Summary</a> - <a href="#release-summary-9">Release Summary</a>
- <a href="#bugfixes-4">Bugfixes</a> - <a href="#bugfixes-9">Bugfixes</a>
- <a href="#v11-2-0">v11\.2\.0</a> - <a href="#v11-2-0">v11\.2\.0</a>
- <a href="#release-summary-5">Release Summary</a> - <a href="#release-summary-10">Release Summary</a>
- <a href="#minor-changes-4">Minor Changes</a> - <a href="#minor-changes-4">Minor Changes</a>
- <a href="#deprecated-features-1">Deprecated Features</a> - <a href="#deprecated-features-1">Deprecated Features</a>
- <a href="#bugfixes-5">Bugfixes</a> - <a href="#bugfixes-10">Bugfixes</a>
- <a href="#new-plugins-1">New Plugins</a> - <a href="#new-plugins-1">New Plugins</a>
- <a href="#lookup">Lookup</a> - <a href="#lookup">Lookup</a>
- <a href="#new-modules-1">New Modules</a> - <a href="#new-modules-1">New Modules</a>
- <a href="#v11-1-2">v11\.1\.2</a> - <a href="#v11-1-2">v11\.1\.2</a>
- <a href="#release-summary-6">Release Summary</a> - <a href="#release-summary-11">Release Summary</a>
- <a href="#minor-changes-5">Minor Changes</a> - <a href="#minor-changes-5">Minor Changes</a>
- <a href="#bugfixes-6">Bugfixes</a> - <a href="#bugfixes-11">Bugfixes</a>
- <a href="#v11-1-1">v11\.1\.1</a> - <a href="#v11-1-1">v11\.1\.1</a>
- <a href="#release-summary-7">Release Summary</a> - <a href="#release-summary-12">Release Summary</a>
- <a href="#minor-changes-6">Minor Changes</a> - <a href="#minor-changes-6">Minor Changes</a>
- <a href="#bugfixes-7">Bugfixes</a> - <a href="#bugfixes-12">Bugfixes</a>
- <a href="#v11-1-0">v11\.1\.0</a> - <a href="#v11-1-0">v11\.1\.0</a>
- <a href="#release-summary-8">Release Summary</a> - <a href="#release-summary-13">Release Summary</a>
- <a href="#minor-changes-7">Minor Changes</a> - <a href="#minor-changes-7">Minor Changes</a>
- <a href="#deprecated-features-2">Deprecated Features</a> - <a href="#deprecated-features-2">Deprecated Features</a>
- <a href="#bugfixes-8">Bugfixes</a> - <a href="#bugfixes-13">Bugfixes</a>
- <a href="#new-plugins-2">New Plugins</a> - <a href="#new-plugins-2">New Plugins</a>
- <a href="#callback">Callback</a> - <a href="#callback">Callback</a>
- <a href="#new-modules-2">New Modules</a> - <a href="#new-modules-2">New Modules</a>
- <a href="#v11-0-0">v11\.0\.0</a> - <a href="#v11-0-0">v11\.0\.0</a>
- <a href="#release-summary-9">Release Summary</a> - <a href="#release-summary-14">Release Summary</a>
- <a href="#minor-changes-8">Minor Changes</a> - <a href="#minor-changes-8">Minor Changes</a>
- <a href="#deprecated-features-3">Deprecated Features</a> - <a href="#deprecated-features-3">Deprecated Features</a>
- <a href="#removed-features-previously-deprecated">Removed Features \(previously deprecated\)</a> - <a href="#removed-features-previously-deprecated">Removed Features \(previously deprecated\)</a>
- <a href="#security-fixes-1">Security Fixes</a> - <a href="#security-fixes-1">Security Fixes</a>
- <a href="#bugfixes-9">Bugfixes</a> - <a href="#bugfixes-14">Bugfixes</a>
- <a href="#known-issues">Known Issues</a> - <a href="#known-issues">Known Issues</a>
- <a href="#new-plugins-3">New Plugins</a> - <a href="#new-plugins-3">New Plugins</a>
- <a href="#callback-1">Callback</a> - <a href="#callback-1">Callback</a>
@@ -67,10 +82,85 @@
- <a href="#new-modules-3">New Modules</a> - <a href="#new-modules-3">New Modules</a>
This changelog describes changes after version 10\.0\.0\. This changelog describes changes after version 10\.0\.0\.
<a id="v11-4-7"></a>
## v11\.4\.7
<a id="release-summary"></a>
### Release Summary
Regular bugfix release\.
<a id="bugfixes"></a>
### Bugfixes
* flatpak \- support new output message when an update resulted in no action that appears on Fedora 44 \([https\://github\.com/ansible\-collections/community\.general/pull/11836](https\://github\.com/ansible\-collections/community\.general/pull/11836)\)\.
* homebrew\_cask \- fix <code>sudo\_password</code> failing when the password contains single quotes or other special shell characters \([https\://github\.com/ansible\-collections/community\.general/issues/4957](https\://github\.com/ansible\-collections/community\.general/issues/4957)\, [https\://github\.com/ansible\-collections/community\.general/pull/11850](https\://github\.com/ansible\-collections/community\.general/pull/11850)\)\.
* lvol \- fix LVM version parsing \([https\://github\.com/ansible\-collections/community\.general/issues/5445](https\://github\.com/ansible\-collections/community\.general/issues/5445)\, [https\://github\.com/ansible\-collections/community\.general/pull/11823](https\://github\.com/ansible\-collections/community\.general/pull/11823)\)\.
* mssql\_script \- only passes <code>params</code> to <code>cursor\.execute\(\)</code> when the user actually provides them \([https\://github\.com/ansible\-collections/community\.general/issues/11699](https\://github\.com/ansible\-collections/community\.general/issues/11699)\, [https\://github\.com/ansible\-collections/community\.general/pull/11754](https\://github\.com/ansible\-collections/community\.general/pull/11754)\)\.
* sefcontext \- flush the in\-process <code>matchpathcon</code> cache after applying changes\, so subsequent tasks running in the same process \(for example via the Mitogen connection plugin\) see the updated SELinux file context rules instead of stale cached data \([https\://github\.com/ansible\-collections/community\.general/issues/888](https\://github\.com/ansible\-collections/community\.general/issues/888)\, [https\://github\.com/ansible\-collections/community\.general/pull/11812](https\://github\.com/ansible\-collections/community\.general/pull/11812)\)\.
<a id="v11-4-6"></a>
## v11\.4\.6
<a id="release-summary-1"></a>
### Release Summary
Regular bugfix release\.
<a id="bugfixes-1"></a>
### Bugfixes
* counter\_enabled callback plugin \- fix plugin not observing <code>display\_ok\_hosts</code> option \([https\://github\.com/ansible\-collections/community\.general/issues/3978](https\://github\.com/ansible\-collections/community\.general/issues/3978)\, [https\://github\.com/ansible\-collections/community\.general/pull/11656](https\://github\.com/ansible\-collections/community\.general/pull/11656)\)\.
* keycloak\_authentication \- fix <code>TypeError</code> crash when a flow is defined without <code>authenticationExecutions</code> \([https\://github\.com/ansible\-collections/community\.general/issues/11547](https\://github\.com/ansible\-collections/community\.general/issues/11547)\, [https\://github\.com/ansible\-collections/community\.general/pull/11548](https\://github\.com/ansible\-collections/community\.general/pull/11548)\)\.
* xfconf \- representation of boolean properties was not consistent between Python and <code>xfconf\-query</code>\, leading to broken idempotency \([https\://github\.com/ansible\-collections/community\.general/pull/11645](https\://github\.com/ansible\-collections/community\.general/pull/11645)\)\.
<a id="v11-4-5"></a>
## v11\.4\.5
<a id="release-summary-2"></a>
### Release Summary
Regular bugfix release\.
<a id="bugfixes-2"></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="v11-4-4"></a>
## v11\.4\.4
<a id="release-summary-3"></a>
### Release Summary
Regular bugfix release\.
<a id="bugfixes-3"></a>
### Bugfixes
* cloudflare\_dns \- also allow <code>flag\=128</code> for CAA records \([https\://github\.com/ansible\-collections/community\.general/issues/11355](https\://github\.com/ansible\-collections/community\.general/issues/11355)\, [https\://github\.com/ansible\-collections/community\.general/pull/11377](https\://github\.com/ansible\-collections/community\.general/pull/11377)\)\.
* logstash\_plugin \- fix argument order when using <code>version</code> parameter\. The plugin name must come after options like <code>\-\-version</code> for the <code>logstash\-plugin</code> CLI to work correctly \([https\://github\.com/ansible\-collections/community\.general/issues/10745](https\://github\.com/ansible\-collections/community\.general/issues/10745)\, [https\://github\.com/ansible\-collections/community\.general/pull/11440](https\://github\.com/ansible\-collections/community\.general/pull/11440)\)\.
<a id="v11-4-3"></a>
## v11\.4\.3
<a id="release-summary-4"></a>
### Release Summary
Regular bugfix release\.
<a id="bugfixes-4"></a>
### Bugfixes
* keycloak\_realm \- fixed crash in <code>sanitize\_cr\(\)</code> when <code>realmrep</code> was <code>None</code> \([https\://github\.com/ansible\-collections/community\.general/pull/11260](https\://github\.com/ansible\-collections/community\.general/pull/11260)\)\.
* listen\_ports\_facts \- fix handling of empty PID lists when <code>command\=ss</code> \([https\://github\.com/ansible\-collections/community\.general/pull/11332](https\://github\.com/ansible\-collections/community\.general/pull/11332)\)\.
* 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)\)\.
* monit \- internal state was not reflecting when operation is \"pending\" in <code>monit</code> \([https\://github\.com/ansible\-collections/community\.general/pull/11245](https\://github\.com/ansible\-collections/community\.general/pull/11245)\)\.
<a id="v11-4-2"></a> <a id="v11-4-2"></a>
## v11\.4\.2 ## v11\.4\.2
<a id="release-summary"></a> <a id="release-summary-5"></a>
### Release Summary ### Release Summary
Regular bugfix release\. Regular bugfix release\.
@@ -80,7 +170,7 @@ Regular bugfix release\.
* tss lookup plugin \- fixed <code>AccessTokenAuthorizer</code> initialization to include <code>base\_url</code> parameter for proper token authentication \([https\://github\.com/ansible\-collections/community\.general/pull/11031](https\://github\.com/ansible\-collections/community\.general/pull/11031)\)\. * tss lookup plugin \- fixed <code>AccessTokenAuthorizer</code> initialization to include <code>base\_url</code> parameter for proper token authentication \([https\://github\.com/ansible\-collections/community\.general/pull/11031](https\://github\.com/ansible\-collections/community\.general/pull/11031)\)\.
<a id="bugfixes"></a> <a id="bugfixes-5"></a>
### Bugfixes ### Bugfixes
* cobbler\_system \- compare the version as a float which is the type returned by the Cobbler API \([https\://github\.com/ansible\-collections/community\.general/issues/11044](https\://github\.com/ansible\-collections/community\.general/issues/11044)\)\. * cobbler\_system \- compare the version as a float which is the type returned by the Cobbler API \([https\://github\.com/ansible\-collections/community\.general/issues/11044](https\://github\.com/ansible\-collections/community\.general/issues/11044)\)\.
@@ -93,7 +183,7 @@ Regular bugfix release\.
<a id="v11-4-1"></a> <a id="v11-4-1"></a>
## v11\.4\.1 ## v11\.4\.1
<a id="release-summary-1"></a> <a id="release-summary-6"></a>
### Release Summary ### Release Summary
Regular bugfix release\. Regular bugfix release\.
@@ -112,7 +202,7 @@ Regular bugfix release\.
* 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)\)\. * 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-1"></a> <a id="bugfixes-6"></a>
### Bugfixes ### Bugfixes
* cloudflare\_dns \- roll back changes to CAA record validation \([https\://github\.com/ansible\-collections/community\.general/issues/10934](https\://github\.com/ansible\-collections/community\.general/issues/10934)\, [https\://github\.com/ansible\-collections/community\.general/pull/10956](https\://github\.com/ansible\-collections/community\.general/pull/10956)\)\. * cloudflare\_dns \- roll back changes to CAA record validation \([https\://github\.com/ansible\-collections/community\.general/issues/10934](https\://github\.com/ansible\-collections/community\.general/issues/10934)\, [https\://github\.com/ansible\-collections/community\.general/pull/10956](https\://github\.com/ansible\-collections/community\.general/pull/10956)\)\.
@@ -128,7 +218,7 @@ Regular bugfix release\.
<a id="v11-4-0"></a> <a id="v11-4-0"></a>
## v11\.4\.0 ## v11\.4\.0
<a id="release-summary-2"></a> <a id="release-summary-7"></a>
### Release Summary ### Release Summary
Regular bugfix and feature release\. Regular bugfix and feature release\.
@@ -143,7 +233,7 @@ Regular bugfix and feature release\.
* keycloak\_client \- add idempotent support for <code>optional\_client\_scopes</code> and <code>optional\_client\_scopes</code>\, and ensure consistent change detection between check mode and live run \([https\://github\.com/ansible\-collections/community\.general/issues/5495](https\://github\.com/ansible\-collections/community\.general/issues/5495)\, [https\://github\.com/ansible\-collections/community\.general/pull/10842](https\://github\.com/ansible\-collections/community\.general/pull/10842)\)\. * keycloak\_client \- add idempotent support for <code>optional\_client\_scopes</code> and <code>optional\_client\_scopes</code>\, and ensure consistent change detection between check mode and live run \([https\://github\.com/ansible\-collections/community\.general/issues/5495](https\://github\.com/ansible\-collections/community\.general/issues/5495)\, [https\://github\.com/ansible\-collections/community\.general/pull/10842](https\://github\.com/ansible\-collections/community\.general/pull/10842)\)\.
* pipx module\_utils \- use <code>PIPX\_USE\_EMOJI</code> to disable emojis in the output of <code>pipx</code> 1\.8\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10874](https\://github\.com/ansible\-collections/community\.general/pull/10874)\)\. * pipx module\_utils \- use <code>PIPX\_USE\_EMOJI</code> to disable emojis in the output of <code>pipx</code> 1\.8\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10874](https\://github\.com/ansible\-collections/community\.general/pull/10874)\)\.
<a id="bugfixes-2"></a> <a id="bugfixes-7"></a>
### Bugfixes ### Bugfixes
* Avoid usage of deprecated <code>ansible\.module\_utils\.six</code> in all code that does not have to support Python 2 \([https\://github\.com/ansible\-collections/community\.general/pull/10873](https\://github\.com/ansible\-collections/community\.general/pull/10873)\)\. * 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)\)\.
@@ -160,7 +250,7 @@ Regular bugfix and feature release\.
<a id="v11-3-0"></a> <a id="v11-3-0"></a>
## v11\.3\.0 ## v11\.3\.0
<a id="release-summary-3"></a> <a id="release-summary-8"></a>
### Release Summary ### Release Summary
Regular bugfix and feature release\. Regular bugfix and feature release\.
@@ -221,7 +311,7 @@ Regular bugfix and feature release\.
* oci\_vcn \- module is deprecated and will be removed in community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/issues/10318](https\://github\.com/ansible\-collections/community\.general/issues/10318)\, [https\://github\.com/ansible\-collections/community\.general/pull/10652](https\://github\.com/ansible\-collections/community\.general/pull/10652)\)\. * oci\_vcn \- module is deprecated and will be removed in community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/issues/10318](https\://github\.com/ansible\-collections/community\.general/issues/10318)\, [https\://github\.com/ansible\-collections/community\.general/pull/10652](https\://github\.com/ansible\-collections/community\.general/pull/10652)\)\.
* oracle\* doc fragments \- fragments are deprecated and will be removed in community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/issues/10318](https\://github\.com/ansible\-collections/community\.general/issues/10318)\, [https\://github\.com/ansible\-collections/community\.general/pull/10652](https\://github\.com/ansible\-collections/community\.general/pull/10652)\)\. * oracle\* doc fragments \- fragments are deprecated and will be removed in community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/issues/10318](https\://github\.com/ansible\-collections/community\.general/issues/10318)\, [https\://github\.com/ansible\-collections/community\.general/pull/10652](https\://github\.com/ansible\-collections/community\.general/pull/10652)\)\.
<a id="bugfixes-3"></a> <a id="bugfixes-8"></a>
### Bugfixes ### Bugfixes
* kdeconfig \- <code>kwriteconfig</code> executable could not be discovered automatically on systems with only <code>kwriteconfig6</code> installed\. <code>kwriteconfig6</code> can now be discovered by Ansible \([https\://github\.com/ansible\-collections/community\.general/issues/10746](https\://github\.com/ansible\-collections/community\.general/issues/10746)\, [https\://github\.com/ansible\-collections/community\.general/pull/10751](https\://github\.com/ansible\-collections/community\.general/pull/10751)\)\. * kdeconfig \- <code>kwriteconfig</code> executable could not be discovered automatically on systems with only <code>kwriteconfig6</code> installed\. <code>kwriteconfig6</code> can now be discovered by Ansible \([https\://github\.com/ansible\-collections/community\.general/issues/10746](https\://github\.com/ansible\-collections/community\.general/issues/10746)\, [https\://github\.com/ansible\-collections/community\.general/pull/10751](https\://github\.com/ansible\-collections/community\.general/pull/10751)\)\.
@@ -241,19 +331,19 @@ Regular bugfix and feature release\.
<a id="new-modules"></a> <a id="new-modules"></a>
### New Modules ### New Modules
* community\.general\.django\_dumpdata \- Wrapper for C\(django\-admin dumpdata\)\. * community\.general\.django\_dumpdata \- Wrapper for <code>django\-admin dumpdata</code>\.
* community\.general\.django\_loaddata \- Wrapper for C\(django\-admin loaddata\)\. * community\.general\.django\_loaddata \- Wrapper for <code>django\-admin loaddata</code>\.
* community\.general\.pacemaker\_stonith \- Manage Pacemaker STONITH\. * community\.general\.pacemaker\_stonith \- Manage Pacemaker STONITH\.
<a id="v11-2-1"></a> <a id="v11-2-1"></a>
## v11\.2\.1 ## v11\.2\.1
<a id="release-summary-4"></a> <a id="release-summary-9"></a>
### Release Summary ### Release Summary
Bugfix release\. Bugfix release\.
<a id="bugfixes-4"></a> <a id="bugfixes-9"></a>
### Bugfixes ### Bugfixes
* Avoid deprecated functionality in ansible\-core 2\.20 \([https\://github\.com/ansible\-collections/community\.general/pull/10687](https\://github\.com/ansible\-collections/community\.general/pull/10687)\)\. * Avoid deprecated functionality in ansible\-core 2\.20 \([https\://github\.com/ansible\-collections/community\.general/pull/10687](https\://github\.com/ansible\-collections/community\.general/pull/10687)\)\.
@@ -265,7 +355,7 @@ Bugfix release\.
<a id="v11-2-0"></a> <a id="v11-2-0"></a>
## v11\.2\.0 ## v11\.2\.0
<a id="release-summary-5"></a> <a id="release-summary-10"></a>
### Release Summary ### Release Summary
Regular bugfix and features release\. Regular bugfix and features release\.
@@ -308,7 +398,7 @@ Regular bugfix and features release\.
* github\_repo \- deprecate <code>force\_defaults\=true</code> \([https\://github\.com/ansible\-collections/community\.general/pull/10435](https\://github\.com/ansible\-collections/community\.general/pull/10435)\)\. * github\_repo \- deprecate <code>force\_defaults\=true</code> \([https\://github\.com/ansible\-collections/community\.general/pull/10435](https\://github\.com/ansible\-collections/community\.general/pull/10435)\)\.
* rocketchat \- the default value for <code>is\_pre740</code>\, currently <code>true</code>\, is deprecated and will change to <code>false</code> in community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10490](https\://github\.com/ansible\-collections/community\.general/pull/10490)\)\. * rocketchat \- the default value for <code>is\_pre740</code>\, currently <code>true</code>\, is deprecated and will change to <code>false</code> in community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10490](https\://github\.com/ansible\-collections/community\.general/pull/10490)\)\.
<a id="bugfixes-5"></a> <a id="bugfixes-10"></a>
### Bugfixes ### Bugfixes
* jenkins\_plugin \- install latest compatible version instead of latest \([https\://github\.com/ansible\-collections/community\.general/issues/854](https\://github\.com/ansible\-collections/community\.general/issues/854)\, [https\://github\.com/ansible\-collections/community\.general/pull/10346](https\://github\.com/ansible\-collections/community\.general/pull/10346)\)\. * jenkins\_plugin \- install latest compatible version instead of latest \([https\://github\.com/ansible\-collections/community\.general/issues/854](https\://github\.com/ansible\-collections/community\.general/issues/854)\, [https\://github\.com/ansible\-collections/community\.general/pull/10346](https\://github\.com/ansible\-collections/community\.general/pull/10346)\)\.
@@ -332,7 +422,7 @@ Regular bugfix and features release\.
<a id="v11-1-2"></a> <a id="v11-1-2"></a>
## v11\.1\.2 ## v11\.1\.2
<a id="release-summary-6"></a> <a id="release-summary-11"></a>
### Release Summary ### Release Summary
Bugfix release\. Bugfix release\.
@@ -471,7 +561,7 @@ Bugfix release\.
* zypper \- remove redundant constructs from argument specs \([https\://github\.com/ansible\-collections/community\.general/pull/10513](https\://github\.com/ansible\-collections/community\.general/pull/10513)\)\. * zypper \- remove redundant constructs from argument specs \([https\://github\.com/ansible\-collections/community\.general/pull/10513](https\://github\.com/ansible\-collections/community\.general/pull/10513)\)\.
* zypper\_repository \- remove redundant constructs from argument specs \([https\://github\.com/ansible\-collections/community\.general/pull/10513](https\://github\.com/ansible\-collections/community\.general/pull/10513)\)\. * zypper\_repository \- remove redundant constructs from argument specs \([https\://github\.com/ansible\-collections/community\.general/pull/10513](https\://github\.com/ansible\-collections/community\.general/pull/10513)\)\.
<a id="bugfixes-6"></a> <a id="bugfixes-11"></a>
### Bugfixes ### Bugfixes
* 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 \- 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)\)\.
@@ -485,7 +575,7 @@ Bugfix release\.
<a id="v11-1-1"></a> <a id="v11-1-1"></a>
## v11\.1\.1 ## v11\.1\.1
<a id="release-summary-7"></a> <a id="release-summary-12"></a>
### Release Summary ### Release Summary
Bugfix release for the next Ansible 12 pre\-release\. Bugfix release for the next Ansible 12 pre\-release\.
@@ -521,7 +611,7 @@ Bugfix release for the next Ansible 12 pre\-release\.
* filesystem \- remove redundant constructs from argument specs \([https\://github\.com/ansible\-collections/community\.general/pull/10494](https\://github\.com/ansible\-collections/community\.general/pull/10494)\)\. * filesystem \- remove redundant constructs from argument specs \([https\://github\.com/ansible\-collections/community\.general/pull/10494](https\://github\.com/ansible\-collections/community\.general/pull/10494)\)\.
* sysrc \- adjustments to the code \([https\://github\.com/ansible\-collections/community\.general/pull/10417](https\://github\.com/ansible\-collections/community\.general/pull/10417)\)\. * sysrc \- adjustments to the code \([https\://github\.com/ansible\-collections/community\.general/pull/10417](https\://github\.com/ansible\-collections/community\.general/pull/10417)\)\.
<a id="bugfixes-7"></a> <a id="bugfixes-12"></a>
### Bugfixes ### Bugfixes
* apache2\_module \- avoid ansible\-core 2\.19 deprecation \([https\://github\.com/ansible\-collections/community\.general/pull/10459](https\://github\.com/ansible\-collections/community\.general/pull/10459)\)\. * apache2\_module \- avoid ansible\-core 2\.19 deprecation \([https\://github\.com/ansible\-collections/community\.general/pull/10459](https\://github\.com/ansible\-collections/community\.general/pull/10459)\)\.
@@ -539,7 +629,7 @@ Bugfix release for the next Ansible 12 pre\-release\.
<a id="v11-1-0"></a> <a id="v11-1-0"></a>
## v11\.1\.0 ## v11\.1\.0
<a id="release-summary-8"></a> <a id="release-summary-13"></a>
### Release Summary ### Release Summary
Regular bugfix and feature release\. Regular bugfix and feature release\.
@@ -599,7 +689,7 @@ Regular bugfix and feature release\.
* catapult \- module is deprecated and will be removed in community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/issues/10318](https\://github\.com/ansible\-collections/community\.general/issues/10318)\, [https\://github\.com/ansible\-collections/community\.general/pull/10329](https\://github\.com/ansible\-collections/community\.general/pull/10329)\)\. * catapult \- module is deprecated and will be removed in community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/issues/10318](https\://github\.com/ansible\-collections/community\.general/issues/10318)\, [https\://github\.com/ansible\-collections/community\.general/pull/10329](https\://github\.com/ansible\-collections/community\.general/pull/10329)\)\.
* pacemaker\_cluster \- the parameter <code>state</code> will become a required parameter in community\.general 12\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10227](https\://github\.com/ansible\-collections/community\.general/pull/10227)\)\. * pacemaker\_cluster \- the parameter <code>state</code> will become a required parameter in community\.general 12\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10227](https\://github\.com/ansible\-collections/community\.general/pull/10227)\)\.
<a id="bugfixes-8"></a> <a id="bugfixes-13"></a>
### Bugfixes ### Bugfixes
* dependent lookup plugin \- avoid deprecated ansible\-core 2\.19 functionality \([https\://github\.com/ansible\-collections/community\.general/pull/10359](https\://github\.com/ansible\-collections/community\.general/pull/10359)\)\. * dependent lookup plugin \- avoid deprecated ansible\-core 2\.19 functionality \([https\://github\.com/ansible\-collections/community\.general/pull/10359](https\://github\.com/ansible\-collections/community\.general/pull/10359)\)\.
@@ -625,7 +715,7 @@ Regular bugfix and feature release\.
<a id="v11-0-0"></a> <a id="v11-0-0"></a>
## v11\.0\.0 ## v11\.0\.0
<a id="release-summary-9"></a> <a id="release-summary-14"></a>
### Release Summary ### Release Summary
This is release 11\.0\.0 of <code>community\.general</code>\, released on 2025\-06\-16\. This is release 11\.0\.0 of <code>community\.general</code>\, released on 2025\-06\-16\.
@@ -739,7 +829,7 @@ This is release 11\.0\.0 of <code>community\.general</code>\, released on 2025\-
* iocage inventory plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. * iocage inventory plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\.
* iocage inventory plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. * iocage inventory plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\.
* iocage inventory plugin \- the new parameter <code>hooks\_results</code> of the plugin is a list of files inside a jail that provide configuration parameters for the inventory\. The inventory plugin reads the files from the jails and put the contents into the items of created variable <code>iocage\_hooks</code> \([https\://github\.com/ansible\-collections/community\.general/issues/9650](https\://github\.com/ansible\-collections/community\.general/issues/9650)\, [https\://github\.com/ansible\-collections/community\.general/pull/9651](https\://github\.com/ansible\-collections/community\.general/pull/9651)\)\. * iocage inventory plugin \- the new parameter <code>hooks\_results</code> of the plugin is a list of files inside a jail that provide configuration parameters for the inventory\. The inventory plugin reads the files from the jails and put the contents into the items of created variable <code>iocage\_hooks</code> \([https\://github\.com/ansible\-collections/community\.general/issues/9650](https\://github\.com/ansible\-collections/community\.general/issues/9650)\, [https\://github\.com/ansible\-collections/community\.general/pull/9651](https\://github\.com/ansible\-collections/community\.general/pull/9651)\)\.
* iocage inventory plugin \- the new parameter <code>inventory\_hostname\_tag</code> of the plugin provides the name of the tag in the C\(iocage properties notes\) that contains the jails alias\. The new parameter <code>inventory\_hostname\_required</code>\, if enabled\, makes the tag mandatory \([https\://github\.com/ansible\-collections/community\.general/issues/10206](https\://github\.com/ansible\-collections/community\.general/issues/10206)\, [https\://github\.com/ansible\-collections/community\.general/pull/10207](https\://github\.com/ansible\-collections/community\.general/pull/10207)\)\. * iocage inventory plugin \- the new parameter <code>inventory\_hostname\_tag</code> of the plugin provides the name of the tag in the <code>iocage properties notes</code> that contains the jails alias\. The new parameter <code>inventory\_hostname\_required</code>\, if enabled\, makes the tag mandatory \([https\://github\.com/ansible\-collections/community\.general/issues/10206](https\://github\.com/ansible\-collections/community\.general/issues/10206)\, [https\://github\.com/ansible\-collections/community\.general/pull/10207](https\://github\.com/ansible\-collections/community\.general/pull/10207)\)\.
* iocage inventory plugin \- the new parameter <code>sudo</code> of the plugin lets the command <code>iocage list \-l</code> to run as root on the iocage host\. This is needed to get the IPv4 of a running DHCP jail \([https\://github\.com/ansible\-collections/community\.general/issues/9572](https\://github\.com/ansible\-collections/community\.general/issues/9572)\, [https\://github\.com/ansible\-collections/community\.general/pull/9573](https\://github\.com/ansible\-collections/community\.general/pull/9573)\)\. * iocage inventory plugin \- the new parameter <code>sudo</code> of the plugin lets the command <code>iocage list \-l</code> to run as root on the iocage host\. This is needed to get the IPv4 of a running DHCP jail \([https\://github\.com/ansible\-collections/community\.general/issues/9572](https\://github\.com/ansible\-collections/community\.general/issues/9572)\, [https\://github\.com/ansible\-collections/community\.general/pull/9573](https\://github\.com/ansible\-collections/community\.general/pull/9573)\)\.
* iptables\_state action plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. * iptables\_state action plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\.
* iptables\_state action plugin \- use f\-strings instead of interpolations or <code>format</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9318](https\://github\.com/ansible\-collections/community\.general/pull/9318)\)\. * iptables\_state action plugin \- use f\-strings instead of interpolations or <code>format</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9318](https\://github\.com/ansible\-collections/community\.general/pull/9318)\)\.
@@ -1024,7 +1114,7 @@ This is release 11\.0\.0 of <code>community\.general</code>\, released on 2025\-
* keycloak\_authentication \- API calls did not properly set the <code>priority</code> during update resulting in incorrectly sorted authentication flows\. This apparently only affects Keycloak 25 or newer \([https\://github\.com/ansible\-collections/community\.general/pull/9263](https\://github\.com/ansible\-collections/community\.general/pull/9263)\)\. * keycloak\_authentication \- API calls did not properly set the <code>priority</code> during update resulting in incorrectly sorted authentication flows\. This apparently only affects Keycloak 25 or newer \([https\://github\.com/ansible\-collections/community\.general/pull/9263](https\://github\.com/ansible\-collections/community\.general/pull/9263)\)\.
* keycloak\_client \- Sanitize <code>saml\.encryption\.private\.key</code> so it does not show in the logs \([https\://github\.com/ansible\-collections/community\.general/pull/9621](https\://github\.com/ansible\-collections/community\.general/pull/9621)\)\. * keycloak\_client \- Sanitize <code>saml\.encryption\.private\.key</code> so it does not show in the logs \([https\://github\.com/ansible\-collections/community\.general/pull/9621](https\://github\.com/ansible\-collections/community\.general/pull/9621)\)\.
<a id="bugfixes-9"></a> <a id="bugfixes-14"></a>
### Bugfixes ### Bugfixes
* apache2\_mod\_proxy \- make compatible with Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9762](https\://github\.com/ansible\-collections/community\.general/pull/9762)\)\. * apache2\_mod\_proxy \- make compatible with Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9762](https\://github\.com/ansible\-collections/community\.general/pull/9762)\)\.
@@ -1147,8 +1237,8 @@ This is release 11\.0\.0 of <code>community\.general</code>\, released on 2025\-
* community\.general\.ldap\_inc \- Use the Modify\-Increment LDAP V3 feature to increment an attribute value\. * community\.general\.ldap\_inc \- Use the Modify\-Increment LDAP V3 feature to increment an attribute value\.
* community\.general\.lvm\_pv \- Manage LVM Physical Volumes\. * community\.general\.lvm\_pv \- Manage LVM Physical Volumes\.
* community\.general\.pacemaker\_resource \- Manage pacemaker resources\. * community\.general\.pacemaker\_resource \- Manage pacemaker resources\.
* community\.general\.systemd\_creds\_decrypt \- C\(systemd\)\'s C\(systemd\-creds decrypt\) plugin\. * community\.general\.systemd\_creds\_decrypt \- <code>systemd</code>\'s <code>systemd\-creds decrypt</code> plugin\.
* community\.general\.systemd\_creds\_encrypt \- C\(systemd\)\'s C\(systemd\-creds encrypt\) plugin\. * community\.general\.systemd\_creds\_encrypt \- <code>systemd</code>\'s <code>systemd\-creds encrypt</code> plugin\.
* community\.general\.systemd\_info \- Gather C\(systemd\) unit info\. * community\.general\.systemd\_info \- Gather <code>systemd</code> unit info\.
* community\.general\.xdg\_mime \- Set default handler for MIME types\, for applications using XDG tools\. * community\.general\.xdg\_mime \- Set default handler for MIME types\, for applications using XDG tools\.
* community\.general\.zpool \- Manage ZFS zpools\. * community\.general\.zpool \- Manage ZFS zpools\.

View File

@@ -6,6 +6,81 @@ Community General Release Notes
This changelog describes changes after version 10.0.0. This changelog describes changes after version 10.0.0.
v11.4.7
=======
Release Summary
---------------
Regular bugfix release.
Bugfixes
--------
- flatpak - support new output message when an update resulted in no action that appears on Fedora 44 (https://github.com/ansible-collections/community.general/pull/11836).
- homebrew_cask - fix ``sudo_password`` failing when the password contains single quotes or other special shell characters (https://github.com/ansible-collections/community.general/issues/4957, https://github.com/ansible-collections/community.general/pull/11850).
- lvol - fix LVM version parsing (https://github.com/ansible-collections/community.general/issues/5445, https://github.com/ansible-collections/community.general/pull/11823).
- mssql_script - only passes ``params`` to ``cursor.execute()`` when the user actually provides them (https://github.com/ansible-collections/community.general/issues/11699, https://github.com/ansible-collections/community.general/pull/11754).
- sefcontext - flush the in-process ``matchpathcon`` cache after applying changes, so subsequent tasks running in the same process (for example via the Mitogen connection plugin) see the updated SELinux file context rules instead of stale cached data (https://github.com/ansible-collections/community.general/issues/888, https://github.com/ansible-collections/community.general/pull/11812).
v11.4.6
=======
Release Summary
---------------
Regular bugfix release.
Bugfixes
--------
- counter_enabled callback plugin - fix plugin not observing ``display_ok_hosts`` option (https://github.com/ansible-collections/community.general/issues/3978, https://github.com/ansible-collections/community.general/pull/11656).
- keycloak_authentication - fix ``TypeError`` crash when a flow is defined without ``authenticationExecutions`` (https://github.com/ansible-collections/community.general/issues/11547, https://github.com/ansible-collections/community.general/pull/11548).
- xfconf - representation of boolean properties was not consistent between Python and ``xfconf-query``, leading to broken idempotency (https://github.com/ansible-collections/community.general/pull/11645).
v11.4.5
=======
Release Summary
---------------
Regular 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).
v11.4.4
=======
Release Summary
---------------
Regular bugfix release.
Bugfixes
--------
- cloudflare_dns - also allow ``flag=128`` for CAA records (https://github.com/ansible-collections/community.general/issues/11355, https://github.com/ansible-collections/community.general/pull/11377).
- logstash_plugin - fix argument order when using ``version`` parameter. The plugin name must come after options like ``--version`` for the ``logstash-plugin`` CLI to work correctly (https://github.com/ansible-collections/community.general/issues/10745, https://github.com/ansible-collections/community.general/pull/11440).
v11.4.3
=======
Release Summary
---------------
Regular bugfix release.
Bugfixes
--------
- keycloak_realm - fixed crash in ``sanitize_cr()`` when ``realmrep`` was ``None`` (https://github.com/ansible-collections/community.general/pull/11260).
- listen_ports_facts - fix handling of empty PID lists when ``command=ss`` (https://github.com/ansible-collections/community.general/pull/11332).
- monit - add delay of 0.5 seconds after state change and check for status (https://github.com/ansible-collections/community.general/pull/11255).
- monit - internal state was not reflecting when operation is "pending" in ``monit`` (https://github.com/ansible-collections/community.general/pull/11245).
v11.4.2 v11.4.2
======= =======
@@ -180,8 +255,8 @@ Filter
New Modules New Modules
----------- -----------
- community.general.django_dumpdata - Wrapper for C(django-admin dumpdata). - community.general.django_dumpdata - Wrapper for ``django-admin dumpdata``.
- community.general.django_loaddata - Wrapper for C(django-admin loaddata). - community.general.django_loaddata - Wrapper for ``django-admin loaddata``.
- community.general.pacemaker_stonith - Manage Pacemaker STONITH. - community.general.pacemaker_stonith - Manage Pacemaker STONITH.
v11.2.1 v11.2.1
@@ -678,7 +753,7 @@ Minor Changes
- iocage inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). - iocage inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584).
- iocage inventory plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - iocage inventory plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379).
- iocage inventory plugin - the new parameter ``hooks_results`` of the plugin is a list of files inside a jail that provide configuration parameters for the inventory. The inventory plugin reads the files from the jails and put the contents into the items of created variable ``iocage_hooks`` (https://github.com/ansible-collections/community.general/issues/9650, https://github.com/ansible-collections/community.general/pull/9651). - iocage inventory plugin - the new parameter ``hooks_results`` of the plugin is a list of files inside a jail that provide configuration parameters for the inventory. The inventory plugin reads the files from the jails and put the contents into the items of created variable ``iocage_hooks`` (https://github.com/ansible-collections/community.general/issues/9650, https://github.com/ansible-collections/community.general/pull/9651).
- iocage inventory plugin - the new parameter ``inventory_hostname_tag`` of the plugin provides the name of the tag in the C(iocage properties notes) that contains the jails alias. The new parameter ``inventory_hostname_required``, if enabled, makes the tag mandatory (https://github.com/ansible-collections/community.general/issues/10206, https://github.com/ansible-collections/community.general/pull/10207). - iocage inventory plugin - the new parameter ``inventory_hostname_tag`` of the plugin provides the name of the tag in the ``iocage properties notes`` that contains the jails alias. The new parameter ``inventory_hostname_required``, if enabled, makes the tag mandatory (https://github.com/ansible-collections/community.general/issues/10206, https://github.com/ansible-collections/community.general/pull/10207).
- iocage inventory plugin - the new parameter ``sudo`` of the plugin lets the command ``iocage list -l`` to run as root on the iocage host. This is needed to get the IPv4 of a running DHCP jail (https://github.com/ansible-collections/community.general/issues/9572, https://github.com/ansible-collections/community.general/pull/9573). - iocage inventory plugin - the new parameter ``sudo`` of the plugin lets the command ``iocage list -l`` to run as root on the iocage host. This is needed to get the IPv4 of a running DHCP jail (https://github.com/ansible-collections/community.general/issues/9572, https://github.com/ansible-collections/community.general/pull/9573).
- iptables_state action plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - iptables_state action plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583).
- iptables_state action plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9318). - iptables_state action plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9318).
@@ -1086,8 +1161,8 @@ New Modules
- community.general.ldap_inc - Use the Modify-Increment LDAP V3 feature to increment an attribute value. - community.general.ldap_inc - Use the Modify-Increment LDAP V3 feature to increment an attribute value.
- community.general.lvm_pv - Manage LVM Physical Volumes. - community.general.lvm_pv - Manage LVM Physical Volumes.
- community.general.pacemaker_resource - Manage pacemaker resources. - community.general.pacemaker_resource - Manage pacemaker resources.
- community.general.systemd_creds_decrypt - C(systemd)'s C(systemd-creds decrypt) plugin. - community.general.systemd_creds_decrypt - ``systemd``'s ``systemd-creds decrypt`` plugin.
- community.general.systemd_creds_encrypt - C(systemd)'s C(systemd-creds encrypt) plugin. - community.general.systemd_creds_encrypt - ``systemd``'s ``systemd-creds encrypt`` plugin.
- community.general.systemd_info - Gather C(systemd) unit info. - community.general.systemd_info - Gather ``systemd`` unit info.
- community.general.xdg_mime - Set default handler for MIME types, for applications using XDG tools. - community.general.xdg_mime - Set default handler for MIME types, for applications using XDG tools.
- community.general.zpool - Manage ZFS zpools. - community.general.zpool - Manage ZFS zpools.

View File

@@ -39,7 +39,7 @@ For more information about communication, see the [Ansible communication guide](
## Tested with Ansible ## Tested with Ansible
Tested with the current ansible-core 2.16, ansible-core 2.17, ansible-core 2.18, ansible-core 2.19, ansible-core 2.20 releases and the current development version of ansible-core. Ansible-core versions before 2.16.0 are not supported. This includes all ansible-base 2.10 and Ansible 2.9 releases. Tested with the current ansible-core 2.16, ansible-core 2.17, ansible-core 2.18, ansible-core 2.19, ansible-core 2.20, and ansible-core 2.21 releases. Ansible-core versions before 2.16.0 are not supported. This includes all ansible-base 2.10 and Ansible 2.9 releases.
## External requirements ## External requirements

View File

@@ -422,7 +422,7 @@ releases:
the contents into the items of created variable ``iocage_hooks`` (https://github.com/ansible-collections/community.general/issues/9650, the contents into the items of created variable ``iocage_hooks`` (https://github.com/ansible-collections/community.general/issues/9650,
https://github.com/ansible-collections/community.general/pull/9651). https://github.com/ansible-collections/community.general/pull/9651).
- iocage inventory plugin - the new parameter ``inventory_hostname_tag`` of - iocage inventory plugin - the new parameter ``inventory_hostname_tag`` of
the plugin provides the name of the tag in the C(iocage properties notes) the plugin provides the name of the tag in the ``iocage properties notes``
that contains the jails alias. The new parameter ``inventory_hostname_required``, that contains the jails alias. The new parameter ``inventory_hostname_required``,
if enabled, makes the tag mandatory (https://github.com/ansible-collections/community.general/issues/10206, if enabled, makes the tag mandatory (https://github.com/ansible-collections/community.general/issues/10206,
https://github.com/ansible-collections/community.general/pull/10207). https://github.com/ansible-collections/community.general/pull/10207).
@@ -1048,13 +1048,13 @@ releases:
- description: Manage pacemaker resources. - description: Manage pacemaker resources.
name: pacemaker_resource name: pacemaker_resource
namespace: '' namespace: ''
- description: C(systemd)'s C(systemd-creds decrypt) plugin. - description: '``systemd``''s ``systemd-creds decrypt`` plugin.'
name: systemd_creds_decrypt name: systemd_creds_decrypt
namespace: '' namespace: ''
- description: C(systemd)'s C(systemd-creds encrypt) plugin. - description: '``systemd``''s ``systemd-creds encrypt`` plugin.'
name: systemd_creds_encrypt name: systemd_creds_encrypt
namespace: '' namespace: ''
- description: Gather C(systemd) unit info. - description: Gather ``systemd`` unit info.
name: systemd_info name: systemd_info
namespace: '' namespace: ''
- description: Set default handler for MIME types, for applications using XDG - description: Set default handler for MIME types, for applications using XDG
@@ -1721,10 +1721,10 @@ releases:
- keycloak-realm-webauthn-policies.yml - keycloak-realm-webauthn-policies.yml
- random_string_seed.yml - random_string_seed.yml
modules: modules:
- description: Wrapper for C(django-admin dumpdata). - description: Wrapper for ``django-admin dumpdata``.
name: django_dumpdata name: django_dumpdata
namespace: '' namespace: ''
- description: Wrapper for C(django-admin loaddata). - description: Wrapper for ``django-admin loaddata``.
name: django_loaddata name: django_loaddata
namespace: '' namespace: ''
- description: Manage Pacemaker STONITH. - description: Manage Pacemaker STONITH.
@@ -1883,3 +1883,94 @@ releases:
- 11206-datetime.yml - 11206-datetime.yml
- filesystem-xfs-resize-slack.yml - filesystem-xfs-resize-slack.yml
release_date: '2025-12-01' release_date: '2025-12-01'
11.4.3:
changes:
bugfixes:
- keycloak_realm - fixed crash in ``sanitize_cr()`` when ``realmrep`` was
``None`` (https://github.com/ansible-collections/community.general/pull/11260).
- listen_ports_facts - fix handling of empty PID lists when ``command=ss``
(https://github.com/ansible-collections/community.general/pull/11332).
- monit - add delay of 0.5 seconds after state change and check for status
(https://github.com/ansible-collections/community.general/pull/11255).
- monit - internal state was not reflecting when operation is "pending" in
``monit`` (https://github.com/ansible-collections/community.general/pull/11245).
release_summary: Regular bugfix release.
fragments:
- 11.4.3.yml
- 11245-monit-enum.yml
- 11255-monit-integrationtests.yml
- 11260-keycloak-realm-crash-when-no-realms.yml
- listen-ports-facts-return-no-facts.yml
release_date: '2025-12-29'
11.4.4:
changes:
bugfixes:
- cloudflare_dns - also allow ``flag=128`` for CAA records (https://github.com/ansible-collections/community.general/issues/11355,
https://github.com/ansible-collections/community.general/pull/11377).
- logstash_plugin - fix argument order when using ``version`` parameter. The
plugin name must come after options like ``--version`` for the ``logstash-plugin``
CLI to work correctly (https://github.com/ansible-collections/community.general/issues/10745,
https://github.com/ansible-collections/community.general/pull/11440).
release_summary: Regular bugfix release.
fragments:
- 11.4.4.yml
- 11377-cloudflare_dns-caa.yml
- 11440-logstash-plugin-fix-version-argument-order.yml
release_date: '2026-01-26'
11.4.5:
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: Regular bugfix release.
fragments:
- 11.4.5.yml
- 11492-python_requires_info.yml
release_date: '2026-02-23'
11.4.6:
changes:
bugfixes:
- counter_enabled callback plugin - fix plugin not observing ``display_ok_hosts``
option (https://github.com/ansible-collections/community.general/issues/3978,
https://github.com/ansible-collections/community.general/pull/11656).
- keycloak_authentication - fix ``TypeError`` crash when a flow is defined
without ``authenticationExecutions`` (https://github.com/ansible-collections/community.general/issues/11547,
https://github.com/ansible-collections/community.general/pull/11548).
- xfconf - representation of boolean properties was not consistent between
Python and ``xfconf-query``, leading to broken idempotency (https://github.com/ansible-collections/community.general/pull/11645).
release_summary: Regular bugfix release.
fragments:
- 11.4.6.yml
- 11645-xfconf-bool.yml
- 11656-counter_enabled-display_ok_hosts.yml
- keycloak-authentication-none-executions.yml
release_date: '2026-03-23'
11.4.7:
changes:
bugfixes:
- flatpak - support new output message when an update resulted in no action
that appears on Fedora 44 (https://github.com/ansible-collections/community.general/pull/11836).
- homebrew_cask - fix ``sudo_password`` failing when the password contains
single quotes or other special shell characters (https://github.com/ansible-collections/community.general/issues/4957,
https://github.com/ansible-collections/community.general/pull/11850).
- lvol - fix LVM version parsing (https://github.com/ansible-collections/community.general/issues/5445,
https://github.com/ansible-collections/community.general/pull/11823).
- mssql_script - only passes ``params`` to ``cursor.execute()`` when the user
actually provides them (https://github.com/ansible-collections/community.general/issues/11699,
https://github.com/ansible-collections/community.general/pull/11754).
- sefcontext - flush the in-process ``matchpathcon`` cache after applying
changes, so subsequent tasks running in the same process (for example via
the Mitogen connection plugin) see the updated SELinux file context rules
instead of stale cached data (https://github.com/ansible-collections/community.general/issues/888,
https://github.com/ansible-collections/community.general/pull/11812).
release_summary: Regular bugfix release.
fragments:
- 11.4.7.yml
- 11754-mssql-script-params-substitution.yml
- 11812-sefcontext-matchpathcon-cache-flush.yml
- 11823-lvol-lvm-version-regex.yml
- 11836-fixes.yml
- 11850-homebrew-cask-sudo-password.yml
release_date: '2026-04-20'

View File

@@ -12,7 +12,7 @@ The inventory plugin :ansplugin:`community.general.iocage#inventory` gets the in
See: See:
* `iocage - A FreeBSD Jail Manager <https://iocage.readthedocs.io/en/latest>`_ * `iocage - A FreeBSD Jail Manager <https://freebsd.github.io/iocage/>`_
* `man iocage <https://man.freebsd.org/cgi/man.cgi?query=iocage>`_ * `man iocage <https://man.freebsd.org/cgi/man.cgi?query=iocage>`_
* `Jails and Containers <https://docs.freebsd.org/en/books/handbook/jails>`_ * `Jails and Containers <https://docs.freebsd.org/en/books/handbook/jails>`_

View File

@@ -20,7 +20,7 @@ As root at the iocage host, create three VNET jails with a DHCP interface from t
shell> iocage create --template ansible_client --name srv_3 bpf=1 dhcp=1 vnet=1 shell> iocage create --template ansible_client --name srv_3 bpf=1 dhcp=1 vnet=1
srv_3 successfully created! srv_3 successfully created!
See: `Configuring a VNET Jail <https://iocage.readthedocs.io/en/latest/networking.html#configuring-a-vnet-jail>`_. See: `Configuring VNET <https://freebsd.github.io/iocage/networking.html#vimage-vnet>`_.
As admin at the controller, list the jails: As admin at the controller, list the jails:
@@ -115,7 +115,7 @@ Optionally, create shared IP jails:
| None | srv_3 | off | down | jail | 14.2-RELEASE-p3 | em0|10.1.0.103/24 | - | ansible_client | no | | None | srv_3 | off | down | jail | 14.2-RELEASE-p3 | em0|10.1.0.103/24 | - | ansible_client | no |
+------+-------+------+-------+------+-----------------+-------------------+-----+----------------+----------+ +------+-------+------+-------+------+-----------------+-------------------+-----+----------------+----------+
See: `Configuring a Shared IP Jail <https://iocage.readthedocs.io/en/latest/networking.html#configuring-a-shared-ip-jail>`_ See: `Configuring a Shared IP Jail <https://freebsd.github.io/iocage/networking.html#shared-ip>`_
If iocage needs environment variable(s), use the option :ansopt:`community.general.iocage#inventory:env`. For example, If iocage needs environment variable(s), use the option :ansopt:`community.general.iocage#inventory:env`. For example,

View File

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

View File

@@ -164,6 +164,8 @@ class CallbackModule(CallbackBase):
msg = f"changed: {self._host_counter}/{self._host_total} [{result._host.get_name()}]" msg = f"changed: {self._host_counter}/{self._host_total} [{result._host.get_name()}]"
color = C.COLOR_CHANGED color = C.COLOR_CHANGED
else: else:
if not self._plugin_options.get("display_ok_hosts", True):
return
if delegated_vars: if delegated_vars:
msg = f"ok: {self._host_counter}/{self._host_total} [{result._host.get_name()} -> {delegated_vars['ansible_host']}]" msg = f"ok: {self._host_counter}/{self._host_total} [{result._host.get_name()} -> {delegated_vars['ansible_host']}]"
else: else:

View File

@@ -18,6 +18,12 @@ options:
description: A string containing an INI document. description: A string containing an INI document.
type: string type: string
required: true required: true
seealso:
- plugin: community.general.to_ini
plugin_type: filter
- plugin: ansible.builtin.ini
plugin_type: lookup
- module: community.general.ini_file
""" """
EXAMPLES = r""" EXAMPLES = r"""

View File

@@ -18,6 +18,12 @@ options:
description: The dictionary that should be converted to the INI format. description: The dictionary that should be converted to the INI format.
type: dictionary type: dictionary
required: true required: true
seealso:
- plugin: ansible.builtin.ini
plugin_type: lookup
- module: community.general.ini_file
- plugin: community.general.from_ini
plugin_type: filter
""" """
EXAMPLES = r""" EXAMPLES = r"""

View File

@@ -14,7 +14,7 @@ DOCUMENTATION = r"""
module: archive module: archive
short_description: Creates a compressed archive of one or more files or trees short_description: Creates a compressed archive of one or more files or trees
extends_documentation_fragment: extends_documentation_fragment:
- files - ansible.builtin.files
- community.general.attributes - community.general.attributes
description: description:
- Creates or extends an archive. - Creates or extends an archive.

View File

@@ -61,9 +61,12 @@ options:
flag: flag:
description: description:
- Issuer Critical Flag. - Issuer Critical Flag.
- Should be set either to V(0) for not critical, or to V(128) for critical.
- Before community.general 11.4.4, only V(0) and V(1) were valid options.
The value V(1) is still available for backwards-compatibility reasons.
- Required for O(type=CAA) when O(state=present). - Required for O(type=CAA) when O(state=present).
type: int type: int
choices: [0, 1] choices: [0, 1, 128]
version_added: 8.0.0 version_added: 8.0.0
tag: tag:
description: description:
@@ -907,7 +910,7 @@ def main():
hash_type=dict(type='int', choices=[1, 2]), hash_type=dict(type='int', choices=[1, 2]),
key_tag=dict(type='int', no_log=False), key_tag=dict(type='int', no_log=False),
port=dict(type='int'), port=dict(type='int'),
flag=dict(type='int', choices=[0, 1]), flag=dict(type='int', choices=[0, 1, 128]),
tag=dict(type='str', choices=['issue', 'issuewild', 'iodef']), tag=dict(type='str', choices=['issue', 'issuewild', 'iodef']),
tags=dict(type='list', elements='str'), tags=dict(type='list', elements='str'),
priority=dict(type='int', default=1), priority=dict(type='int', default=1),

View File

@@ -226,7 +226,7 @@ def update_flat(module, binary, names, method, no_dependencies):
command += installed_flat_names command += installed_flat_names
stdout = _flatpak_command(module, module.check_mode, command) stdout = _flatpak_command(module, module.check_mode, command)
result["changed"] = ( result["changed"] = (
True if module.check_mode else stdout.find("Nothing to do.") == -1 True if module.check_mode else (stdout.find("Nothing to do.") == -1 and stdout.find("Nothing to update.") == -1)
) )

View File

@@ -145,14 +145,16 @@ EXAMPLES = r"""
greedy: true greedy: true
- name: Using sudo password for installing cask - name: Using sudo password for installing cask
# ansible_become_password must be set in inventory or group_vars; it is not populated by -K
community.general.homebrew_cask: community.general.homebrew_cask:
name: wireshark name: wireshark
state: present state: present
sudo_password: "{{ ansible_become_pass }}" sudo_password: "{{ ansible_become_password }}"
""" """
import os import os
import re import re
import shlex
import tempfile import tempfile
from ansible_collections.community.general.plugins.module_utils.version import LooseVersion from ansible_collections.community.general.plugins.module_utils.version import LooseVersion
@@ -469,17 +471,15 @@ class HomebrewCask(object):
rc, out, err = '', '', '' rc, out, err = '', '', ''
with tempfile.NamedTemporaryFile() as sudo_askpass_file: with tempfile.NamedTemporaryFile() as sudo_askpass_file:
sudo_askpass_file.write(b"#!/bin/sh\n\necho '%s'\n" % to_bytes(self.sudo_password)) sudo_askpass_file.write(b"#!/bin/sh\necho %s\n" % to_bytes(shlex.quote(self.sudo_password)))
sudo_askpass_file.flush()
os.chmod(sudo_askpass_file.name, 0o700) os.chmod(sudo_askpass_file.name, 0o700)
sudo_askpass_file.file.close()
rc, out, err = self.module.run_command( rc, out, err = self.module.run_command(
cmd, cmd,
environ_update={'SUDO_ASKPASS': sudo_askpass_file.name} environ_update={'SUDO_ASKPASS': sudo_askpass_file.name}
) )
self.module.add_cleanup_file(sudo_askpass_file.name)
return (rc, out, err) return (rc, out, err)
# /sudo_password fix --------------------- }}} # /sudo_password fix --------------------- }}}

View File

@@ -76,7 +76,7 @@ notes:
requirements: [passlib>=1.6] requirements: [passlib>=1.6]
author: "Ansible Core Team" author: "Ansible Core Team"
extends_documentation_fragment: extends_documentation_fragment:
- files - ansible.builtin.files
- community.general.attributes - community.general.attributes
""" """

View File

@@ -16,7 +16,7 @@ DOCUMENTATION = r"""
module: ini_file module: ini_file
short_description: Tweak settings in INI files short_description: Tweak settings in INI files
extends_documentation_fragment: extends_documentation_fragment:
- files - ansible.builtin.files
- community.general.attributes - community.general.attributes
description: description:
- Manage (add, remove, change) individual settings in an INI-style file without having to manage the file as a whole with, - Manage (add, remove, change) individual settings in an INI-style file without having to manage the file as a whole with,
@@ -153,6 +153,13 @@ options:
notes: notes:
- While it is possible to add an O(option) without specifying a O(value), this makes no sense. - While it is possible to add an O(option) without specifying a O(value), this makes no sense.
- As of community.general 3.2.0, UTF-8 BOM markers are discarded when reading files. - As of community.general 3.2.0, UTF-8 BOM markers are discarded when reading files.
seealso:
- plugin: ansible.builtin.ini
plugin_type: lookup
- plugin: community.general.from_ini
plugin_type: filter
- plugin: community.general.to_ini
plugin_type: filter
author: author:
- Jan-Piet Mens (@jpmens) - Jan-Piet Mens (@jpmens)
- Ales Nosek (@noseka1) - Ales Nosek (@noseka1)

View File

@@ -60,7 +60,7 @@ options:
type: bool type: bool
default: false default: false
extends_documentation_fragment: extends_documentation_fragment:
- files - ansible.builtin.files
- community.general.attributes - community.general.attributes
attributes: attributes:
check_mode: check_mode:

View File

@@ -265,7 +265,7 @@ def create_or_update_executions(kc, config, realm='master'):
after = "" after = ""
before = "" before = ""
execution = None execution = None
if "authenticationExecutions" in config: if config.get("authenticationExecutions") is not None:
# Get existing executions on the Keycloak server for this alias # Get existing executions on the Keycloak server for this alias
existing_executions = kc.get_executions_representation(config, realm=realm) existing_executions = kc.get_executions_representation(config, realm=realm)
for new_exec_index, new_exec in enumerate(config["authenticationExecutions"], start=0): for new_exec_index, new_exec in enumerate(config["authenticationExecutions"], start=0):

View File

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

View File

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

View File

@@ -829,6 +829,9 @@ def sanitize_cr(realmrep):
:param realmrep: the realmrep dict to be sanitized :param realmrep: the realmrep dict to be sanitized
:return: sanitized realmrep dict :return: sanitized realmrep dict
""" """
if not realmrep:
return realmrep
result = realmrep.copy() result = realmrep.copy()
if 'secret' in result: if 'secret' in result:
result['secret'] = '********' result['secret'] = '********'

View File

@@ -302,10 +302,10 @@ def ss_parse(raw):
conns = regex_conns.search(local_addr_port) conns = regex_conns.search(local_addr_port)
pids = regex_pid.findall(process) pids = regex_pid.findall(process)
if conns is None and pids is None: if conns is None and not pids:
continue continue
if pids is None: if not pids:
# likely unprivileged user, so add empty name & pid # likely unprivileged user, so add empty name & pid
# as we do in netstat logic to be consistent with output # as we do in netstat logic to be consistent with output
pids = [(str(), 0)] pids = [(str(), 0)]

View File

@@ -101,7 +101,7 @@ def parse_error(string):
def install_plugin(module, plugin_bin, plugin_name, version, proxy_host, proxy_port): def install_plugin(module, plugin_bin, plugin_name, version, proxy_host, proxy_port):
cmd_args = [plugin_bin, PACKAGE_STATE_MAP["present"], plugin_name] cmd_args = [plugin_bin, PACKAGE_STATE_MAP["present"]]
if version: if version:
cmd_args.extend(["--version", version]) cmd_args.extend(["--version", version])
@@ -109,6 +109,8 @@ def install_plugin(module, plugin_bin, plugin_name, version, proxy_host, proxy_p
if proxy_host and proxy_port: if proxy_host and proxy_port:
cmd_args.extend(["-DproxyHost=%s" % proxy_host, "-DproxyPort=%s" % proxy_port]) cmd_args.extend(["-DproxyHost=%s" % proxy_host, "-DproxyPort=%s" % proxy_port])
cmd_args.append(plugin_name)
cmd = " ".join(cmd_args) cmd = " ".join(cmd_args)
if module.check_mode: if module.check_mode:

View File

@@ -34,7 +34,9 @@ options:
- List of comma-separated devices to use as physical devices in this volume group. - List of comma-separated devices to use as physical devices in this volume group.
- Required when creating or resizing volume group. - Required when creating or resizing volume group.
- The module runs C(pvcreate) if needed. - The module runs C(pvcreate) if needed.
- O(remove_extra_pvs) controls whether or not unspecified physical devices are removed from the volume group. - This parameter defines the B(desired state) of the physical volumes in the volume group.
When the volume group already exists, physical volumes not listed here are removed from it by default.
To add physical volumes without removing existing unlisted ones, set O(remove_extra_pvs=false).
type: list type: list
elements: str elements: str
pesize: pesize:

View File

@@ -284,7 +284,7 @@ def get_lvm_version(module):
rc, out, err = module.run_command([ver_cmd, "version"]) rc, out, err = module.run_command([ver_cmd, "version"])
if rc != 0: if rc != 0:
return None return None
m = re.search(r"LVM version:\s+(\d+)\.(\d+)\.(\d+).*(\d{4}-\d{2}-\d{2})", out) m = re.search(r"LVM version:\s+(\d+)\.(\d+)\.(\d+)", out)
if not m: if not m:
return None return None
return mkversion(m.group(1), m.group(2), m.group(3)) return mkversion(m.group(1), m.group(2), m.group(3))

View File

@@ -46,6 +46,9 @@ options:
config: config:
description: description:
- 'The config for the instance (for example V({"limits.cpu": "2"})).' - 'The config for the instance (for example V({"limits.cpu": "2"})).'
- All values in O(config) must be strings, as required by the LXD/Incus API.
Using non-string values (such as integers or booleans) will cause an API error.
Make sure to quote numeric and boolean values in YAML (for example, use V("2") instead of V(2)).
- See U(https://documentation.ubuntu.com/lxd/en/latest/api/#/instances/instance_get). - See U(https://documentation.ubuntu.com/lxd/en/latest/api/#/instances/instance_get).
- If the instance already exists and its "config" values in metadata obtained from the LXD API - If the instance already exists and its "config" values in metadata obtained from the LXD API
U(https://documentation.ubuntu.com/lxd/en/latest/api/#/instances/instance_get) U(https://documentation.ubuntu.com/lxd/en/latest/api/#/instances/instance_get)

View File

@@ -187,7 +187,7 @@ class Monit(object):
else: else:
status = Status.NOT_MONITORED status = Status.NOT_MONITORED
if state == 'pending': if state == 'PENDING':
status = status.pending() status = status.pending()
return status return status
@@ -259,6 +259,9 @@ class Monit(object):
def change_state(self, state, expected_status, invert_expected=None): def change_state(self, state, expected_status, invert_expected=None):
current_status = self.get_status() current_status = self.get_status()
self.run_command(STATE_COMMAND_MAP[state]) 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_status_change(current_status)
status = self.wait_for_monit_to_stop_pending(status) status = self.wait_for_monit_to_stop_pending(status)
status_match = status.value == expected_status.value status_match = status.value == expected_status.value

View File

@@ -370,7 +370,10 @@ def run_module():
for query in queries: for query in queries:
# Catch and exit on any bad query errors # Catch and exit on any bad query errors
try: try:
cursor.execute(query, sql_params) if sql_params:
cursor.execute(query, sql_params)
else:
cursor.execute(query)
qry_result = [] qry_result = []
rows = cursor.fetchall() rows = cursor.fetchall()
while rows: while rows:

View File

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

View File

@@ -39,7 +39,7 @@ options:
default: 0 default: 0
extends_documentation_fragment: extends_documentation_fragment:
- community.general.rundeck - community.general.rundeck
- url - ansible.builtin.url
- community.general.attributes - community.general.attributes
- community.general.attributes.info_module - community.general.attributes.info_module
""" """

View File

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

View File

@@ -279,6 +279,10 @@ def semanage_fcontext_modify(module, result, target, ftype, setype, substitute,
if module._diff and prepared_diff: if module._diff and prepared_diff:
result['diff'] = dict(prepared=prepared_diff) result['diff'] = dict(prepared=prepared_diff)
if changed and not module.check_mode:
# Flush the in-process matchpathcon cache
selinux.matchpathcon_fini()
module.exit_json(changed=changed, seuser=seuser, serange=serange, **result) module.exit_json(changed=changed, seuser=seuser, serange=serange, **result)
@@ -322,6 +326,10 @@ def semanage_fcontext_delete(module, result, target, ftype, setype, substitute,
if module._diff and prepared_diff: if module._diff and prepared_diff:
result['diff'] = dict(prepared=prepared_diff) result['diff'] = dict(prepared=prepared_diff)
if changed and not module.check_mode:
# Flush the in-process matchpathcon cache
selinux.matchpathcon_fini()
module.exit_json(changed=changed, **result) module.exit_json(changed=changed, **result)

View File

@@ -62,6 +62,11 @@ EXAMPLES = r"""
become: true become: true
community.general.timezone: community.general.timezone:
name: Asia/Tokyo name: Asia/Tokyo
- name: Set timezone and hardware clock to UTC
community.general.timezone:
name: UTC
hwclock: UTC
""" """
import errno import errno

View File

@@ -176,6 +176,8 @@ version:
version_added: 10.2.0 version_added: 10.2.0
""" """
from ansible.module_utils.parsing.convert_bool import boolean
from ansible_collections.community.general.plugins.module_utils.module_helper import StateModuleHelper from ansible_collections.community.general.plugins.module_utils.module_helper import StateModuleHelper
from ansible_collections.community.general.plugins.module_utils.xfconf import xfconf_runner, get_xfconf_version from ansible_collections.community.general.plugins.module_utils.xfconf import xfconf_runner, get_xfconf_version
@@ -238,9 +240,6 @@ class XFConfProperty(StateModuleHelper):
self.vars.value = None self.vars.value = None
def state_present(self): def state_present(self):
# stringify all values - in the CLI they will all be happy strings anyway
# and by doing this here the rest of the code can be agnostic to it
self.vars.value = [str(v) for v in self.vars.value]
value_type = self.vars.value_type value_type = self.vars.value_type
values_len = len(self.vars.value) values_len = len(self.vars.value)
@@ -253,6 +252,14 @@ class XFConfProperty(StateModuleHelper):
# or complain if lists' lengths are different # or complain if lists' lengths are different
self.do_raise('Number of elements in "value" and "value_type" must be the same') self.do_raise('Number of elements in "value" and "value_type" must be the same')
# stringify all values - in the CLI they will all be happy strings anyway
# and by doing this here the rest of the code can be agnostic to it
# bool values are normalized to 'true'/'false' to match xfconf-query output format
self.vars.value = [
("true" if boolean(v) else "false") if vt == "bool" else str(v)
for v, vt in zip(self.vars.value, value_type)
]
# calculates if it is an array # calculates if it is an array
self.vars.is_array = \ self.vars.is_array = \
bool(self.vars.force_array) or \ bool(self.vars.force_array) or \

View File

@@ -52,9 +52,11 @@
- name: Symlink java - name: Symlink java
become: true become: true
file: file:
src: "/usr/local/opt/openjdk@17/libexec/openjdk.jdk" src: "{{ brew_prefix }}/opt/openjdk@17/libexec/openjdk.jdk"
dest: "/Library/Java/JavaVirtualMachines/openjdk-17.jdk" dest: "/Library/Java/JavaVirtualMachines/openjdk-17.jdk"
state: link state: link
vars:
brew_prefix: "{{ lookup('pipe', 'brew --prefix') }}"
when: when:
- ansible_os_family == 'Darwin' - ansible_os_family == 'Darwin'

View File

@@ -32,6 +32,7 @@
- not (ansible_distribution == 'Archlinux') # TODO: package seems to be broken, cannot be downloaded from mirrors? - not (ansible_distribution == 'Archlinux') # TODO: package seems to be broken, cannot be downloaded from mirrors?
- not (ansible_distribution == 'Alpine') # TODO: not sure what's wrong here, the module doesn't return what the tests expect - not (ansible_distribution == 'Alpine') # TODO: not sure what's wrong here, the module doesn't return what the tests expect
- not (ansible_distribution == 'Debian' and ansible_distribution_major_version|int == 13) # TODO: not sure what's wrong here, the module doesn't return what the tests expect - not (ansible_distribution == 'Debian' and ansible_distribution_major_version|int == 13) # TODO: not sure what's wrong here, the module doesn't return what the tests expect
- not (ansible_distribution == 'Fedora' and ansible_distribution_major_version|int == 43) # TODO: not sure what's wrong here, the module doesn't return what the tests expect
block: block:
- name: setup install cloud-init - name: setup install cloud-init
package: package:

View File

@@ -111,9 +111,9 @@ cmd_echo_tests:
check_mode: true check_mode: true
expect_error: true # because if result contains rc != 0, ansible assumes error expect_error: true # because if result contains rc != 0, ansible assumes error
assertions: assertions:
- test_result.rc == None - test_result.rc | default(None) == None
- test_result.out == None - test_result.out | default(None) == None
- test_result.err == None - test_result.err | default(None) == None
- name: set aa and tt value - name: set aa and tt value
arg_formats: arg_formats:

View File

@@ -8,3 +8,4 @@ skip/macos
skip/osx skip/osx
skip/freebsd skip/freebsd
skip/rhel10.0 # FIXME skip/rhel10.0 # FIXME
skip/rhel10.1 # FIXME

View File

@@ -21,4 +21,6 @@ skip/rhel9.3
skip/rhel9.4 skip/rhel9.4
skip/rhel9.5 skip/rhel9.5
skip/rhel9.6 skip/rhel9.6
skip/rhel9.7
skip/rhel10.0 skip/rhel10.0
skip/rhel10.1

View File

@@ -21,4 +21,6 @@ skip/rhel9.3
skip/rhel9.4 skip/rhel9.4
skip/rhel9.5 skip/rhel9.5
skip/rhel9.6 skip/rhel9.6
skip/rhel9.7
skip/rhel10.0 skip/rhel10.0
skip/rhel10.1

View File

@@ -0,0 +1,5 @@
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
azp/posix/1

View File

@@ -0,0 +1,5 @@
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
azp/posix/1

View File

@@ -126,12 +126,18 @@
input | input |
community.general.json_diff(target) | community.general.json_diff(target) |
sort(attribute='path') sort(attribute='path')
== in [expected_1, expected_2]
[
{"op": "add", "path": "/baq", "value": {"baz": 2}},
{"op": "remove", "path": "/baw/1"},
{"op": "replace", "path": "/hello", "value": "night"},
]
vars: vars:
input: {"foo": 1, "bar":{"baz": 2}, "baw": [1, 2, 3], "hello": "day"} input: {"foo": 1, "bar":{"baz": 2}, "baw": [1, 2, 3], "hello": "day"}
target: {"foo": 1, "bar": {"baz": 2}, "baw": [1, 3], "baq": {"baz": 2}, "hello": "night"} target: {"foo": 1, "bar": {"baz": 2}, "baw": [1, 3], "baq": {"baz": 2}, "hello": "night"}
expected_1:
# Older jsonpatch version
- {"op": "add", "path": "/baq", "value": {"baz": 2}}
- {"op": "remove", "path": "/baw/1"}
- {"op": "replace", "path": "/hello", "value": "night"}
expected_2:
# Newer jsonpatch version
- {"op": "add", "path": "/baq", "value": {"baz": 2}}
- {"op": "remove", "path": "/baw/1"}
- {"op": "move", "path": "/baw/1", "from": "/baw/2"}
- {"op": "replace", "path": "/hello", "value": "night"}

View File

@@ -0,0 +1,5 @@
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
azp/posix/1

View File

@@ -10,19 +10,10 @@
become: true become: true
when: ansible_distribution == 'Fedora' when: ansible_distribution == 'Fedora'
- block: - name: Install flatpak package on Ubuntu
- name: Activate flatpak ppa on Ubuntu apt:
apt_repository: name: flatpak
repo: ppa:alexlarsson/flatpak state: present
state: present
mode: '0644'
when: ansible_lsb.major_release | int < 18
- name: Install flatpak package on Ubuntu
apt:
name: flatpak
state: present
when: ansible_distribution == 'Ubuntu' when: ansible_distribution == 'Ubuntu'
- name: Install dummy remote for user - name: Install dummy remote for user

View File

@@ -8,17 +8,10 @@
name: flatpak name: flatpak
state: present state: present
when: ansible_distribution == 'Fedora' when: ansible_distribution == 'Fedora'
- block: - name: Install flatpak package on Ubuntu
- name: Activate flatpak ppa on Ubuntu versions older than 18.04/bionic apt:
apt_repository: name: flatpak
repo: ppa:alexlarsson/flatpak state: present
state: present
mode: '0644'
when: ansible_lsb.major_release | int < 18
- name: Install flatpak package on Ubuntu
apt:
name: flatpak
state: present
when: ansible_distribution == 'Ubuntu' when: ansible_distribution == 'Ubuntu'
- name: Install flatpak remote for testing check mode - name: Install flatpak remote for testing check mode
flatpak_remote: flatpak_remote:

View File

@@ -14,4 +14,6 @@ skip/rhel9.3 # See https://www.reddit.com/r/Fedora/comments/si7nzk/homectl/
skip/rhel9.4 # See https://www.reddit.com/r/Fedora/comments/si7nzk/homectl/ skip/rhel9.4 # See https://www.reddit.com/r/Fedora/comments/si7nzk/homectl/
skip/rhel9.5 # See https://www.reddit.com/r/Fedora/comments/si7nzk/homectl/ skip/rhel9.5 # See https://www.reddit.com/r/Fedora/comments/si7nzk/homectl/
skip/rhel9.6 # See https://www.reddit.com/r/Fedora/comments/si7nzk/homectl/ skip/rhel9.6 # See https://www.reddit.com/r/Fedora/comments/si7nzk/homectl/
skip/rhel9.7 # See https://www.reddit.com/r/Fedora/comments/si7nzk/homectl/
skip/rhel10.0 # See https://www.reddit.com/r/Fedora/comments/si7nzk/homectl/ skip/rhel10.0 # See https://www.reddit.com/r/Fedora/comments/si7nzk/homectl/
skip/rhel10.1 # See https://www.reddit.com/r/Fedora/comments/si7nzk/homectl/

View File

@@ -8,12 +8,21 @@
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) # GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
- name: ensure iptables package is installed - name: ensure iptables package is installed (non-RHEL)
package: package:
name: name:
- iptables - iptables
become: true become: true
when: not (ansible_facts.distribution == 'RedHat' and ansible_facts.distribution_major_version|int >= 10)
- name: ensure iptables package is installed (RHEL 10+)
package:
name:
- "kernel-modules-extra-matched-{{ ansible_facts.kernel }}"
- "iptables-nft"
- "kernel-modules-extra-{{ ansible_facts.kernel }}"
become: true
when: ansible_facts.distribution == 'RedHat' and ansible_facts.distribution_major_version|int >= 10
- name: include tasks - name: include tasks
vars: vars:

View File

@@ -272,7 +272,7 @@
assert: assert:
that: that:
- iptables_state is failed - iptables_state is failed
- "iptables_state.msg == 'Table mangle to restore not defined in {{ iptables_tests }}'" - "iptables_state.msg == ('Table mangle to restore not defined in ' ~ iptables_tests)"
success_msg: >- success_msg: >-
The previous error has been triggered by trying to restore a table The previous error has been triggered by trying to restore a table
that is missing in the file provided to iptables-restore. that is missing in the file provided to iptables-restore.

View File

@@ -14,7 +14,9 @@ skip/rhel9.3 # FIXME
skip/rhel9.4 # FIXME skip/rhel9.4 # FIXME
skip/rhel9.5 # FIXME skip/rhel9.5 # FIXME
skip/rhel9.6 # FIXME skip/rhel9.6 # FIXME
skip/rhel9.7 # FIXME
skip/rhel10.0 # FIXME skip/rhel10.0 # FIXME
skip/rhel10.1 # FIXME
skip/freebsd12.4 # FIXME skip/freebsd12.4 # FIXME
skip/freebsd13.2 # FIXME skip/freebsd13.2 # FIXME
skip/freebsd13.3 # FIXME skip/freebsd13.3 # FIXME
@@ -24,3 +26,5 @@ skip/freebsd14.0 # FIXME
skip/freebsd14.1 # FIXME skip/freebsd14.1 # FIXME
skip/freebsd14.2 # FIXME skip/freebsd14.2 # FIXME
skip/freebsd14.3 # FIXME skip/freebsd14.3 # FIXME
skip/freebsd14.4 # FIXME
skip/freebsd15.0 # FIXME

View File

@@ -13,6 +13,12 @@
- set_fact: - set_fact:
output_test_dir: '{{ remote_tmp_dir }}/test_iso_extract' output_test_dir: '{{ remote_tmp_dir }}/test_iso_extract'
# TODO: figure out and fix!
- name: Doesn't work with Fedora 43 for some reason
meta: end_play
when:
- ansible_distribution == 'Fedora' and ansible_distribution_major_version is version('43', '==')
- name: Install EPEL repository (RHEL only) - name: Install EPEL repository (RHEL only)
include_role: include_role:
name: setup_epel name: setup_epel

View File

@@ -0,0 +1,5 @@
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
unsupported

View File

@@ -0,0 +1,5 @@
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
unsupported

View File

@@ -0,0 +1,5 @@
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
unsupported

View File

@@ -0,0 +1,5 @@
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
unsupported

View File

@@ -9,6 +9,11 @@
dest: "{{ launchd_plist_location }}" dest: "{{ launchd_plist_location }}"
become: true become: true
- name: ensure target directory exists
file:
path: /usr/local/sbin
state: directory
- name: install the test daemon script - name: install the test daemon script
copy: copy:
src: ansible_test_service.py src: ansible_test_service.py

View File

@@ -0,0 +1,5 @@
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
unsupported

View File

@@ -0,0 +1,72 @@
---
####################################################################
# WARNING: These are designed specifically for Ansible tests #
# and should not be used as examples of how to write Ansible roles #
####################################################################
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
- name: Check if logstash-plugin is available
ansible.builtin.stat:
path: /usr/share/logstash/bin/logstash-plugin
register: logstash_plugin_bin
- name: Run logstash_plugin tests
when: logstash_plugin_bin.stat.exists
block:
- name: Install plugin without version (should succeed)
community.general.logstash_plugin:
name: logstash-filter-dissect
state: present
register: install_no_version
- name: Assert plugin installed
ansible.builtin.assert:
that:
- install_no_version is changed
- name: Install same plugin again (idempotency)
community.general.logstash_plugin:
name: logstash-filter-dissect
state: present
register: install_no_version_again
- name: Assert idempotency without version
ansible.builtin.assert:
that:
- install_no_version_again is not changed
- name: Remove plugin for version test
community.general.logstash_plugin:
name: logstash-filter-dissect
state: absent
- name: Install plugin with specific version
community.general.logstash_plugin:
name: logstash-filter-dissect
state: present
version: "3.2.0"
register: install_with_version
- name: Assert plugin with version installed
ansible.builtin.assert:
that:
- install_with_version is changed
- name: Verify command has correct argument order
ansible.builtin.assert:
that:
# The cmd output should show --version before plugin name
- "'--version' in install_with_version.cmd"
- "'3.2.0' in install_with_version.cmd"
- "install_with_version.cmd.index('--version') < install_with_version.cmd.index('logstash-filter-dissect')"
always:
- name: Cleanup - remove test plugin
community.general.logstash_plugin:
name: logstash-filter-dissect
state: absent
when: logstash_plugin_bin.stat.exists
ignore_errors: true

View File

@@ -0,0 +1,5 @@
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
unsupported

View File

@@ -45,16 +45,37 @@
ansible.builtin.get_url: ansible.builtin.get_url:
url: https://packages.gopass.pw/repos/gopass/gopass-archive-keyring.gpg url: https://packages.gopass.pw/repos/gopass/gopass-archive-keyring.gpg
dest: /usr/share/keyrings/gopass-archive-keyring.gpg dest: /usr/share/keyrings/gopass-archive-keyring.gpg
- name: Add gopass repo - name: Make sure python3-debian is installed
ansible.builtin.apt_repository: ansible.builtin.apt:
repo: "deb [arch=amd64,arm64,armhf \ name: python3-debian
signed-by=/usr/share/keyrings/gopass-archive-keyring.gpg] \
https://packages.gopass.pw/repos/gopass stable main"
state: present state: present
- name: Update apt-cache and install gopass package - name: Add gopass repo
ansible.builtin.deb822_repository:
name: gopass
types: deb
architectures:
- amd64
- arm64
- armhf
signed_by: /usr/share/keyrings/gopass-archive-keyring.gpg
uris:
- https://packages.gopass.pw/repos/gopass
suites:
- stable
components:
- main
state: present
register: apt_repo
- name: Update apt cache
ansible.builtin.apt:
update_cache: true
when: apt_repo is changed
- name: Install gopass package
ansible.builtin.apt: ansible.builtin.apt:
name: gopass name: gopass
update_cache: true state: present
- name: Install on macOS - name: Install on macOS
when: ansible_facts.distribution == 'MacOSX' when: ansible_facts.distribution == 'MacOSX'

View File

@@ -12,3 +12,4 @@ skip/osx
skip/macos skip/macos
skip/alpine3.21 # TODO try to fix skip/alpine3.21 # TODO try to fix
skip/alpine3.22 # TODO try to fix skip/alpine3.22 # TODO try to fix
skip/alpine3.23 # TODO try to fix

View File

@@ -52,6 +52,14 @@
name: monit name: monit
state: restarted state: restarted
- name: wait for monit daemon to be responsive after restart
command: monit status -B httpd_echo
register: monit_status_check
changed_when: false
until: monit_status_check.rc == 0
retries: 10
delay: 0.5
- name: test process present again - name: test process present again
monit: monit:
name: httpd_echo name: httpd_echo

View File

@@ -25,8 +25,9 @@
- include_tasks: run.yml - include_tasks: run.yml
vars: vars:
nodejs_version: '{{ item }}' nodejs_version: '{{ item }}'
nodejs_path: 'node-v{{ nodejs_version }}-{{ ansible_system|lower }}-x{{ ansible_userspace_bits }}' nodejs_path: 'node-v{{ nodejs_version }}-{{ ansible_facts.system|lower }}-{{ nodejs_arch }}'
nodejs_arch: '{{ "x64" if ansible_architecture == "x86_64" else "arm64" if ansible_architecture in ("arm64", "aarch64") else ansible_architecture }}'
nodejs_ext: '{{ ".tar.xz" if ansible_system == "Linux" else ".tar.gz" }}'
nodejs_download: 'https://nodejs.org/dist/v{{ nodejs_version }}/{{ nodejs_path }}{{ nodejs_ext }}'
with_items: with_items:
- 7.10.1 # provides npm 4.2.0 (last npm < 5 released) - 16.20.2 # oldest node version with macOS arm64 support
- 8.0.0 # provides npm 5.0.0
- 8.2.0 # provides npm 5.3.0 (output change with this version)

View File

@@ -3,9 +3,13 @@
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) # GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
- name: 'Download NPM' - name: Show Node.js Download URL
debug:
var: nodejs_download
- name: Download Node.js
unarchive: unarchive:
src: 'https://ansible-ci-files.s3.amazonaws.com/test/integration/targets/npm/{{ nodejs_path }}.tar.gz' src: '{{ nodejs_download }}'
dest: '{{ remote_tmp_dir }}' dest: '{{ remote_tmp_dir }}'
remote_src: true remote_src: true
creates: '{{ remote_tmp_dir }}/{{ nodejs_path }}.tar.gz' creates: '{{ remote_tmp_dir }}/{{ nodejs_path }}.tar.gz'

View File

@@ -14,5 +14,7 @@ skip/rhel9.3
skip/rhel9.4 skip/rhel9.4
skip/rhel9.5 skip/rhel9.5
skip/rhel9.6 skip/rhel9.6
skip/rhel9.7
skip/rhel10.0 skip/rhel10.0
skip/rhel10.1
skip/freebsd skip/freebsd

View File

@@ -16,14 +16,37 @@
- ndg-httpsclient - ndg-httpsclient
- pyasn1 - pyasn1
- name: Add InfluxDB public GPG key - name: Make sure python3-debian is installed
apt_key: url=https://repos.influxdata.com/influxdb.key state=present ansible.builtin.apt:
name: python3-debian
state: present
- name: Add InfluxDB repository - name: Add InfluxDB repository
apt_repository: repo='deb https://repos.influxdata.com/ubuntu trusty stable' filename='influxdb' state=present update_cache=yes ansible.builtin.deb822_repository:
update_cache: true
name: influxdb
types: deb
signed_by: https://repos.influxdata.com/influxdb.key
uris:
- https://repos.influxdata.com/ubuntu
suites:
- trusty
components:
- stable
state: present
register: apt_repo
- name: Update apt cache
ansible.builtin.apt:
update_cache: true
when: apt_repo is changed
- name: Install InfluxDB - name: Install InfluxDB
apt: name=influxdb state=latest ansible.builtin.apt:
name: influxdb
state: latest
- name: Start InfluxDB service - name: Start InfluxDB service
service: name=influxdb state=started ansible.builtin.service:
name: influxdb
state: started

View File

@@ -0,0 +1 @@
nothing.yml

View File

@@ -7,4 +7,3 @@ destructive
skip/aix skip/aix
skip/rhel # TODO executables are installed in /usr/local/bin, which isn't part of $PATH skip/rhel # TODO executables are installed in /usr/local/bin, which isn't part of $PATH
skip/macos # TODO executables are installed in /Library/Frameworks/Python.framework/Versions/3.11/bin, which isn't part of $PATH skip/macos # TODO executables are installed in /Library/Frameworks/Python.framework/Versions/3.11/bin, which isn't part of $PATH
unstable # TODO fix!

View File

@@ -146,7 +146,7 @@
when: >- when: >-
ansible_distribution_version is version('12.4', '>=') and ansible_distribution_version is version('13', '<') ansible_distribution_version is version('12.4', '>=') and ansible_distribution_version is version('13', '<')
or ansible_distribution_version is version('13.4', '>=') and ansible_distribution_version is version('14', '<') or ansible_distribution_version is version('13.4', '>=') and ansible_distribution_version is version('14', '<')
or ansible_distribution_version is version('14.2', '>=') or ansible_distribution_version is version('14.3', '>=')
block: block:
- name: Setup testjail - name: Setup testjail
include_tasks: setup-testjail.yml include_tasks: setup-testjail.yml

View File

@@ -16,7 +16,9 @@ skip/rhel9.3 # FIXME
skip/rhel9.4 # FIXME skip/rhel9.4 # FIXME
skip/rhel9.5 # FIXME skip/rhel9.5 # FIXME
skip/rhel9.6 # FIXME skip/rhel9.6 # FIXME
skip/rhel9.7 # FIXME
skip/rhel10.0 # FIXME skip/rhel10.0 # FIXME
skip/rhel10.1 # FIXME
skip/docker skip/docker
needs/root needs/root
needs/target/setup_epel needs/target/setup_epel

View File

@@ -14,10 +14,12 @@
- include_tasks: run.yml - include_tasks: run.yml
vars: vars:
nodejs_version: '{{ item.node_version }}' nodejs_version: '{{ item.node_version }}'
nodejs_path: 'node-v{{ nodejs_version }}-{{ ansible_system|lower }}-x{{ ansible_userspace_bits }}' nodejs_path: 'node-v{{ nodejs_version }}-{{ ansible_facts.system|lower }}-{{ nodejs_arch }}'
nodejs_arch: '{{ "x64" if ansible_architecture == "x86_64" else "arm64" if ansible_architecture in ("arm64", "aarch64") else ansible_architecture }}'
nodejs_ext: '{{ ".tar.xz" if ansible_system == "Linux" else ".tar.gz" }}'
nodejs_download: 'https://nodejs.org/dist/v{{ nodejs_version }}/{{ nodejs_path }}{{ nodejs_ext }}'
yarn_version: '{{ item.yarn_version }}' yarn_version: '{{ item.yarn_version }}'
with_items: with_items:
- {node_version: 4.8.0, yarn_version: 1.6.0} # Lowest compatible nodejs version - {node_version: 16.20.2, yarn_version: 1.22.22} # oldest node version with macOS arm64 support
- {node_version: 8.0.0, yarn_version: 1.6.0}
when: when:
- not (ansible_os_family == 'Alpine') # TODO - not (ansible_os_family == 'Alpine') # TODO

View File

@@ -8,16 +8,20 @@
path: /usr/local/lib/nodejs path: /usr/local/lib/nodejs
state: directory state: directory
- name: 'Download Nodejs' - name: Show Node.js Download URL
debug:
var: nodejs_download
- name: Download Node.js
unarchive: unarchive:
src: 'https://ansible-ci-files.s3.amazonaws.com/test/integration/targets/yarn/{{ nodejs_path }}.tar.gz' src: '{{ nodejs_download }}'
dest: '{{ remote_tmp_dir }}' dest: '{{ remote_tmp_dir }}'
remote_src: true remote_src: true
creates: '{{ remote_tmp_dir }}/{{ nodejs_path }}.tar.gz' creates: '{{ remote_tmp_dir }}/{{ nodejs_path }}.tar.gz'
- name: 'Download Yarn' - name: 'Download Yarn'
unarchive: unarchive:
src: 'https://ansible-ci-files.s3.amazonaws.com/test/integration/targets/yarn/yarn-v{{yarn_version}}.tar.gz' src: 'https://github.com/yarnpkg/yarn/releases/download/v{{yarn_version}}/yarn-v{{yarn_version}}.tar.gz'
dest: '{{ remote_tmp_dir }}' dest: '{{ remote_tmp_dir }}'
remote_src: true remote_src: true
creates: '{{ remote_tmp_dir }}/yarn-v{{yarn_version}}_pkg.tar.gz' creates: '{{ remote_tmp_dir }}/yarn-v{{yarn_version}}_pkg.tar.gz'

View File

@@ -27,17 +27,19 @@ plugins/modules/jenkins_plugin.py pylint:ansible-bad-import-from
plugins/modules/keycloak_realm_info.py validate-modules:bad-return-value-key # TODO: rename offending return values if possible, or adjust this comment in case the name is OK plugins/modules/keycloak_realm_info.py validate-modules:bad-return-value-key # TODO: rename offending return values if possible, or adjust this comment in case the name is OK
plugins/modules/keycloak_realm_keys_metadata_info.py validate-modules:bad-return-value-key # TODO: rename offending return values if possible, or adjust this comment in case the name is OK plugins/modules/keycloak_realm_keys_metadata_info.py validate-modules:bad-return-value-key # TODO: rename offending return values if possible, or adjust this comment in case the name is OK
plugins/modules/ldap_search.py pylint:ansible-bad-import-from plugins/modules/ldap_search.py pylint:ansible-bad-import-from
plugins/modules/lxc_container.py validate-modules:use-run-command-not-popen plugins/modules/lxc_container.py pylint:ansible-bad-function
plugins/modules/mail.py pylint:ansible-bad-import-from plugins/modules/mail.py pylint:ansible-bad-import-from
plugins/modules/make.py pylint:ansible-bad-import-from plugins/modules/make.py pylint:ansible-bad-import-from
plugins/modules/monit.py pylint:ansible-bad-import-from plugins/modules/monit.py pylint:ansible-bad-import-from
plugins/modules/nosh.py validate-modules:bad-return-value-key # TODO: rename offending return values if possible, or adjust this comment in case the name is OK plugins/modules/nosh.py validate-modules:bad-return-value-key # TODO: rename offending return values if possible, or adjust this comment in case the name is OK
plugins/modules/omapi_host.py validate-modules:bad-return-value-key # TODO: rename offending return values if possible, or adjust this comment in case the name is OK plugins/modules/omapi_host.py validate-modules:bad-return-value-key # TODO: rename offending return values if possible, or adjust this comment in case the name is OK
plugins/modules/onepassword_info.py pylint:ansible-bad-function
plugins/modules/osx_defaults.py pylint:ansible-bad-import-from plugins/modules/osx_defaults.py pylint:ansible-bad-import-from
plugins/modules/osx_defaults.py validate-modules:parameter-state-invalid-choice plugins/modules/osx_defaults.py validate-modules:parameter-state-invalid-choice
plugins/modules/parted.py validate-modules:parameter-state-invalid-choice plugins/modules/parted.py validate-modules:parameter-state-invalid-choice
plugins/modules/rhevm.py validate-modules:parameter-state-invalid-choice plugins/modules/rhevm.py validate-modules:parameter-state-invalid-choice
plugins/modules/sl_vm.py pylint:ansible-bad-import-from plugins/modules/sl_vm.py pylint:ansible-bad-import-from
plugins/modules/solaris_zone.py pylint:ansible-bad-function
plugins/modules/ssh_config.py pylint:ansible-bad-import-from plugins/modules/ssh_config.py pylint:ansible-bad-import-from
plugins/modules/terraform.py pylint:ansible-bad-import-from plugins/modules/terraform.py pylint:ansible-bad-import-from
plugins/modules/timezone.py pylint:ansible-bad-import-from plugins/modules/timezone.py pylint:ansible-bad-import-from

View File

@@ -7,14 +7,20 @@ __metaclass__ = type
from ansible.playbook.task import Task from ansible.playbook.task import Task
from ansible.executor.task_result import TaskResult from ansible.executor.task_result import TaskResult
from ansible.release import __version__ as ansible_release
from ansible_collections.community.internal_test_tools.tests.unit.compat import unittest from ansible_collections.community.internal_test_tools.tests.unit.compat import unittest
from ansible_collections.community.internal_test_tools.tests.unit.compat.mock import patch, MagicMock, Mock from ansible_collections.community.internal_test_tools.tests.unit.compat.mock import patch, MagicMock, Mock
from ansible_collections.community.general.plugins.callback.elastic import ElasticSource, TaskData from ansible_collections.community.general.plugins.callback.elastic import ElasticSource, TaskData
from collections import OrderedDict from collections import OrderedDict
import sys import sys
import pytest
ELASTIC_MINIMUM_PYTHON_VERSION = (3, 6) ELASTIC_MINIMUM_PYTHON_VERSION = (3, 6)
if tuple(int(x) for x in ansible_release.split(".")[:2]) >= (2, 21):
# https://github.com/ansible/ansible/issues/86761
pytest.skip("Temporarily skipping callback tests for ansible-core >= 2.21", allow_module_level=True)
class TestOpentelemetry(unittest.TestCase): class TestOpentelemetry(unittest.TestCase):
@patch('ansible_collections.community.general.plugins.callback.elastic.socket') @patch('ansible_collections.community.general.plugins.callback.elastic.socket')

View File

@@ -5,7 +5,9 @@
from __future__ import (absolute_import, division, print_function) from __future__ import (absolute_import, division, print_function)
__metaclass__ = type __metaclass__ = type
import pytest
from ansible.executor.task_result import TaskResult from ansible.executor.task_result import TaskResult
from ansible.release import __version__ as ansible_release
from ansible_collections.community.internal_test_tools.tests.unit.compat import unittest from ansible_collections.community.internal_test_tools.tests.unit.compat import unittest
from ansible_collections.community.internal_test_tools.tests.unit.compat.mock import patch, Mock from ansible_collections.community.internal_test_tools.tests.unit.compat.mock import patch, Mock
from ansible_collections.community.general.plugins.callback.loganalytics import AzureLogAnalyticsSource from ansible_collections.community.general.plugins.callback.loganalytics import AzureLogAnalyticsSource
@@ -13,6 +15,10 @@ from ansible_collections.community.general.plugins.callback.loganalytics import
from datetime import datetime from datetime import datetime
import json import json
if tuple(int(x) for x in ansible_release.split(".")[:2]) >= (2, 21):
# https://github.com/ansible/ansible/issues/86761
pytest.skip("Temporarily skipping callback tests for ansible-core >= 2.21", allow_module_level=True)
class TestAzureLogAnalytics(unittest.TestCase): class TestAzureLogAnalytics(unittest.TestCase):
@patch('ansible_collections.community.general.plugins.callback.loganalytics.socket') @patch('ansible_collections.community.general.plugins.callback.loganalytics.socket')

View File

@@ -8,14 +8,20 @@ __metaclass__ = type
from ansible.playbook.task import Task from ansible.playbook.task import Task
from ansible.executor.task_result import TaskResult from ansible.executor.task_result import TaskResult
from ansible.release import __version__ as ansible_release
from ansible_collections.community.internal_test_tools.tests.unit.compat import unittest from ansible_collections.community.internal_test_tools.tests.unit.compat import unittest
from ansible_collections.community.internal_test_tools.tests.unit.compat.mock import patch, MagicMock, Mock from ansible_collections.community.internal_test_tools.tests.unit.compat.mock import patch, MagicMock, Mock
from ansible_collections.community.general.plugins.callback.opentelemetry import OpenTelemetrySource, TaskData from ansible_collections.community.general.plugins.callback.opentelemetry import OpenTelemetrySource, TaskData
from collections import OrderedDict from collections import OrderedDict
import sys import sys
import pytest
OPENTELEMETRY_MINIMUM_PYTHON_VERSION = (3, 7) OPENTELEMETRY_MINIMUM_PYTHON_VERSION = (3, 7)
if tuple(int(x) for x in ansible_release.split(".")[:2]) >= (2, 21):
# https://github.com/ansible/ansible/issues/86761
pytest.skip("Temporarily skipping callback tests for ansible-core >= 2.21", allow_module_level=True)
class TestOpentelemetry(unittest.TestCase): class TestOpentelemetry(unittest.TestCase):
@patch('ansible_collections.community.general.plugins.callback.opentelemetry.socket') @patch('ansible_collections.community.general.plugins.callback.opentelemetry.socket')

View File

@@ -5,7 +5,9 @@
from __future__ import (absolute_import, division, print_function) from __future__ import (absolute_import, division, print_function)
__metaclass__ = type __metaclass__ = type
import pytest
from ansible.executor.task_result import TaskResult from ansible.executor.task_result import TaskResult
from ansible.release import __version__ as ansible_release
from ansible_collections.community.internal_test_tools.tests.unit.compat import unittest from ansible_collections.community.internal_test_tools.tests.unit.compat import unittest
from ansible_collections.community.internal_test_tools.tests.unit.compat.mock import patch, Mock from ansible_collections.community.internal_test_tools.tests.unit.compat.mock import patch, Mock
from ansible_collections.community.general.plugins.callback.splunk import SplunkHTTPCollectorSource from ansible_collections.community.general.plugins.callback.splunk import SplunkHTTPCollectorSource
@@ -13,6 +15,10 @@ from datetime import datetime
import json import json
if tuple(int(x) for x in ansible_release.split(".")[:2]) >= (2, 21):
# https://github.com/ansible/ansible/issues/86761
pytest.skip("Temporarily skipping callback tests for ansible-core >= 2.21", allow_module_level=True)
class TestSplunkClient(unittest.TestCase): class TestSplunkClient(unittest.TestCase):
@patch('ansible_collections.community.general.plugins.callback.splunk.socket') @patch('ansible_collections.community.general.plugins.callback.splunk.socket')

View File

@@ -116,10 +116,10 @@ BASIC_OUTPUT_CASES = [
@pytest.mark.parametrize('output, expected', BASIC_OUTPUT_CASES + [ @pytest.mark.parametrize('output, expected', BASIC_OUTPUT_CASES + [
('', monit.Status.MISSING), ('', monit.Status.MISSING),
(TEST_OUTPUT % ('Process', 'processY', 'OK'), monit.Status.MISSING), (TEST_OUTPUT % ('Process', 'processY', 'OK'), monit.Status.MISSING),
(TEST_OUTPUT % ('Process', 'processX', 'Not Monitored - start pending'), monit.Status.OK), (TEST_OUTPUT % ('Process', 'processX', 'Not Monitored - start pending'), monit.Status.OK.pending()),
(TEST_OUTPUT % ('Process', 'processX', 'Monitored - stop pending'), monit.Status.NOT_MONITORED), (TEST_OUTPUT % ('Process', 'processX', 'Monitored - stop pending'), monit.Status.NOT_MONITORED.pending()),
(TEST_OUTPUT % ('Process', 'processX', 'Monitored - restart pending'), monit.Status.OK), (TEST_OUTPUT % ('Process', 'processX', 'Monitored - restart pending'), monit.Status.OK.pending()),
(TEST_OUTPUT % ('Process', 'processX', 'Not Monitored - monitor pending'), monit.Status.OK), (TEST_OUTPUT % ('Process', 'processX', 'Not Monitored - monitor pending'), monit.Status.OK.pending()),
(TEST_OUTPUT % ('Process', 'processX', 'Does not exist'), monit.Status.DOES_NOT_EXIST), (TEST_OUTPUT % ('Process', 'processX', 'Does not exist'), monit.Status.DOES_NOT_EXIST),
(TEST_OUTPUT % ('Process', 'processX', 'Not monitored'), monit.Status.NOT_MONITORED), (TEST_OUTPUT % ('Process', 'processX', 'Not monitored'), monit.Status.NOT_MONITORED),
(TEST_OUTPUT % ('Process', 'processX', 'Running'), monit.Status.OK), (TEST_OUTPUT % ('Process', 'processX', 'Running'), monit.Status.OK),

View File

@@ -79,6 +79,36 @@ test_cases:
rc: 0 rc: 0
out: '' out: ''
err: '' err: ''
- id: test_property_set_property_bool_same_value
input:
channel: xfce4-session
property: /general/SaveOnExit
state: present
value_type: bool
value: false
output:
changed: false
previous_value: 'false'
type: bool
value: 'false'
version: 4.18.1
mocks:
run_command:
- command: [/testbin/xfconf-query, --version]
environ: *env-def
rc: 0
out: *version-output
err: ''
- command: [/testbin/xfconf-query, --channel, xfce4-session, --property, /general/SaveOnExit]
environ: *env-def
rc: 0
out: "false\n"
err: ''
- command: [/testbin/xfconf-query, --channel, xfce4-session, --property, /general/SaveOnExit, --create, --type, bool, --set, 'false']
environ: *env-def
rc: 0
out: ''
err: ''
- id: test_property_set_property_bool_false - id: test_property_set_property_bool_false
input: input:
channel: xfce4-session channel: xfce4-session
@@ -90,7 +120,7 @@ test_cases:
changed: true changed: true
previous_value: 'true' previous_value: 'true'
type: bool type: bool
value: 'False' value: 'false'
version: 4.18.1 version: 4.18.1
mocks: mocks:
run_command: run_command: