Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ansible-core for openSUSE:Factory checked in at 2026-10-08 13:28:02 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ansible-core (Old) and /work/SRC/openSUSE:Factory/.ansible-core.new.3698736 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ansible-core" Thu Oct 8 13:28:02 2026 rev:66 rq:1383203 version:2.21.5 Changes: -------- --- /work/SRC/openSUSE:Factory/ansible-core/ansible-core.changes 2026-10-05 13:05:06.869597387 +0200 +++ /work/SRC/openSUSE:Factory/.ansible-core.new.3698736/ansible-core.changes 2026-10-08 13:28:41.061047606 +0200 @@ -1,0 +2,20 @@ +Thu Oct 8 06:03:26 UTC 2026 - Johannes Kastl <[email protected]> + +- update to 2.21.5: + https://github.com/ansible/ansible/blob/v2.21.5/changelogs/CHANGELOG-v2.21.rst + * Bugfixes + - ansible-connection - ensure that the connection persistent + directory has private permissions. This covers the corner + case in which the preceding directories do not exist or do + not have private enough permissions. + - ansible-test - Do not fail the validate-modules sanity test + when a plugin documents an option with the secret key. The + key is only honored by ansible-core 2.22 and later, where it + masks the option value in output. It is ignored by earlier + versions, but is now accepted by the sanity test so a + collection can document it while still testing against those + versions. + - dnf5 module - Set the dnf destdir configuration option from + download_dir when download_only is true, as documented. + +------------------------------------------------------------------- Old: ---- ansible_core-2.21.4.tar.gz ansible_core-2.21.4.tar.gz.sha256 New: ---- ansible_core-2.21.5.tar.gz ansible_core-2.21.5.tar.gz.sha256 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ansible-core.spec ++++++ --- /var/tmp/diff_new_pack.aaeDzx/_old 2026-10-08 13:28:41.991086528 +0200 +++ /var/tmp/diff_new_pack.aaeDzx/_new 2026-10-08 13:28:41.996086737 +0200 @@ -43,7 +43,7 @@ %endif Name: ansible-core -Version: 2.21.4 +Version: 2.21.5 Release: 0 Summary: Radically simple IT automation License: GPL-3.0-or-later ++++++ ansible_core-2.21.4.tar.gz -> ansible_core-2.21.5.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible_core-2.21.4/PKG-INFO new/ansible_core-2.21.5/PKG-INFO --- old/ansible_core-2.21.4/PKG-INFO 2026-09-08 18:39:02.000000000 +0200 +++ new/ansible_core-2.21.5/PKG-INFO 2026-10-05 17:06:50.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.4 Name: ansible-core -Version: 2.21.4 +Version: 2.21.5 Summary: Radically simple IT automation Author: Ansible Project License-Expression: GPL-3.0-or-later diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible_core-2.21.4/ansible_core.egg-info/PKG-INFO new/ansible_core-2.21.5/ansible_core.egg-info/PKG-INFO --- old/ansible_core-2.21.4/ansible_core.egg-info/PKG-INFO 2026-09-08 18:39:02.000000000 +0200 +++ new/ansible_core-2.21.5/ansible_core.egg-info/PKG-INFO 2026-10-05 17:06:50.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.4 Name: ansible-core -Version: 2.21.4 +Version: 2.21.5 Summary: Radically simple IT automation Author: Ansible Project License-Expression: GPL-3.0-or-later diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible_core-2.21.4/changelogs/CHANGELOG-v2.21.rst new/ansible_core-2.21.5/changelogs/CHANGELOG-v2.21.rst --- old/ansible_core-2.21.4/changelogs/CHANGELOG-v2.21.rst 2026-09-08 18:39:02.000000000 +0200 +++ new/ansible_core-2.21.5/changelogs/CHANGELOG-v2.21.rst 2026-10-05 17:06:50.000000000 +0200 @@ -4,6 +4,22 @@ .. contents:: Topics +v2.21.5 +======= + +Release Summary +--------------- + +| Release Date: 2026-10-05 +| `Porting Guide <https://docs.ansible.com/ansible-core/2.21/porting_guides/porting_guide_core_2.21.html>`__ + +Bugfixes +-------- + +- ansible-connection - ensure that the connection persistent directory has private permissions. This covers the corner case in which the preceding directories do not exist or do not have private enough permissions. +- ansible-test - Do not fail the ``validate-modules`` sanity test when a plugin documents an option with the ``secret`` key. The key is only honored by ansible-core 2.22 and later, where it masks the option value in output. It is ignored by earlier versions, but is now accepted by the sanity test so a collection can document it while still testing against those versions. +- dnf5 module - Set the dnf ``destdir`` configuration option from ``download_dir`` when ``download_only`` is true, as documented. + v2.21.4 ======= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible_core-2.21.4/changelogs/changelog.yaml new/ansible_core-2.21.5/changelogs/changelog.yaml --- old/ansible_core-2.21.4/changelogs/changelog.yaml 2026-09-08 18:39:02.000000000 +0200 +++ new/ansible_core-2.21.5/changelogs/changelog.yaml 2026-10-05 17:06:50.000000000 +0200 @@ -816,3 +816,39 @@ - mask_url.yml - tempfile-path-traversal.yml release_date: '2026-08-31' + 2.21.5: + changes: + release_summary: '| Release Date: 2026-10-05 + + | `Porting Guide <https://docs.ansible.com/ansible-core/2.21/porting_guides/porting_guide_core_2.21.html>`__ + + ' + codename: The Rain Song + fragments: + - 2.21.5_summary.yaml + release_date: '2026-10-05' + 2.21.5rc1: + changes: + bugfixes: + - ansible-connection - ensure that the connection persistent directory has private + permissions. This covers the corner case in which the preceding directories + do not exist or do not have private enough permissions. + - ansible-test - Do not fail the ``validate-modules`` sanity test when a plugin + documents an option with the ``secret`` key. The key is only honored by ansible-core + 2.22 and later, where it masks the option value in output. It is ignored by + earlier versions, but is now accepted by the sanity test so a collection can + document it while still testing against those versions. + - dnf5 module - Set the dnf ``destdir`` configuration option from ``download_dir`` + when ``download_only`` is true, as documented. + release_summary: '| Release Date: 2026-09-29 + + | `Porting Guide <https://docs.ansible.com/ansible-core/2.21/porting_guides/porting_guide_core_2.21.html>`__ + + ' + codename: The Rain Song + fragments: + - 2.21.5rc1_summary.yaml + - ansible-test-validate-modules-secret.yml + - dnf5-download_dir-download_only.yml + - ensure_conn_cli_dir_perms.yml + release_date: '2026-09-29' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible_core-2.21.4/lib/ansible/cli/scripts/ansible_connection_cli_stub.py new/ansible_core-2.21.5/lib/ansible/cli/scripts/ansible_connection_cli_stub.py --- old/ansible_core-2.21.4/lib/ansible/cli/scripts/ansible_connection_cli_stub.py 2026-09-08 18:39:02.000000000 +0200 +++ new/ansible_core-2.21.5/lib/ansible/cli/scripts/ansible_connection_cli_stub.py 2026-10-05 17:06:50.000000000 +0200 @@ -24,7 +24,7 @@ from ansible.module_utils._internal._json._profiles import _tagless from ansible.playbook.play_context import PlayContext from ansible.plugins.loader import connection_loader, init_plugin_loader -from ansible.utils.path import unfrackpath, makedirs_safe +from ansible.utils.path import unfrackpath from ansible.utils.display import Display from ansible.utils.jsonrpc import JsonRpcServer @@ -260,7 +260,7 @@ # create the persistent connection dir if need be and create the paths # which we will be using later tmp_path = unfrackpath(C.PERSISTENT_CONTROL_PATH_DIR) - makedirs_safe(tmp_path) + os.makedirs(tmp_path, mode=0o700, exist_ok=True) socket_path = unfrackpath(cp % dict(directory=tmp_path)) lock_path = unfrackpath("%s/.ansible_pc_lock_%s" % os.path.split(socket_path)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible_core-2.21.4/lib/ansible/module_utils/ansible_release.py new/ansible_core-2.21.5/lib/ansible/module_utils/ansible_release.py --- old/ansible_core-2.21.4/lib/ansible/module_utils/ansible_release.py 2026-09-08 18:39:02.000000000 +0200 +++ new/ansible_core-2.21.5/lib/ansible/module_utils/ansible_release.py 2026-10-05 17:06:50.000000000 +0200 @@ -17,6 +17,6 @@ from __future__ import annotations -__version__ = '2.21.4' +__version__ = '2.21.5' __author__ = 'Ansible, Inc.' __codename__ = "The Rain Song" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible_core-2.21.4/lib/ansible/modules/dnf5.py new/ansible_core-2.21.5/lib/ansible/modules/dnf5.py --- old/ansible_core-2.21.4/lib/ansible/modules/dnf5.py 2026-09-08 18:39:02.000000000 +0200 +++ new/ansible_core-2.21.5/lib/ansible/modules/dnf5.py 2026-10-05 17:06:50.000000000 +0200 @@ -602,7 +602,7 @@ conf.installroot = self.installroot conf.use_host_config = True # needed for installroot conf.cacheonly = "all" if self.cacheonly else "none" - if self.download_dir: + if self.download_only and self.download_dir: conf.destdir = self.download_dir if self.enable_plugin: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible_core-2.21.4/lib/ansible/release.py new/ansible_core-2.21.5/lib/ansible/release.py --- old/ansible_core-2.21.4/lib/ansible/release.py 2026-09-08 18:39:02.000000000 +0200 +++ new/ansible_core-2.21.5/lib/ansible/release.py 2026-10-05 17:06:50.000000000 +0200 @@ -17,6 +17,6 @@ from __future__ import annotations -__version__ = '2.21.4' +__version__ = '2.21.5' __author__ = 'Ansible, Inc.' __codename__ = "The Rain Song" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible_core-2.21.4/test/lib/ansible_test/_util/controller/sanity/validate-modules/validate_modules/schema.py new/ansible_core-2.21.5/test/lib/ansible_test/_util/controller/sanity/validate-modules/validate_modules/schema.py --- old/ansible_core-2.21.4/test/lib/ansible_test/_util/controller/sanity/validate-modules/validate_modules/schema.py 2026-09-08 18:39:02.000000000 +0200 +++ new/ansible_core-2.21.5/test/lib/ansible_test/_util/controller/sanity/validate-modules/validate_modules/schema.py 2026-10-05 17:06:50.000000000 +0200 @@ -670,6 +670,10 @@ 'cli': [cli_schema], 'keyword': [keyword_schema], 'deprecated': deprecated_schema, + # Only honored by ansible-core 2.22 and later. It is accepted here + # so a collection documenting it can still pass this sanity test + # when run under older ansible-core versions. + 'secret': bool, }) suboption_schema = dict(basic_option_schema) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible_core-2.21.4/test/units/module_utils/urls/test_Request.py new/ansible_core-2.21.5/test/units/module_utils/urls/test_Request.py --- old/ansible_core-2.21.4/test/units/module_utils/urls/test_Request.py 2026-09-08 18:39:02.000000000 +0200 +++ new/ansible_core-2.21.5/test/units/module_utils/urls/test_Request.py 2026-10-05 17:06:50.000000000 +0200 @@ -192,7 +192,15 @@ if isinstance(handler, expected_handlers): found_handlers.append(handler) assert len(found_handlers) == 2 - assert found_handlers[0].passwd.passwd[None] == {(('ansible.com', '/'),): ('user', None)} + + expected = ('user', None) + result = found_handlers[0].passwd.passwd[None] + + assert ( + # see https://github.com/python/cpython/issues/155694 + result == {(('ansible.com', '/'),): expected} or # before fix + result == {((None, 'ansible.com', '/'),): expected} # after fix + ) @pytest.mark.parametrize('url, expected', ( @@ -215,7 +223,14 @@ for handler in handlers: if isinstance(handler, expected_handlers): found_handlers.append(handler) - assert found_handlers[0].passwd.passwd[None] == {(('ansible.com', '/'),): expected} + + result = found_handlers[0].passwd.passwd[None] + + assert ( + # see https://github.com/python/cpython/issues/155694 + result == {(('ansible.com', '/'),): expected} or # before fix + result == {((None, 'ansible.com', '/'),): expected} # after fix + ) def test_Request_open_username_force_basic(urlopen_mock, install_opener_mock): ++++++ ansible_core-2.21.4.tar.gz.sha256 -> ansible_core-2.21.5.tar.gz.sha256 ++++++ --- /work/SRC/openSUSE:Factory/ansible-core/ansible_core-2.21.4.tar.gz.sha256 2026-09-19 22:23:14.389852902 +0200 +++ /work/SRC/openSUSE:Factory/.ansible-core.new.3698736/ansible_core-2.21.5.tar.gz.sha256 2026-10-08 13:28:41.120050075 +0200 @@ -1 +1 @@ -81a9329f4f12cfa5008dcab5d1bf23ae69b7effc08c0f00048ab2461147ae95a ansible_core-2.21.4.tar.gz +65bb3148c58ebb843cd5074004c805f404f152114d98476dd823324616c9c6cb ansible_core-2.21.5.tar.gz
