Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ansible-core-2.20 for openSUSE:Factory checked in at 2026-10-08 13:28:00 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ansible-core-2.20 (Old) and /work/SRC/openSUSE:Factory/.ansible-core-2.20.new.3698736 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ansible-core-2.20" Thu Oct 8 13:28:00 2026 rev:6 rq:1383202 version:2.20.10 Changes: -------- --- /work/SRC/openSUSE:Factory/ansible-core-2.20/ansible-core-2.20.changes 2026-10-05 13:05:08.572668761 +0200 +++ /work/SRC/openSUSE:Factory/.ansible-core-2.20.new.3698736/ansible-core-2.20.changes 2026-10-08 13:28:35.097798046 +0200 @@ -1,0 +2,20 @@ +Thu Oct 8 06:03:27 UTC 2026 - Johannes Kastl <[email protected]> + +- update to 2.20.10: + https://github.com/ansible/ansible/blob/v2.20.10/changelogs/CHANGELOG-v2.20.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.20.9.tar.gz ansible_core-2.20.9.tar.gz.sha256 New: ---- ansible_core-2.20.10.tar.gz ansible_core-2.20.10.tar.gz.sha256 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ansible-core-2.20.spec ++++++ --- /var/tmp/diff_new_pack.VD8CB2/_old 2026-10-08 13:28:36.573859819 +0200 +++ /var/tmp/diff_new_pack.VD8CB2/_new 2026-10-08 13:28:36.579860070 +0200 @@ -43,7 +43,7 @@ %endif Name: ansible-core-2.20 -Version: 2.20.9 +Version: 2.20.10 Release: 0 Summary: Radically simple IT automation License: GPL-3.0-or-later ++++++ ansible_core-2.20.9.tar.gz -> ansible_core-2.20.10.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible_core-2.20.9/PKG-INFO new/ansible_core-2.20.10/PKG-INFO --- old/ansible_core-2.20.9/PKG-INFO 2026-09-08 18:38:56.000000000 +0200 +++ new/ansible_core-2.20.10/PKG-INFO 2026-10-05 17:06:40.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.4 Name: ansible-core -Version: 2.20.9 +Version: 2.20.10 Summary: Radically simple IT automation Author: Ansible Project Project-URL: Homepage, https://ansible.com/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible_core-2.20.9/ansible_core.egg-info/PKG-INFO new/ansible_core-2.20.10/ansible_core.egg-info/PKG-INFO --- old/ansible_core-2.20.9/ansible_core.egg-info/PKG-INFO 2026-09-08 18:38:56.000000000 +0200 +++ new/ansible_core-2.20.10/ansible_core.egg-info/PKG-INFO 2026-10-05 17:06:40.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.4 Name: ansible-core -Version: 2.20.9 +Version: 2.20.10 Summary: Radically simple IT automation Author: Ansible Project Project-URL: Homepage, https://ansible.com/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible_core-2.20.9/changelogs/CHANGELOG-v2.20.rst new/ansible_core-2.20.10/changelogs/CHANGELOG-v2.20.rst --- old/ansible_core-2.20.9/changelogs/CHANGELOG-v2.20.rst 2026-09-08 18:38:56.000000000 +0200 +++ new/ansible_core-2.20.10/changelogs/CHANGELOG-v2.20.rst 2026-10-05 17:06:40.000000000 +0200 @@ -4,6 +4,22 @@ .. contents:: Topics +v2.20.10 +======== + +Release Summary +--------------- + +| Release Date: 2026-10-05 +| `Porting Guide <https://docs.ansible.com/ansible-core/2.20/porting_guides/porting_guide_core_2.20.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.20.9 ======= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible_core-2.20.9/changelogs/changelog.yaml new/ansible_core-2.20.10/changelogs/changelog.yaml --- old/ansible_core-2.20.9/changelogs/changelog.yaml 2026-09-08 18:38:56.000000000 +0200 +++ new/ansible_core-2.20.10/changelogs/changelog.yaml 2026-10-05 17:06:40.000000000 +0200 @@ -404,6 +404,42 @@ fragments: - 2.20.1_summary.yaml release_date: '2025-12-09' + 2.20.10: + changes: + release_summary: '| Release Date: 2026-10-05 + + | `Porting Guide <https://docs.ansible.com/ansible-core/2.20/porting_guides/porting_guide_core_2.20.html>`__ + + ' + codename: Good Times Bad Times + fragments: + - 2.20.10_summary.yaml + release_date: '2026-10-05' + 2.20.10rc1: + 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.20/porting_guides/porting_guide_core_2.20.html>`__ + + ' + codename: Good Times Bad Times + fragments: + - 2.20.10rc1_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' 2.20.1rc1: changes: bugfixes: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible_core-2.20.9/lib/ansible/cli/scripts/ansible_connection_cli_stub.py new/ansible_core-2.20.10/lib/ansible/cli/scripts/ansible_connection_cli_stub.py --- old/ansible_core-2.20.9/lib/ansible/cli/scripts/ansible_connection_cli_stub.py 2026-09-08 18:38:56.000000000 +0200 +++ new/ansible_core-2.20.10/lib/ansible/cli/scripts/ansible_connection_cli_stub.py 2026-10-05 17:06:40.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.20.9/lib/ansible/module_utils/ansible_release.py new/ansible_core-2.20.10/lib/ansible/module_utils/ansible_release.py --- old/ansible_core-2.20.9/lib/ansible/module_utils/ansible_release.py 2026-09-08 18:38:56.000000000 +0200 +++ new/ansible_core-2.20.10/lib/ansible/module_utils/ansible_release.py 2026-10-05 17:06:40.000000000 +0200 @@ -17,6 +17,6 @@ from __future__ import annotations -__version__ = '2.20.9' +__version__ = '2.20.10' __author__ = 'Ansible, Inc.' __codename__ = "Good Times Bad Times" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible_core-2.20.9/lib/ansible/modules/dnf5.py new/ansible_core-2.20.10/lib/ansible/modules/dnf5.py --- old/ansible_core-2.20.9/lib/ansible/modules/dnf5.py 2026-09-08 18:38:56.000000000 +0200 +++ new/ansible_core-2.20.10/lib/ansible/modules/dnf5.py 2026-10-05 17:06:40.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.20.9/lib/ansible/release.py new/ansible_core-2.20.10/lib/ansible/release.py --- old/ansible_core-2.20.9/lib/ansible/release.py 2026-09-08 18:38:56.000000000 +0200 +++ new/ansible_core-2.20.10/lib/ansible/release.py 2026-10-05 17:06:40.000000000 +0200 @@ -17,6 +17,6 @@ from __future__ import annotations -__version__ = '2.20.9' +__version__ = '2.20.10' __author__ = 'Ansible, Inc.' __codename__ = "Good Times Bad Times" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible_core-2.20.9/test/lib/ansible_test/_util/controller/sanity/validate-modules/validate_modules/schema.py new/ansible_core-2.20.10/test/lib/ansible_test/_util/controller/sanity/validate-modules/validate_modules/schema.py --- old/ansible_core-2.20.9/test/lib/ansible_test/_util/controller/sanity/validate-modules/validate_modules/schema.py 2026-09-08 18:38:56.000000000 +0200 +++ new/ansible_core-2.20.10/test/lib/ansible_test/_util/controller/sanity/validate-modules/validate_modules/schema.py 2026-10-05 17:06:40.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.20.9/test/units/module_utils/urls/test_Request.py new/ansible_core-2.20.10/test/units/module_utils/urls/test_Request.py --- old/ansible_core-2.20.9/test/units/module_utils/urls/test_Request.py 2026-09-08 18:38:56.000000000 +0200 +++ new/ansible_core-2.20.10/test/units/module_utils/urls/test_Request.py 2026-10-05 17:06:40.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.20.9.tar.gz.sha256 -> ansible_core-2.20.10.tar.gz.sha256 ++++++ --- /work/SRC/openSUSE:Factory/ansible-core-2.20/ansible_core-2.20.9.tar.gz.sha256 2026-09-18 22:04:33.770625373 +0200 +++ /work/SRC/openSUSE:Factory/.ansible-core-2.20.new.3698736/ansible_core-2.20.10.tar.gz.sha256 2026-10-08 13:28:35.173801227 +0200 @@ -1 +1 @@ -73bcd4c3dd51b597202f8cf5a72b8e145342c7885ad21114e5979bdf629b3366 ansible_core-2.20.9.tar.gz +577b8d3c18e4228310a4e5180c3e133bb3955b378367077bfc643f3c21ebee5c ansible_core-2.20.10.tar.gz
