- Make _auth calls visible with master stats - Repair mount.fstab_present always returning pending changes - Set virtual grain in Podman systemd container - Fix crash due wrong client reference on `SaltMakoTemplateLookup` - Enhace batch async and fix some detected issues - Added: * repair-virt_query-outputter-655.patch * make-_auth-calls-visible-with-master-stats-696.patch * repair-fstab_present-test-mode-702.patch * set-virtual-grain-in-podman-systemd-container-703.patch * fixed-file-client-private-attribute-reference-on-sal.patch * backport-batch-async-fixes-and-improvements-701.patch OBS-URL: https://build.opensuse.org/package/show/systemsmanagement:saltstack/salt?expand=0&rev=273
85 lines
2.9 KiB
Diff
85 lines
2.9 KiB
Diff
From dde665763bd2f043022f9601dd25d0ca8aa716be Mon Sep 17 00:00:00 2001
|
|
From: Georg <georg@lysergic.dev>
|
|
Date: Fri, 21 Feb 2025 10:24:51 +0000
|
|
Subject: [PATCH] Set virtual grain in Podman systemd container (#703)
|
|
|
|
Correctly handle the systemd-detect-virt output to identify a Podman
|
|
container running systemd as what it is instead of as a physical machine.
|
|
|
|
Signed-off-by: Georg Pfuetzenreuter <georg.pfuetzenreuter@suse.com>
|
|
(cherry picked from commit cf504a06859fb4a4fe9b8ebdd76380697f1f0c25)
|
|
---
|
|
changelog/67733.fixed.md | 1 +
|
|
salt/grains/core.py | 4 ++++
|
|
tests/pytests/unit/grains/test_core.py | 31 ++++++++++++++++++++++++++
|
|
3 files changed, 36 insertions(+)
|
|
create mode 100644 changelog/67733.fixed.md
|
|
|
|
diff --git a/changelog/67733.fixed.md b/changelog/67733.fixed.md
|
|
new file mode 100644
|
|
index 0000000000..242f65ec76
|
|
--- /dev/null
|
|
+++ b/changelog/67733.fixed.md
|
|
@@ -0,0 +1 @@
|
|
+Set correct virtual grain in systemd based Podman containers
|
|
diff --git a/salt/grains/core.py b/salt/grains/core.py
|
|
index 84d5b179dd..ceb142a7b8 100644
|
|
--- a/salt/grains/core.py
|
|
+++ b/salt/grains/core.py
|
|
@@ -911,6 +911,10 @@ def _virtual(osdata):
|
|
grains["virtual"] = "container"
|
|
grains["virtual_subtype"] = "LXC"
|
|
break
|
|
+ elif "podman" in output:
|
|
+ grains["virtual"] = "container"
|
|
+ grains["virtual_subtype"] = "Podman"
|
|
+ break
|
|
elif "amazon" in output:
|
|
grains["virtual"] = "Nitro"
|
|
grains["virtual_subtype"] = "Amazon EC2"
|
|
diff --git a/tests/pytests/unit/grains/test_core.py b/tests/pytests/unit/grains/test_core.py
|
|
index 3d2beaa2c9..072287248f 100644
|
|
--- a/tests/pytests/unit/grains/test_core.py
|
|
+++ b/tests/pytests/unit/grains/test_core.py
|
|
@@ -1752,6 +1752,37 @@ def test_lxc_virtual_with_virt_what():
|
|
assert ret["virtual_subtype"] == "LXC"
|
|
|
|
|
|
+@pytest.mark.skip_on_windows
|
|
+def test_podman_virtual_with_systemd_detect_virt():
|
|
+ """
|
|
+ Test if virtual grains are parsed correctly in Podman using systemd-detect-virt.
|
|
+ """
|
|
+
|
|
+ def _which_side_effect(path):
|
|
+ if path == "systemd-detect-virt":
|
|
+ return "/usr/bin/systemd-detect-virt"
|
|
+ return None
|
|
+
|
|
+ with patch.object(
|
|
+ salt.utils.platform, "is_windows", MagicMock(return_value=False)
|
|
+ ), patch.object(
|
|
+ salt.utils.path,
|
|
+ "which",
|
|
+ MagicMock(return_value=True, side_effect=_which_side_effect),
|
|
+ ), patch.dict(
|
|
+ core.__salt__,
|
|
+ {
|
|
+ "cmd.run_all": MagicMock(
|
|
+ return_value={"pid": 78, "retcode": 0, "stderr": "", "stdout": "podman"}
|
|
+ )
|
|
+ },
|
|
+ ):
|
|
+ osdata = {"kernel": "test"}
|
|
+ ret = core._virtual(osdata)
|
|
+ assert ret["virtual"] == "container"
|
|
+ assert ret["virtual_subtype"] == "Podman"
|
|
+
|
|
+
|
|
@pytest.mark.skip_on_windows
|
|
def test_container_inside_virtual_machine():
|
|
"""
|
|
--
|
|
2.48.1
|
|
|