1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2026-06-10 18:15:39 +00:00
Commit graph

4375 commits

Author SHA1 Message Date
Maksym Hazevych
8eb4e01e23
Merge 3ba3c15e3e into 3774ca20d2 2026-06-10 12:05:51 +00:00
Maksym Hazevych
3ba3c15e3e Implement support for DNF5 2026-06-10 15:05:42 +03:00
Maksym Hazevych
d3358053a6 Extract fixtures from dnf_config_manager tests 2026-06-10 15:05:42 +03:00
Felix Fontein
3774ca20d2
Revert "mark zypper tests (suse) as unsupported (#12154)" (#12164)
This reverts commit 2939d7fdd3.
2026-06-08 21:23:39 +02:00
Felix Fontein
f20f0d9cf9
iptables_state integration tests: improve skip conditions (#12209)
Improve skip conditions.
2026-06-08 21:23:26 +02:00
Alexei Znamensky
877f20f278
replace lingering ansible_xxx with ansible_facts.xxx (#12201) 2026-06-06 17:35:34 +12:00
Alexei Znamensky
10d77d934b
remove references to FreeBSD versions that are no longer used in CI (#12195) 2026-06-05 13:02:24 +02:00
Hirofumi Arimoto
213581bef8
fix: treat chdev execution failures as module errors in aix_devices (#12185)
* fix: treat chdev execution failures as module errors in aix_devices

##### SUMMARY
Fix the aix_devices module so that a failed chdev command is reported as a module failure instead of a successful result.

The previous implementation called fail_json incorrectly by returning success through the normal completion path when chdev returned a non-zero exit status. This could allow a playbook to continue even though the requested device attribute change was not applied.

This change replaces the success-style error handling with proper failure handling in the chdev execution path, making task results consistent with the actual command outcome.

##### ISSUE TYPE
- Bugfix Pull Request

##### COMPONENT NAME
aix_devices

##### ADDITIONAL INFORMATION
The affected code path is in change_device_attr() when the module executes chdev to apply attribute updates.

Before this change:
- chdev could fail
- the module could still report success
- later tasks could run against an unexpected system state

After this change:
- chdev failures are returned through fail_json
- the task stops with an error
- playbook behavior matches the real execution result

```paste below
Before:
module.exit_json(msg="Failed to run chdev.", rc=rc, err=err)

After:
module.fail_json(msg="Failed to run chdev.", rc=rc, err=err)
```

* Add changelog fragment for aix_devices chdev failure fix (#12185)

---------

Co-authored-by: Hirofumi Arimoto <harimoto@jp.ibm.com>
2026-06-05 13:02:06 +02:00
Felix Fontein
57ad07a94e
CI: Remove FreeBSD 14.2 (#12191)
Remove FreeBSD 14.2 from CI.

It seems to be finally EOL, with mirrors removed.
2026-06-05 08:17:45 +02:00
Sam Doran
4d66b3dae8
opkg - path_prefix needs to be a list (#12182)
* opkg - path_prefix needs to be a list

path_prefix is passed to get_bin_path() which expects opt_dirs to be a list
of paths. Passing in a string instead of a list of paths results in incorrect
values being adding to the path when searching for the command to run.

* Add changelog
2026-06-05 06:37:23 +02:00
Santosh Mahale
48db863096
filetree lookup: handle invalid exclude regex with AnsibleError (#12140)
* filetree lookup - handle invalid exclude regex with AnsibleError Wrap re.compile() for the exclude option so invalid regular expressions produce a clear AnsibleError instead of an uncaught re.error traceback.

* add changelog fragment

* add changelog fragment

* Fix changelog fragment line endings (LF)

Co-authored-by: Cursor <cursoragent@cursor.com>

* Used AnsibleLookupError instead of AnsibleError

* Update changelogs/fragments/12140-filetree-exclude-regex-error.yml

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

* Used AnsibleLookupError instead of AnsibleError

* Updated changelog format

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2026-06-04 06:19:10 +02:00
Simon Bouchard
f9d4f0ad6b
Fix incus Windows modules with ansible-core 2.21 (#12163)
* Fix incus Windows modules with ansible-core 2.21

* strip wrapper quotes for payload flags (-enc, -encodedcommand, -command, -c, -file, -f) before incus exec argv handoff, added changelogs

* Fixed some edge cases for powershell parsing

* Fixed changelogs

* Fixed pep8 format

* Added warning message when modifying direct commands

* Fixed changelogs fragement
2026-06-02 21:04:02 +02:00
amPrimeSign
7b01bcbadf
keycloak_realm - add `max_secondary_auth_failures` parameter to configure brute force detection for secondary authentication mechanisms. (#12087)
* minor_changes:
  - keycloak_realm - add ``max_secondary_auth_failures`` parameter to configure brute force detection for secondary authentication mechanisms.

* Update changelogs/fragments/12087-keycloak-realm-max-secondary-auth-failures.yml

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-06-02 18:27:11 +02:00
Yoann Gauthier-Colin
1e3da48d70
portage: include msg in depclean failure fail_json (#12168)
cleanup_packages() called module.fail_json(cmd=, rc=, stdout=, stderr=)
without the mandatory msg= argument. When the underlying emerge --depclean
exited non-zero, AnsibleModule.fail_json() itself crashed with
"AnsibleModule.fail_json() missing 1 required positional argument: 'msg'"
before the real failure could reach the controller, leaving users with no
diagnostic about why depclean actually failed.

Same wording style as the sibling install_packages() failure branch
("Packages not installed.").
2026-06-02 18:25:44 +02:00
Alexei Znamensky
b799c6f579
redfish_config: fix KeyError: 'ret' when SetManagerNic cannot find a matching NIC (#12124)
* fix(redfish_config): return proper error dict when manager NIC not found

get_manager_ethernet_uri() returned an empty dict {} when no matching NIC
was found, causing a KeyError on 'ret' in main(). Now returns a consistent
{"ret": False, "msg": ...} like all other error paths in the function.

Fixes #5892

* feat(changelog): add fragment for PR 12124
2026-06-02 18:25:26 +02:00
juremedvesek
97b464deb3
version_sort filter: fix example's description (#12167)
Fix description in example of community.general.version_sort filter

Example had some left overs, that were not aligned with code.
It was explaining conversion between tuples and dict. But example here maps list of strings to list of strings.
2026-06-02 18:22:05 +02:00
Felix Fontein
bb710480b1 Forgot to update schedules. 2026-06-01 20:26:58 +02:00
spike77453
cdd9c1ddde
test(integration): explicitly add executable to iso_extract on Fedora (#12162)
This provides a (temporary) workaround for https://bugzilla.redhat.com/show_bug.cgi?id=2373874:
On Fedora 43+ 7zip is unable to find the 7z.so module when it is not in the
same path as the 7z binary or in /usr/bin/
2026-06-01 06:23:27 +02:00
Felix Fontein
7d8bf179e7
CI: improve nox GHA workflow (#12157)
* Auto-cancel older PR nox runs.

* Use shared workflow.
2026-05-31 15:41:35 +00:00
Alexei Znamensky
49ca175f01
htpasswd: fix hash_scheme aliases and Apache-compatible bcrypt (#12123)
* fix(htpasswd): support HtpasswdFile aliases and Apache-compatible bcrypt

CryptContext does not recognise HtpasswdFile alias names such as
portable, portable_apache_24, host_apache_24, causing a KeyError.
In addition, building a CryptContext for bcrypt produced $2b$ hashes
that Apache rejects (it only accepts $2y$/$2a$).

Use htpasswd_context for schemes it already supports, fall back to
htpasswd_context on KeyError for aliases, and import CryptContext
from module_utils/_crypt.py instead of passlib directly.

Fixes #6135

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

* feat(changelog): add fragment for PR 12123

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

* fix(_crypt): silence DeprecationWarning when importing stdlib crypt

On Python 3.11/3.12, `import crypt` emits a DeprecationWarning that
ansible-test sanity --test import treats as an error. Suppress it since
the import is an intentional fallback when passlib is not available.

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

* fix(htpasswd): fix sanity ignores and bcrypt version constraint

- Revert _crypt.py DeprecationWarning suppression; add sanity ignore
  entries for htpasswd.py import-3.11/3.12 instead (mirrors existing
  entries for _crypt.py itself)
- Pin bcrypt<4.2 in integration tests: bcrypt 4.2 removed __about__
  which passlib 1.7.x uses, breaking passlib.apache import
- Fix regex_search assertion to use 'is not none' for a boolean result
- Add bcrypt version constraint note to module documentation

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

* fix(htpasswd): handle system-installed bcrypt in integration tests

On Debian/Ubuntu, bcrypt may be installed by the system package manager
with no RECORD file, making pip downgrade impossible. Move bcrypt
installation into a self-contained block in test_schemes.yml with
ignore_errors, a functional passlib+bcrypt check, and always-cleanup.
Bcrypt tests are skipped when a compatible version cannot be used.

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

* refactor(htpasswd): extract obtain_crypt_context(); import CryptContext from passlib directly

Extract context selection logic into obtain_crypt_context(). Import
CryptContext inside the deps.declare("passlib") block instead of from
module_utils/_crypt.py — passlib is already a hard dependency and
other symbols are imported from it there. Remove now-unnecessary
htpasswd.py sanity import ignore entries.

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

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 22:01:51 +12:00
Alexei Znamensky
2939d7fdd3
mark zypper tests (suse) as unsupported (#12154) 2026-05-31 21:01:08 +12:00
Alexei Znamensky
d46ce24abb
consul_kv: add empty_value option for null Consul values (#12120)
* feat(consul_kv): add empty_value option for null Consul values

Add the ``empty_value`` option to the ``consul_kv`` lookup plugin, allowing
users to control what is returned when a key exists in Consul but has a
null/empty value. Defaults to ``'None'`` to preserve existing behaviour.

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

* feat(changelog): add fragment for PR 12120

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

* feat(consul_kv): make empty_value a choices option

Replace the free-form string empty_value with a choices option:
textual_none (default, legacy behaviour), python_none, empty_string.

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

* docs(consul_kv): use dict form for empty_value choices

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

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 20:48:48 +12:00
Alexei Znamensky
6e6199ae3d
parted: ignore MBR partition type codes in flags on SUSE systems (#12121)
* parted: ignore MBR partition type codes reported as flags by SUSE parted

SUSE's patched parted reports MBR partition type codes (e.g., type=8e for
Linux LVM) in the machine-parseable flags output. The module was trying to
unset these pseudo-flags via 'parted set N type=8e off', which is not a
valid parted command, causing the task to fail when using flags: [lvm] on
msdos-labelled disks on SUSE systems.

Fixes #6292

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

* feat(changelog): add fragment for PR 12121

* Update changelogs/fragments/12121-parted-suse-msdos-type-code.yml

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-05-31 10:37:26 +12:00
Alexei Znamensky
5d62edc673
pamd: handle non-PAM lines in authselect profile files (#12137)
* fix(pamd): handle non-PAM lines in authselect profile files

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

* test(pamd): add test for authselect directive lines

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

* feat(changelog): add fragment for PR 12137

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

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 09:44:49 +12:00
Stefan Midjich
ef5b22d18e
unixy callback: fix KeyError when task is delegated to host without ansible_host set (#12113)
* fixes issue #12112

* adjust PR ID

* adjust PR ID, mistake was made

* adjust PR ID

* I messed up all these numbers

---------

Co-authored-by: Stefan Midjich <stefan@sydit.se>
2026-05-30 20:02:20 +02:00
Shreyash
9208cbfd43
xenserver_guest_info: add VDI uuid and vdi_type to disk info (#12119)
* xenserver_guest_info: add VDI uuid and vdi_type to disk info

  Add uuid and vdi_type (VHD/QCOW2) fields to the disk information
  returned by xenserver_guest_info module.

  Fixes #11998

* changelog: add PR URL to changelog fragment

* xenserver_guest_info: add uuid and vdi_type to RETURN example output
2026-05-30 19:43:30 +02:00
Alexei Znamensky
d749cf7c85
pkgng: remove constraints for FreeBSD 12.x from pkgng test (#12138) 2026-05-31 01:37:42 +12:00
Shreyashxredhat
a794ccf127
zpool: reduce disk usage in integration tests by using sparse files (#12128)
* zpool: use sparse files in integration tests to reduce diskspace usage

* changelog: add PR link to zpool disk space fragment

* remove changelog fragment for test-only change
2026-05-30 14:39:04 +02:00
ONODERA Masaru
e41e76fdf5
new module: gitlab_project_approvals configures GitLab project approval rules (#12096)
* Add gitlab_project_approvals module

* Update BOTMETA info

* Add lisence info to tests
2026-05-30 13:55:15 +02:00
Raphaël Droz
8468fea3b0
composer: config file hash to evaluate whether a change occurred (#12084)
* composer: Use config file hash to evaluate whether a change occurred (instead of unreliable output). Ensure `--working-dir` option consistently comes first (sudo-friendly)

* Update plugins/modules/composer.py

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

* whitespace fixes + changelog fragment

* Update changelogs/fragments/composer-working-dir-and-config-sha256.yaml

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

* Update changelogs/fragments/composer-working-dir-and-config-sha256.yaml

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

* Update plugins/modules/composer.py

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

* fragment

* ruff format  plugins/modules/composer.py

---------

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2026-05-30 13:47:09 +02:00
felix-grzelka
20a07fc973
new module: keycloak_clientscope_rolemappings (#11841)
* init

* stuff

* this should work

* helper functions

* fix docstrings

* s/client scope/clientscope/

* fix docstrings

* add type hints

* fix old function

* nox -Re formatters

* fix clientscope_id

* fix blank line contains whitespace

* add BOTMETA info

* set version_added

* Apply suggestions from code review to prepare for 13.0.0

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

* fix yaml indent in doc string

* add keycloak_clientscope_rolemappings to keycloak action group

* original author credit

* Apply suggestions from code review

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

* init tests

* Update plugins/modules/keycloak_clientscope_rolemappings.py

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

* fix integration tests

* use [] instead of .get()

* fix typo

* Update plugins/modules/keycloak_clientscope_rolemappings.py

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

* update fedora version

* fix --docker fedora

* revert

* Apply suggestions from code review

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

* remove unnecessary docstring

* change something

* change it back

* Apply suggestions from code review

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

* Update plugins/modules/keycloak_clientscope_rolemappings.py

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2026-05-30 13:45:37 +02:00
felix-grzelka
2d89fb1c15
keycloak_user: fix email_verified is not idempotent (#11749)
* fix: email_verified is not idempotent

* autopep8

* fix import-before-documentation

* address reviewer comments

* rever formatting

* revert more stuff

* fix whitespace

* clean up

* fix diff mode

* nox -Re formatters

* Update plugins/modules/keycloak_user.py

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

* add deprecation warning

* keycloak_default_behavior

* Apply suggestions from code review

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

* Update plugins/modules/keycloak_user.py

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

* fix is_struct_included

* ignore keycloak_default_behavior and fix is_struct_included

* fix diff for groups

* fix changed flag in check mode

* nox -Re formatters

* fix group diff

* nox -Re formatters

* fix comment logic

* add todos

* fix user_profile_metadata in diff

* refactor diff

* rm default for required_actions

* update required_actions docstring

* fix before_user group handling

* nox -Re formatters

* fix yaml indent in doc strings

* use f-strings

* fix tests

* fix test_add_new_user

* rename keycloak_default_behavior to email_verified_behavior

* fix stupid

* nox -Re formatters

* remove typing from docstring

* remove user_profile_metadata parameter

* Update plugins/module_utils/_keycloak.py

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

* improve docs

* precompute ignored_arguments list

* nox -Re formatters

* simplify diff logic

* add more tests

* nox -Re formatters

* fix docs

* clean up more

* fix endstate when user does not change

* finalize integrationtest

* fail if group is not found

* fix tests

* nox -Re formatters

* fix docstring

* add integration tests for required_actions

* fix diff logic and fail early

* nox -Re formatters

* fix boolean logic error

* Apply suggestions from code review

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

* Apply suggestions from code review

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

---------

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2026-05-30 13:44:08 +02:00
munchtoast
d4031f36e4
kopia: Add kopia_repository module (#11752)
* Add kopia module util

* fix pipeline suggestions

* add kopia repository module

* apply code review changes

* remove kopia_runner instance unit test

* update botmeta with kopia

* refactor docs and redundant state

* add kopia_info module and fix kopia_repository check mode support

- Add kopia_info module for read-only repository information gathering
  (kopia repository status, kopia repository throttle get) following
  the pacemaker_info pattern with ModuleHelper and info_module fragment
- Add _fmt_throttle to _kopia.py and register throttle format in
  kopia_runner; remove throttle_operation get option from
  kopia_repository per Ansible best practices (info ops belong in
  _info modules)
- Add throttle suboption dict to kopia_repository with all seven
  kopia repository throttle set flags
- Fix check_mode: support from full to actually full by implementing
  _predict_value() in kopia_repository; previously check_mode_skip
  caused changed to always be false in check mode
- Add check mode test cases to test_kopia_repository.yaml covering
  created and disconnected states for both connected and disconnected
  initial conditions
- Add BOTMETA.yml entry and full test fixture for kopia_info

* apply code review suggestions
2026-05-30 13:38:30 +02:00
Maxim Bakurevych
580e8ad3f9
slack: support file upload (#12032)
* slack: add support for file uploads and threading

* slack: add support for file uploads and threading

* docs: rename fragment to match PR #12032

* Fix validate-modules issues and update documentation for files support

* Fix tests

* Fix tests

* Fix tests

* Fix tests

* chore: fix nox sanity issues

* style: add author copyright

* style: fix examples

* build: trigger CI due to infrastructure timeout

* Update plugins/modules/slack.py

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

* doc: address reviewer feedback on changelog and token placeholder

* doc: address reviewer feedback on changelog and token placeholder

* fix: address maintainer feedback

* fix: pipeline status, rm continue

* fix: fix unit tests

* fix: linter fix

* fix: fix comments

* Update plugins/modules/slack.py

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

* Update plugins/modules/slack.py

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

* docs: remove outdated comment about failing logic

* Update plugins/modules/slack.py

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

* Update plugins/modules/slack.py

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

* fix: handle missing files via fail_on_file_error

* Apply suggestions from code review

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

* Apply suggestions from code review

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

* fix: adjust options syntax and formatting

---------

Co-authored-by: Максим Бакуревич <maksimbakurevic@MacBook-Air-Maksim.local>
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2026-05-30 13:37:04 +02:00
spike77453
8faf8c3838
Add from_toml filter (#12081) (#12081)
* Add `from_toml` filter (#12081)

* Use tasks/main.yml instead of runme.sh for integration tests

* Renamed filter back to to_toml.py, moved from_toml filter to its own file making use of python's native tomllib

* Remove task to install tomlkit library as it's no longer required for the from_toml filter

* Replace deprecated t.Mapping with collections.abc.Mapping (https://docs.python.org/3/library/typing.html#typing.Mapping)

* Type is not determined when function is called. Let isinstance check ensure value has string type.
2026-05-30 13:36:38 +02:00
Felix Fontein
38399c8107
CI: Update Azure Pipelines test container (#12115)
Update Azure Pipelines test container.
2026-05-28 21:37:14 +02:00
usbpc
50046965c9
lxc_container: Fix create_script in plugins/module_utils/_lxc.py (#12106)
* Fix create_script in plugins/module_utils/_lxc.py

* Added changelog fragment

* Apply suggestions from code review - updated typing

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

* Apply suggestion from code review - fixed docstring argument name

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

* Apply suggestion from code review

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

* Update plugins/module_utils/_lxc.py

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

---------

Co-authored-by: Kevin Holm <kevin@holm.dev>
Co-authored-by: Felix Fontein <felix@fontein.de>
2026-05-27 08:01:56 +02:00
Alexei Znamensky
cbc6f6eed3
multiple: replace namedtuple with dataclass (#12094)
* refactor(multiple): replace namedtuple with dataclass

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

* chore(changelog): add fragment for PR 12094

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

* Update comment.

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2026-05-25 15:50:34 +02:00
Alexei Znamensky
850ef03fe7
snap: enforce hold when installing at a specific revision (#12097)
* snap: enforce hold when installing at a specific revision

When `revision` is specified, run `snap refresh --hold` after install/refresh
to actually pin the snap and prevent automatic updates from overriding it.
Detects hold-mismatch idempotently via the Notes column of `snap list`.

Fixes #12088

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

* feat(changelog): add fragment for snap hold fix (#12097)

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

* test(snap): remove incorrect manual-refresh assertion from hold test

snap refresh --hold only blocks the snapd auto-refresh daemon; a manual
snap refresh bypasses the hold. Remove the block that ran snap refresh
manually and asserted the revision was unchanged.

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

* snap: add bare-refresh hold test and docs warning for manual refresh bypass

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

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 15:34:48 +02:00
Felix Fontein
1bf5e6e69a
iptables_state: clean up code (#12093)
* Get rid of unnecessary dummy variables.

* wrap_async isn't defined if the if condition isn't true.

* _back is in module_args if and only if both starter_cmd and confirm_cmd are not None.

* Add changelog.
2026-05-25 14:58:55 +02:00
Alexei Znamensky
b1c7700a1b
multiple: mark integration tests that run pip install as destructive (#12095)
test(integration): mark pip-installing tests as destructive

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 20:59:39 +12:00
Asif Draxi
fdace38501
nmcli: fix check/diff for bond arp_interval and arp_ip_target (#11588) (#12085)
* nmcli: bond ARP options stop lying in check/diff (#11588)

Align arp_interval/arp_ip_target keys with bond.options parsing, route
ARP settings via +bond.options, and fix bond MTU false positives.

* Changelog: nmcli fragment gets PR links and clearer diff wording

Address reviewer feedback on #12085 — both entries now cite the PR URL
and the MTU entry says "incorrectly reports diff" instead of "false positives".

---------

Co-authored-by: Asif Draxi <asif.draxi@blackline.com>
2026-05-23 13:35:40 +02:00
Felix Fontein
e6ca0df592
Fix typing (#12078)
Fix typing.

ansible-core 2.21.0 is out and has more type definitions.
2026-05-19 07:03:38 +02:00
Felix Fontein
cf9b91be47 The next feature release will be 13.1.0. 2026-05-18 20:18:07 +02:00
spike77453
f68e65a373
test(integration): add to_ini filter plugin test for no_extra_spaces parameter (#12077) 2026-05-18 19:38:04 +02:00
Felix Fontein
ea02e6a5a9
onepassword* lookups: drop support for op v1 (#12061)
Drop support for op v1.
2026-05-18 05:12:14 +02:00
Felix Fontein
3378d0a202 Fix link to how to release document. 2026-05-17 15:12:41 +02:00
Felix Fontein
528c2879d5
Mark nomad tests as unstable (#12072)
Mark nomad tests as unstable.
2026-05-17 11:43:36 +02:00
Alexander Freiherr von Buddenbrock
23bd56990c
Start opentelemetry spans on host start instead of task start (#11434)
* Start opentelemetry spans on host start instead of task start

v2_playbook_on_task_start does not have the host information, so spans
would always start at the same time for every host in that task, even if
they started at different times, like when hosts > forks with strategy
host_pinned. This also hides the duration of the task for that host.

This change uses the newer v2_runner_on_start callback and adds the acutal
host start time to the span. The change is backwards compatible with ansible
versions that do not have v2_runner_on_start and makes no assumptions around
the ordering of v2_runner_on_start and v2_playbook_on_task_start.

* Add changelog fragment

* Remove redundant callback hooks

v2_runner_on_starts gets called by ansible right after the strategy has called on_task_start or on_handler_start. So there is no need to keep this code as the minimum ansible-core version is guaranteed to have this function. on_cleanup (removed around ansible-core 2.0) and on_no_hosts (removed around ansible-core 2.5) never get called.

* Fix unreachable hosts causing exceptions

If finish_task is never called for a host the result object stays None, which caused an exception in update_span_data. This was the case for unreachable hosts, as the callback plugin did not implement v2_runner_on_unreachable.

* Fix import order in test_opentelemetry
2026-05-17 11:28:15 +02:00
Gerben Welter
3558e3c74a
Fix flatpak id check (#12063)
* Fix flatpak id check

This PR fixes the flatpak ID check by allowing the last component of the ID to contain dashes. The regular expression will match the flatpak ID according to the flatpak specification. It matches all 4600+ IDs currently present in flathub.

Fixes #12062

* Add changelog fragment

* Update plugins/modules/flatpak.py

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

* Update changelog fragment.

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-05-17 11:12:38 +02:00