Commit Graph

880 Commits

Author SHA1 Message Date
Alexei Znamensky
c7be9e4d5b odbc: add Arch Linux support via AUR psqlodbc (#11944)
* test(odbc): add Arch Linux support via AUR psqlodbc

Fixes #4267

* test(setup_postgresql_db): guard Arch Linux initdb with creates

* test(odbc): add setup_remote_tmp_dir dependency
2026-04-30 21:52:30 +12:00
Alexei Znamensky
036811e668 test(integration): enable homectl test for ArchLinux (#11945)
* test(integration): enable homectl test for ArchLinux

* install passlib in Arch Linux

* test: requires vm in homectl aliases
2026-04-30 21:47:22 +12:00
Alexei Znamensky
36b55c73e0 test(integration): enable homectl test for RHEL 9+ (#11941) 2026-04-30 10:34:29 +12:00
Alexei Znamensky
d0f0e9d00f lvol: fix thin-pool creation with percentage size (#11925)
* fix(lvol): use --extents (-l) for thin-pool creation with percentage size

Fixes #11923

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

* chore(lvol): add changelog fragment for #11925

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

* test(lvol): add integration tests for thin-pool creation with percentage sizes

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

* test(lvol): use extent-aligned size for thin-pool absolute-size idempotency test

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

* test(lvol): reduce thin-pool sizes to leave space for test_pvs.yml

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

* test(lvol): add shrink=false to thin-pool absolute-size idempotency check

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

* test(lvol): add shrink: false to thin volume idempotency test

LVM reports thin volume size slightly above requested (metadata overhead),
triggering spurious shrink attempts. Disable shrink for idempotency checks
to avoid false failures.

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

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 21:55:47 +12:00
Felix Fontein
4fa82b9617 Make all doc fragments, module utils, and plugin utils private (#11896)
* Make all doc fragments private.

* Make all plugin utils private.

* Make all module utils private.

* Reformat.

* Changelog fragment.

* Update configs and ignores.

* Adjust unit test names.
2026-04-20 20:16:26 +02:00
Felix Fontein
72c13c85ad Prepare main for 13.0.0 (#11834)
* Bump version to 13.0.0.

* Remove deprecated modules and plugins.

* Remove deprecated module utils.

* Remove leftovers.

* Remove mode=compatibility.

* Change default of is_pre740 from true to false.

* Change default of force_defaults from true to false.

* Remove support for ubuntu_legacy mechanism.

* Remove cpanm compatibility tests.
2026-04-20 12:35:43 +02:00
Alexei Znamensky
77509be2aa Replace .format() calls with f-strings across multiple plugins (#11879)
* Replace .format() calls with f-strings across multiple plugins

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>

* Add changelog fragment for PR 11879

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-19 22:37:32 +12:00
Alexei Znamensky
edf8f24959 parted: add unit_preserve_case option to fix unit case in return value (#11813)
* parted: add unit_preserve_case option to fix unit case in return value

Adds O(unit_preserve_case) feature flag (bool, default None) to control
the case of the ``unit`` field in the module return value.

Previously the unit was always lowercased (e.g. ``kib``), making it
impossible to feed ``disk.unit`` back as the ``unit`` parameter without
a validation error. With O(unit_preserve_case=true) the unit is returned
in its original mixed case (e.g. ``KiB``), matching the accepted input
values.

The default (None) emits a deprecation notice; the default will become
V(true) in community.general 14.0.0.

Fixes #1860

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

* parted: add changelog fragment for PR #11813

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

* adjustments from review

* Comment 15.0.0 deprecation in option decription.

* parted: fix unit test calls to parse_partition_info after signature change

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

* parted: fix unit_preserve_case - parted outputs lowercase units in machine mode

Parted's machine-parseable output always uses lowercase unit suffixes
(e.g. ``kib``, ``mib``) regardless of what was passed to the ``unit``
parameter. Removing the explicit ``.lower()`` call was therefore not
enough to preserve case.

Add a ``canonical_unit()`` helper that maps a unit string to its canonical
mixed-case form using ``parted_units`` as the reference, and use it
instead of a bare identity when ``unit_preserve_case=true``.

Also fix a yamllint violation in the DOCUMENTATION block (missing space
after ``#`` in inline comments).

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

* Update plugins/modules/parted.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/parted.py

Co-authored-by: Felix Fontein <felix@fontein.de>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2026-04-18 22:38:09 +02:00
Felix Fontein
ef656cb9b6 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.
2026-04-16 21:41:19 +02:00
Alexei Znamensky
d1448b76c1 iso_extract: strip leading path separator from file entries (#11825)
* iso_extract: strip leading path separator from file entries

Fixes #5283

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

* iso_extract: add changelog fragment for issue 5283

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

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 19:54:46 +02:00
Alexei Znamensky
972bed66f4 flatpak: add from_url parameter, deprecate URLs in name (#11748)
* flatpak: add from_url parameter, deprecate URLs in name

Adds a new `from_url` parameter for installing flatpaks from a
.flatpakref URL, using `flatpak install --from <url>`. The `name`
parameter then carries the reverse DNS application ID, enabling
reliable idempotency checks.

Passing URLs directly in `name` is now deprecated and will be
removed in community.general 14.0.0.

Fixes #4000

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

* flatpak: add changelog fragment for PR #11748

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

* flatpak: remove deprecation, adjust docs tone

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

* flatpak: add integration tests for from_url parameter

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

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 21:12:35 +02:00
Alexei Znamensky
66886d08f5 integration tests: remove CentOS conditionals - part 2 (#11719)
* test(integration): remove CentOS references - part 2

* adjustments from review
2026-04-03 23:13:58 +13:00
Alexei Znamensky
8b114e999e consul integration tests: re-enable on macOS (#11697)
* consul integration tests: re-enable on macOS

- Update consul version to 1.22.6
- Add arm64/aarch64 architecture support
- Fix macOS Gatekeeper quarantine on downloaded binary
- Add wait_for before ACL bootstrap (race condition fix)
- Update HCL config to use tls stanza (required in 1.22)
- Disable gRPC port (conflicts with tls stanza when not configured)
- Remove skip/macos from aliases

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

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

* changelogs/fragments: add PR number for consul tests fix

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

* remove changelog fragment (test-only PR)

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

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 07:54:20 +02:00
Alexei Znamensky
79431c36b5 integration tests: remove CentOS conditionals (#11715)
* test(integration): remove CentOS references

* further simplification

* more removals

* rollback systemd_info for now

* ufw: not trivially used with RHEL9 and RHEL10, simplifying tests

* remove tasks for setup_epel where unused

* adjustments from review
2026-04-03 07:37:05 +02:00
Alexei Znamensky
b79a45753f snap_connect: new module to manage snap interface connections (#11682)
* snap_connect: new module to manage snap interface connections

Fixes #7722

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

* simplify _get_connections()

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 16:18:17 +13:00
Alexei Znamensky
982f9472c5 test(integration): fix for ansible-core devel changes in register (#11720) 2026-04-03 14:59:46 +13:00
Alexei Znamensky
f4e5fc09d7 monit: re-enable tests in RHEL (#11690)
* re-enable monit tests in rhel

* enable EPEL for RHEL<11

* rollback EPEL setup, skip only specific versions

* remove skip entirely

* change download URL in setup_epel, adjusted code to use it

* claude tries to install virtualenv, round 1

* claude tries python3 -m venv instead

* remove outdated centos6 file
2026-03-31 22:17:38 +13:00
Alexei Znamensky
68ae04a95a Cleanup of aliases skip statements (#11686)
* add scripts to clean aliases' skips

* remove legacy skips

* code cosmetics

* add license to ALIASES.md

* Fix typos in ALIASES.md documentation

* rolling back freebsd14.2 and 14.3 in iso_extract

* fix versions and re-run
2026-03-30 19:31:17 +02:00
Alexei Znamensky
d06c83eb68 etcd3: re-enable and fix tests, add unit tests (#11678)
* etcd3: re-enable and fix tests, add unit tests

- Add unit tests for community.general.etcd3 module (12 tests covering
  state=present/absent, idempotency, check mode, and error paths)
- Fix integration test setup: update etcd binary to v3.6.9 (from v3.2.14),
  download from GitHub releases, add health-check retry loop after start
- Work around etcd3 Python library incompatibility with protobuf >= 4.x
  by setting PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
- Update to FQCNs throughout integration tests
- Re-enable both etcd3 and lookup_etcd3 integration targets

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

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

* improve use of multiple context managers

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-25 15:55:16 +13:00
Alexei Znamensky
d6cb56c022 osx_defaults: add dict support (#11659)
* osx_defaults: add dict support

* add changelog frag

* osx_defaults: fix dict idempotency by using plutil -extract for type-preserving read

The previous approach piped `defaults read` output (old-style plist text)
through `plutil -convert json`. Old-style plist loses boolean type info
(booleans appear as 1/0, indistinguishable from integers), causing the
comparison to fail and reporting changed=True on every run.

Fix by exporting the domain binary plist to a temp file and using
`plutil -extract key json` which correctly preserves all plist types
(booleans stay true/false, integers stay integers, etc.).

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

* change param from bool to str

* Apply suggestion from review

* Update plugins/modules/osx_defaults.py

Co-authored-by: Felix Fontein <felix@fontein.de>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2026-03-23 20:16:21 +01:00
Alexei Znamensky
b1ac989c70 remove skip/aix from aliases files (#11660) 2026-03-23 06:38:06 +01:00
Alexei Znamensky
8d403dde5b ansible_galaxy_install: new param executable (#11646)
* ansible_galaxy_install: new param executable

* add changelog frag
2026-03-22 20:21:54 +01:00
Alexei Znamensky
4f5e5c9bb6 test(python_runner): add integration tests (#11638)
* test(python_runner): add integration tests

* simplify the test

* add missing quotes

* use setup_remote_tmp_dir

* build venv manually first
2026-03-22 17:31:51 +13:00
Felix Fontein
b4336659f6 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.
2026-03-21 17:27:51 +01:00
Felix Fontein
bc22fbcaa0 CI: Replace apt_repository and apt_key with deb822_repository (#11625)
Replace apt_repository and apt_key with deb822_repository.
2026-03-19 23:12:40 +01:00
Christoph Fiehe
dae2157bb7 merge_variables: extended merge capabilities added (#11536)
* merge_variables: extended merge capabilities added

This extension gives you more control over the variable merging process of the lookup plugin `merge_variables`. It closes the gap between Puppet's Hiera merging capabilities and the limitations of Ansible's default variable plugin `host_group_vars` regarding fragment-based value definition. You can now decide which merge strategy should be applied to dicts, lists, and other types. Furthermore, you can specify a merge strategy that should be applied in case of type conflicts.

The default behavior of the plugin has been preserved so that it is fully backward-compatible with the already implemented state.

Signed-off-by: Fiehe Christoph  <c.fiehe@eurodata.de>

* Update changelogs/fragments/11536-merge-variables-extended-merging-capabilities.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/lookup/merge_variables.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Periods added at the end of each choice description

Signed-off-by: Fiehe Christoph  <c.fiehe@eurodata.de>

* Update plugins/lookup/merge_variables.py

Co-authored-by: Mark <40321020+m-a-r-k-e@users.noreply.github.com>

* ref: follow project standard for choice descriptions

Signed-off-by: Fiehe Christoph  <c.fiehe@eurodata.de>

* ref: more examples added and refactoring

Signed-off-by: Fiehe Christoph  <c.fiehe@eurodata.de>

* Update plugins/lookup/merge_variables.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* ref: some more comments to examples added

Signed-off-by: Fiehe Christoph  <c.fiehe@eurodata.de>

* fix: unused import removed

Signed-off-by: Fiehe Christoph  <c.fiehe@eurodata.de>

* ref: re-add "merge" to strategy map

Signed-off-by: Fiehe Christoph  <c.fiehe@eurodata.de>

* Update comments

Signed-off-by: Fiehe Christoph  <c.fiehe@eurodata.de>

* Specification of transformations solely as string

Signed-off-by: Fiehe Christoph  <c.fiehe@eurodata.de>

* Comments updated

Signed-off-by: Fiehe Christoph  <c.fiehe@eurodata.de>

* ref: `append_rp` and `prepend_rp` removed
feat: options dict for list transformations re-added
feat: allow setting `keep` for dedup transformation with possible values: `first` (default) and `last`

Signed-off-by: Fiehe Christoph  <c.fiehe@eurodata.de>

* ref: improve options documentation

Signed-off-by: Fiehe Christoph  <c.fiehe@eurodata.de>

* ref: documentation improved, avoiding words like newer or older in merge description

Signed-off-by: Fiehe Christoph  <c.fiehe@eurodata.de>

* Update plugins/lookup/merge_variables.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* ref: "prio" replaced by "dict"

Signed-off-by: Fiehe Christoph  <c.fiehe@eurodata.de>

* feat: two integration tests added

Signed-off-by: Fiehe Christoph  <c.fiehe@eurodata.de>

---------

Signed-off-by: Fiehe Christoph  <c.fiehe@eurodata.de>
Co-authored-by: Fiehe Christoph <c.fiehe@eurodata.de>
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Mark <40321020+m-a-r-k-e@users.noreply.github.com>
2026-03-19 22:45:44 +01:00
thomasbargetz
25b5655be7 keycloak_authentication_v2: verify providerIds (fix 11583) (#11585)
* 11583 verify providerIds in keycloak_authentication_v2

* 11583 code cleanup

---------

Co-authored-by: Thomas Bargetz <thomas.bargetz@rise-world.com>
2026-03-18 07:06:09 +01:00
thomasbargetz
e7a253b4c9 keycloak_authentication_v2: covers idp flow overrides in safe swap (fix 11582) (#11601)
* 11582 keycloak_authentication_v2 covers idp flow overrides in safe swap

* 11583 update documentation and comments
2026-03-18 06:49:24 +01:00
thomasbargetz
a69f7e60b4 add module keycloak_authentication_v2 (#11557)
* add module keycloak_authentication_v2

* skip sanity checks, because the run into a recursion

* 11556 fix documentation

* 11556 limit the depth of nested flows to 4

* 11556 code cleanup

* 11556 code cleanup - add type hints

* 11556 add keycloak_authentication_v2 to meta/runtime.yml

* 11556 code cleanup - remove custom type hints

* 11556 code cleanup - none checks

* Update plugins/modules/keycloak_authentication_v2.py

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>

* Update plugins/modules/keycloak_authentication_v2.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* 11556 code cleanup - remove document starts

* 11556 cleanup

* 11556 cleanup

---------

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Thomas Bargetz <thomas.bargetz@rise-world.com>
2026-03-12 22:04:08 +01:00
Felix Fontein
4cd91ba4d4 Fix templating bug in iptables_state tests (#11541)
* Fix templating bug in iptables_state tests.

* Try to install older packages on RHEL.
2026-03-11 22:02:08 +01:00
Alexei Znamensky
93112d23e5 monit: remove unstable tag from integration tests (#11562) 2026-03-10 06:42:54 +01:00
Matt Clay
9b9d8eac09 Update tests to pass on macOS arm64 (#11544) 2026-02-27 18:55:29 +01:00
Felix Fontein
e118b23ba0 Simplify and extend from_ini tests (#11534)
Simplify and extend from_ini tests.
2026-02-23 06:16:51 +01:00
Robert Sander
aec0e61ba1 adds parameter delimiters to from_ini filter (#11512)
* adds parameter delimiters to from_ini filter

fixes issue #11506

* adds changelog fragment

* fixes pylint dangerous-default-value / W0102

* does not assume default delimiters

let that be decided in the super class

* Update plugins/filter/from_ini.py

verbose description

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update changelogs/fragments/11512-from_ini-delimiters.yaml

Co-authored-by: Felix Fontein <felix@fontein.de>

* adds input validation

* adss check for delimiters not None

* adds missing import

* removes the negation

* adds suggestions from russoz

* adds ruff format suggestion

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-02-23 05:44:32 +01:00
Ivan Kokalovic
34938ca1ef keycloak_user_rolemapping: handle None response for client role lookup (#11471)
* fix(keycloak_user_rolemapping): handle None response for client role lookup

When adding a client role to a user who has no existing roles for that
client, get_client_user_rolemapping_by_id() returns None. The existing
code indexed directly into the result causing a TypeError. Add the same
None check that already existed for realm roles since PR #11256.

Fixes #10960

* fix(tests): use dict format for task vars in keycloak_user_rolemapping tests

Task-level vars requires a YAML mapping, not a sequence. The leading
dash (- roles:) produced a list instead of a dict, which ansible-core
2.20 rejects with "Vars in a Task must be specified as a dictionary".

* Update changelogs/fragments/keycloak-user-rolemapping-client-none-check.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-02-18 20:24:35 +01:00
Ivan Kokalovic
80d21f2a0d keycloak_realm_key: add full support for all Keycloak key providers (#11468)
* feat(keycloak_realm_key): add support for auto-generated key providers

Add support for Keycloak's auto-generated key providers where Keycloak
manages the key material automatically:

- rsa-generated: Auto-generates RSA signing keys
- hmac-generated: Auto-generates HMAC signing keys
- aes-generated: Auto-generates AES encryption keys
- ecdsa-generated: Auto-generates ECDSA signing keys

New algorithms:
- HMAC: HS256, HS384, HS512
- ECDSA: ES256, ES384, ES512
- AES: AES (no algorithm parameter needed)

New config options:
- secret_size: For HMAC/AES providers (key size in bytes)
- key_size: For RSA-generated provider (key size in bits)
- elliptic_curve: For ECDSA-generated provider (P-256, P-384, P-521)

Changes:
- Make private_key/certificate optional (only required for rsa/rsa-enc)
- Add provider-algorithm validation with clear error messages
- Fix KeyError when managing default realm keys (issue #11459)
- Maintain backward compatibility: RS256 default works for rsa/rsa-generated

Fixes: #11459

* fix: address sanity test failures

- Add 'default: RS256' to algorithm documentation to match spec
- Add no_log=True to secret_size parameter per sanity check

* feat(keycloak_realm_key): extend support for all Keycloak key providers

Add support for remaining auto-generated key providers:
- rsa-enc-generated (RSA encryption keys with RSA1_5, RSA-OAEP, RSA-OAEP-256)
- ecdh-generated (ECDH key exchange with ECDH_ES, ECDH_ES_A128KW/A192KW/A256KW)
- eddsa-generated (EdDSA signing with Ed25519, Ed448 curves)

Changes:
- Add provider-specific elliptic curve config key mapping
  (ecdsaEllipticCurveKey, ecdhEllipticCurveKey, eddsaEllipticCurveKey)
- Add PROVIDERS_WITHOUT_ALGORITHM constant for providers that don't need algorithm
- Add elliptic curve validation per provider type
- Update documentation with all supported algorithms and examples
- Add comprehensive integration tests for all new providers

This completes full coverage of all Keycloak key provider types.

* style: apply ruff formatting

* feat(keycloak_realm_key): add java-keystore provider and update_password

Add support for java-keystore provider to import keys from Java
Keystore (JKS or PKCS12) files on the Keycloak server filesystem.

Add update_password parameter to control password handling for
java-keystore provider:
- always (default): Always send passwords to Keycloak
- on_create: Only send passwords when creating, preserve existing
  passwords when updating (enables idempotent playbooks)

The on_create mode sends the masked value ("**********") that Keycloak
recognizes as "preserve existing password", matching the behavior when
re-importing an exported realm.

Replace password_checksum with update_password - the checksum approach
was complex and error-prone. The update_password parameter is simpler
and follows the pattern used by ansible.builtin.user module.

Also adds key_info return value containing kid, certificate fingerprint,
status, and expiration for java-keystore keys.

* address PR review feedback

- Remove no_log=True from secret_size (just an int, not sensitive)
- Add version_added: 12.4.0 to new parameters and return values
- Remove "Added in community.general 12.4.0" from description text
- Consolidate changelog entries into 4 focused entries
- Remove bugfix from changelog (now in separate PR #11470)

* address review feedback from russoz and felixfontein

- remove docstrings from module-local helpers
- remove line-by-line comments and unnecessary null guard
- use specific exceptions instead of bare except Exception
- use module.params["key"] instead of .get("key")
- consolidate changelog into single entry
- avoid "complete set" claim, reference Keycloak 26 instead

* address round 2 review feedback

- Extract remove_sensitive_config_keys() helper (DRY refactor)
- Simplify RS256 validation to single code path
- Add TypeError to inner except in compute_certificate_fingerprint()
- Remove redundant comments (L812, L1031)
- Switch .get() to direct dict access for module.params
2026-02-18 07:48:37 +01:00
Alexei Znamensky
63ddca7f21 supervisorctl: remove unstable tag from integration tests (#11484) 2026-02-10 21:09:02 +13:00
Felix Fontein
476f2bf641 Integration tests: replace ansible_xxx with ansible_facts.xxx (#11479)
Replace ansible_xxx with ansible_facts.xxx.
2026-02-07 18:18:48 +01:00
Ivan Kokalovic
df6d6269a6 keycloak_client: add valid_post_logout_redirect_uris and backchannel_logout_url (#11473)
* feat(keycloak_client): add valid_post_logout_redirect_uris and backchannel_logout_url

Add two new convenience parameters that map to client attributes:

- valid_post_logout_redirect_uris: sets post.logout.redirect.uris
  attribute (list items joined with ##)
- backchannel_logout_url: sets backchannel.logout.url attribute

These fields are not top-level in the Keycloak REST API but are stored
as client attributes. The new parameters provide a user-friendly
interface without requiring users to know the internal attribute names
and ##-separator format.

Fixes #6812, fixes #4892

* consolidate changelog and add PR link per review feedback
2026-02-07 16:19:29 +01:00
Ivan Kokalovic
c41de53dbb keycloak: URL-encode query parameters for usernames with special characters (#11472)
* fix(keycloak): URL-encode query params for usernames with special chars

get_user_by_username() concatenates the username directly into the URL
query string. When the username contains a +, it is interpreted as a
space by the server, returning no match and causing a TypeError.

Use urllib.parse.quote() (already imported) for the username parameter.
Also replace three fragile .replace(' ', '%20') calls in the authz
search methods with proper quote() calls.

Fixes #10305

* Update changelogs/fragments/keycloak-url-encode-query-params.yml

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>

---------

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2026-02-06 07:10:55 +01:00
Nicolas Boutet
53e1e86bcc Logstash plugin version fix (#11440)
* logstash_plugin: fix argument order when using version parameter

* logstash_plugin: add integration tests

* logstash_plugin: add changelog fragment
2026-01-26 06:17:23 +01:00
Matt Williams
864695f898 Add to_toml filter (#11423)
* Add to_toml filter

This is based heavily on the to_yaml filter, but
with a pared-down feature set.

* Protect import

* Don't quote datetime as a string

* Use Ansible error types

* Import correct error types

* Don't use AnsibleTypeError

It doesn't seem to be available on older Ansible
core versions.

* Fix antsibull-nox errors

* Install dependencies for to_toml integration test

Co-authored-by: Felix Fontein <felix@fontein.de>

* Reduce author list to main contributor

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update version added for to_toml

Co-authored-by: Felix Fontein <felix@fontein.de>

* Use AnsibleError for missing import

Co-authored-by: Felix Fontein <felix@fontein.de>

* Use AnsibleFilterError for runtime type check

Co-authored-by: Felix Fontein <felix@fontein.de>

* Move common code to plugin_utils/_tags.py

* Mark module util as private

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update BOTMETA for to_toml

Co-authored-by: Felix Fontein <felix@fontein.de>

* Fix typo

* Correct version number

Co-authored-by: Felix Fontein <felix@fontein.de>

* Use to_text for to_toml dict key conversions

Co-authored-by: Felix Fontein <felix@fontein.de>

* Add tomlkit requirement to docs

Co-authored-by: Felix Fontein <felix@fontein.de>

* Add missing import

* Add aliases for for to_toml integration test

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-01-22 06:41:49 +01:00
Felix Fontein
236b9c0e04 Sort imports with ruff check --fix (#11400)
Sort imports with ruff check --fix.
2026-01-09 07:40:58 +01:00
Felix Fontein
0e6ba07261 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
2026-01-08 09:41:28 +01:00
Felix Fontein
d4089ca29a Update RHEL 9.x to 9.7 in CI (#11387)
* Update RHEL 9.x to 9.7 in CI.

* Add skips.
2026-01-06 09:46:28 +01:00
Felix Fontein
b3dc06a7dd Clean up other Python files (#11379)
* Address issues found by ruff check.

* Make mypy happy; remove some Python 2 compat code.

* Also declare port1.
2026-01-05 17:59:58 +01:00
Felix Fontein
ddf05104f3 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.
2026-01-02 09:34:06 +01:00
Alexei Znamensky
266d9d3fb0 batch 2 - update Python idiom to 3.7 using pyupgrade (#11342)
* batch 2 - update Python idiom to 3.7 using pyupgrade

* Apply suggestions from code review
2025-12-30 22:50:16 +13:00
Alexei Znamensky
d549baa5e1 straight up: ruff format (#11329)
* straight up: ruff format

* Apply suggestions from code review
2025-12-28 01:36:24 +13:00
Felix Fontein
a96a5c44a5 sysrc tests: skip FreeBSD 14.2 for ezjail tests (#11276)
Looks like 14.2 no longer works.
2025-12-14 11:55:40 +01:00