Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package salt for openSUSE:Factory checked in at 2025-04-10 21:57:48 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/salt (Old) and /work/SRC/openSUSE:Factory/.salt.new.1907 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "salt" Thu Apr 10 21:57:48 2025 rev:172 rq:1268190 version:3006.0 Changes: -------- --- /work/SRC/openSUSE:Factory/salt/salt.changes 2025-03-28 09:36:56.647917248 +0100 +++ /work/SRC/openSUSE:Factory/.salt.new.1907/salt.changes 2025-04-10 21:58:28.246651598 +0200 @@ -1,0 +2,8 @@ +Wed Apr 2 15:40:46 UTC 2025 - Pablo Suárez Hernández <pablo.suarezhernan...@suse.com> + +- Fix refresh of osrelease and related grains on Python 3.10+ + +- Added: + * fix-refresh-of-osrelease-and-related-grains-on-pytho.patch + +------------------------------------------------------------------- New: ---- fix-refresh-of-osrelease-and-related-grains-on-pytho.patch BETA DEBUG BEGIN: New:- Added: * fix-refresh-of-osrelease-and-related-grains-on-pytho.patch BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ salt.spec ++++++ --- /var/tmp/diff_new_pack.WD35uA/_old 2025-04-10 21:58:31.310779559 +0200 +++ /var/tmp/diff_new_pack.WD35uA/_new 2025-04-10 21:58:31.314779725 +0200 @@ -543,6 +543,8 @@ Patch167: detect-openeuler-as-redhat-family-os.patch # PATCH-FIX_OPENSUSE: https://github.com/openSUSE/salt/pull/710 Patch168: fix-deb822-nonetype-object-has-no-attribute-split-71.patch +# PATCH-FIX_UPSTREAM: https://github.com/saltstack/salt/pull/67933 +Patch169: fix-refresh-of-osrelease-and-related-grains-on-pytho.patch ### IMPORTANT: The line below is used as a snippet marker. Do not touch it. ### SALT PATCHES LIST END ++++++ _lastrevision ++++++ --- /var/tmp/diff_new_pack.WD35uA/_old 2025-04-10 21:58:31.398783234 +0200 +++ /var/tmp/diff_new_pack.WD35uA/_new 2025-04-10 21:58:31.398783234 +0200 @@ -1,3 +1,3 @@ -98d5cd7e1e8d2493fbc2b5d16f6200e0dd081e4c +19fcac8541613dc9ef32928f99eb21a3e4ca89f1 (No newline at EOF) ++++++ fix-refresh-of-osrelease-and-related-grains-on-pytho.patch ++++++ >From 722484c93995b253bc61e93867a521693d3ca0b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Su=C3=A1rez=20Hern=C3=A1ndez?= <psuarezhernan...@suse.com> Date: Wed, 2 Apr 2025 13:29:27 +0100 Subject: [PATCH] Fix refresh of osrelease and related grains on Python 3.10+ (#712) * Fix refresh of osrelease and related grains on Python 3.10+ * Add test__freedesktop_os_release_cache_is_invalidated unit test --- changelog/67932.fixed.md | 1 + salt/grains/core.py | 5 ++++ tests/pytests/unit/grains/test_core.py | 41 ++++++++++++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 changelog/67932.fixed.md diff --git a/changelog/67932.fixed.md b/changelog/67932.fixed.md new file mode 100644 index 0000000000..255d61b502 --- /dev/null +++ b/changelog/67932.fixed.md @@ -0,0 +1 @@ +Fix refresh of osrelease and related grains on Python 3.10+ diff --git a/salt/grains/core.py b/salt/grains/core.py index 94f58e8c4e..619969df9a 100644 --- a/salt/grains/core.py +++ b/salt/grains/core.py @@ -2170,6 +2170,11 @@ def _linux_distribution_data(): log.trace("Getting OS name, release, and codename from freedesktop_os_release") try: + # If using platform.freedesktop_os_release we must invalidate + # the internal platform os_release cache to allow grains to be + # actually recalculated during grains_refresh + if hasattr(platform, "_os_release_cache"): + platform._os_release_cache = None os_release = _freedesktop_os_release() grains.update(_os_release_to_grains(os_release)) diff --git a/tests/pytests/unit/grains/test_core.py b/tests/pytests/unit/grains/test_core.py index c3cf12c10f..c15a3b4360 100644 --- a/tests/pytests/unit/grains/test_core.py +++ b/tests/pytests/unit/grains/test_core.py @@ -406,6 +406,47 @@ def test__linux_lsb_distrib_data(): assert not has_error +@pytest.mark.skip_unless_on_linux +@pytest.mark.skipif( + sys.version_info < (3, 10), + reason="platform.freedesktop_os_release not available in Python < 3.10", +) +def test__freedesktop_os_release_cache_is_invalidated(): + OS_RELEASE_DATA = { + "NAME": "openSUSE Leap", + "ID": "opensuse-leap", + "PRETTY_NAME": "openSUSE Leap 15.6", + "VERSION": "15.6", + "ID_LIKE": "suse opensuse", + "VERSION_ID": "15.6", + "ANSI_COLOR": "0;32", + "CPE_NAME": "cpe:/o:opensuse:leap:15.6", + "BUG_REPORT_URL": "https://bugs.opensuse.org", + "HOME_URL": "https://www.opensuse.org/", + "DOCUMENTATION_URL": "https://en.opensuse.org/Portal:Leap", + "LOGO": "distributor-logo-Leap", + } + + class FreeDesktopOSReleaseMock: + def __call__(self): + if hasattr(platform, "_os_release_cache"): + assert platform._os_release_cache is None + return OS_RELEASE_DATA + + with patch.object( + core, "_linux_lsb_distrib_data", MagicMock(return_value=({}, None)) + ), patch.object( + core, "_freedesktop_os_release", FreeDesktopOSReleaseMock() + ), patch.object( + core, + "_legacy_linux_distribution_data", + MagicMock(return_value={"osrelease": "15.6"}), + ): + platform._os_release_cache = {"this-cache-should-be-invalidated": "foobar"} + ret = core._linux_distribution_data() + assert ret == {"osrelease": "15.6"} + + @pytest.mark.skip_unless_on_linux def test_gnu_slash_linux_in_os_name(): """ -- 2.49.0