adds GFS2 support (#12285)
* adds GFS support
* changes PR id
(cherry picked from commit 57739cbbd9)
Co-authored-by: Robert Sander <r.sander@heinlein-support.de>
filesystem: remove test setup for Ubuntu <16.04 (#12281)
* filesystem: remove test setup for Ubuntu <16.04
* more Ubuntu 16.04 refs
* and more old Ubuntu refs in tests
* and yet more truisms in tests conditionals
(cherry picked from commit b2a8fbe9c7)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Unhardcode dnf_config_manager DNF bin path (#12219)
Unhardcode the binary path to dnf in dnf_config_manager
(cherry picked from commit 07df65f293)
Co-authored-by: Maksym Hazevych <mhazevych@mailbox.org>
xbps: include `stdout` and `stderr` in module output (#12234)
* fix(xbps): add stdout/stderr to module output and fix error message typo
Include stdout and stderr from the last executed command in all
exit_json and fail_json calls so users can see the actual xbps output
when debugging failures (addresses issue #2478).
* test(xbps): add basic unit tests using uthelper
Cover install (new, already present, failure) and remove (installed,
absent) scenarios. Verifies stdout/stderr are propagated in output.
* changelog: add fragment for PR 12234
* Add version_added.
---------
(cherry picked from commit 7dc2441fc8)
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>
filesystem: re-enable (and fix) most tests for Alpine (#12274)
Re-enable (and fix) most tests for Alpine.
(cherry picked from commit 4775dfbcb2)
Co-authored-by: Felix Fontein <felix@fontein.de>
add go module to manage Go packages via go install (#12152)
* add golang_package module to manage Go packages via go install
Adds a new module to install, update, and remove Go packages
using go install. Supports inline version pinning in package
names (e.g. pkg/tool/cmd with version suffix).
Assisted-by: Claude Opus 4.6
* fix copyright year and BOTMETA alphabetical order
* fix environment keyword docs, add integration test aliases
- Use C(environment) instead of O(ignore:environment) for task keyword
- Add tests/integration/targets/golang_package/aliases for CI
- Fix setup.yml: handle Alpine/ArchLinux/FreeBSD package names, skip Go < 1.16
- Pin tests to x/tools v0.24.1 (only version compatible with Go 1.16-1.25)
* test signing trace
---------
(cherry picked from commit b34ef22c82)
Co-authored-by: Shreyash <shrbhosa@redhat.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* Fix dnf_config_manager incompatibility with DNF5 (#12206)
* Extract fixtures from dnf_config_manager tests
* Implement support for DNF5
* Format code
(cherry picked from commit ff7f90fb4f)
* Exclude dnf_config_manager fixtures from trailing space check.
(cherry picked from commit ebb813680e)
---------
Co-authored-by: Maksym Hazevych <mhazevych@mailbox.org>
Co-authored-by: Felix Fontein <felix@fontein.de>
Revert "filesystem module gfs2 support (#12218)" (#12262)
This reverts commit 9c0051e325.
(cherry picked from commit f1317d3039)
Co-authored-by: Felix Fontein <felix@fontein.de>
Re-enable most filesystem tests (#12258)
* Re-enable most filesystem tests.
* Fix conditionals (ansible-core 2.19).
* Fedora also needs gfs2-utils.
* fatresize seems to be broken on Ubuntu.
* Install util-linux-extra on Debian/Ubuntu.
* Fix conditionals.
* Temporarily disable bcachefs tests on Arch (and thus on all platforms).
* [TEMP] Generally disable gfs2 tests.
(cherry picked from commit ed8afeb16b)
Co-authored-by: Felix Fontein <felix@fontein.de>
counter_enabled callback: display output for looped tasks (#12067)
* fix(counter_enabled): display output for looped tasks with delegate_to
Implement v2_runner_item_on_ok, v2_runner_item_on_failed, and
v2_runner_item_on_skipped so that looped tasks (including those
using delegate_to: localhost) produce visible output.
Also extract _host_label, _display_result_ok, _display_result_failed,
and _display_result_skipped helpers to eliminate repeated delegation
and message-building logic across the callback methods.
Fixes#8187
* changelog(counter_enabled): add fragment for PR #12067
* test(counter_enabled): add integration tests, adjust _host_label
* test(counter_enabled): migrate integration tests to callback test framework
* test(counter_enabled): fix integration tests to use set_fact instead of debug
---------
(cherry picked from commit f677c2ab7d)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
java_cert: fix PKCS12 password not passed to `keytool -list` (#12151)
* fix(java_cert): remove -noprompt from keytool -list to allow stdin password
-noprompt is not a valid option for keytool -list (only for importkeystore/
importcert). On Java 8, passing it caused keytool to skip reading the store
password from stdin, resulting in a null password and NullPointerException.
Fixes#3023
* test(java_cert): add idempotency test for pkcs12 import with password
Exercises _export_public_cert_from_pkcs12 when the alias already exists,
verifying the password is correctly read from stdin on the comparison path.
* changelog: add fragment for PR 12151
---------
(cherry picked from commit 994b756026)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
xml: preserve DOCTYPE declaration when writing XML files (#12148)
* fix(xml): preserve DOCTYPE declaration when writing XML files
Pass `doctype=tree.docinfo.doctype` to all `ElementTree.write()` calls
so lxml does not silently drop the DOCTYPE on serialization. Also replace
`etree.tostring()` with BytesIO+write() in the diff and xmlstring paths
for consistency.
Fixes#2762
* test(xml): add integration test for DOCTYPE preservation
* feat(changelog): add fragment for xml DOCTYPE fix (#12148)
---------
(cherry picked from commit 5004c9f70f)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
xenserver_guest_info: use fallback chain for VDI format detection (#12215)
* xenserver_guest_info: use fallback chain for VDI format detection
* changelog: add PR URL to
changelog fragment
* test: set mismatched vdi_type in vm-3 fixture to test fallback chain precedence
Set vdi_type to "vhd" while image-format remains "qcow2" so the unit
test verifies that image-format takes precedence in the fallback chain.
---------
(cherry picked from commit 4d72ec3299)
Co-authored-by: Shreyash <shrbhosa@redhat.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Add integration tests for filetree lookup exclude handling (#12205)
* Add unit tests for filetree lookup exclude handling
* Fix import order in filetree lookup unit tests
* Replace filetree unit tests with integration tests
* Fix lookup_filetree integration test setup directories
* Fix lookup_filetree integration test lookup term path
* Use remote_tmp_dir for lookup_filetree integration test files
(cherry picked from commit 4cc0fbd3af)
Co-authored-by: Santosh Mahale <santoshmahale7676@gmail.com>
remove references to FreeBSD versions that are no longer used in CI (#12195)
(cherry picked from commit 10d77d934b)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
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/
(cherry picked from commit cdd9c1ddde)
Co-authored-by: spike77453 <spike77453@users.noreply.github.com>
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
* feat(changelog): add fragment for PR 12123
* 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.
* 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
* 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.
* 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.
---------
(cherry picked from commit 49ca175f01)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
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
* feat(changelog): add fragment for PR 12121
* Update changelogs/fragments/12121-parted-suse-msdos-type-code.yml
---------
(cherry picked from commit 6e6199ae3d)
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>
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
(cherry picked from commit 9208cbfd43)
Co-authored-by: Shreyash <shrbhosa@redhat.com>
pkgng: remove constraints for FreeBSD 12.x from pkgng test (#12138)
(cherry picked from commit d749cf7c85)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
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
(cherry picked from commit d4031f36e4)
Co-authored-by: munchtoast <45038532+munchtoast@users.noreply.github.com>
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.
(cherry picked from commit 8faf8c3838)
Co-authored-by: spike77453 <spike77453@users.noreply.github.com>
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
(cherry picked from commit a794ccf127)
Co-authored-by: Shreyashxredhat <shrbhosa@redhat.com>
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
* feat(changelog): add fragment for snap hold fix (#12097)
* 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.
* snap: add bare-refresh hold test and docs warning for manual refresh bypass
---------
(cherry picked from commit 850ef03fe7)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
multiple: mark integration tests that run `pip install` as destructive (#12095)
test(integration): mark pip-installing tests as destructive
(cherry picked from commit b1c7700a1b)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
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.
(cherry picked from commit 1bf5e6e69a)
Co-authored-by: Felix Fontein <felix@fontein.de>
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".
---------
(cherry picked from commit fdace38501)
Co-authored-by: Asif Draxi <47986843+AsifAd@users.noreply.github.com>
Co-authored-by: Asif Draxi <asif.draxi@blackline.com>
Fix typing (#12078)
Fix typing.
ansible-core 2.21.0 is out and has more type definitions.
(cherry picked from commit e6ca0df592)
Co-authored-by: Felix Fontein <felix@fontein.de>