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

Reply via email to