Blob Blame History Raw
From 471d43cbfe99db1c8246fb863e3ce49b3403fc61 Mon Sep 17 00:00:00 2001
From: Vojtech Trefny <vtrefny@redhat.com>
Date: Wed, 11 Sep 2019 10:48:19 +0200
Subject: [PATCH] Fix util.detect_virt function

Fixed the systemd Manager object path, also get_property_sync
returns a tuple so we need to check its first element.

Resolves: rhbz#1676935
---
 blivet/util.py                       |  8 ++++----
 tests/formats_test/disklabel_test.py | 26 ++++++++++++++------------
 tests/util_test.py                   |  4 ++++
 3 files changed, 22 insertions(+), 16 deletions(-)

diff --git a/blivet/util.py b/blivet/util.py
index 2932e8b5..27468992 100644
--- a/blivet/util.py
+++ b/blivet/util.py
@@ -40,7 +40,7 @@ program_log_lock = Lock()
 
 
 SYSTEMD_SERVICE = "org.freedesktop.systemd1"
-SYSTEMD_MANAGER_PATH = "/org/freedesktop/systemd1/Manager"
+SYSTEMD_MANAGER_PATH = "/org/freedesktop/systemd1"
 SYSTEMD_MANAGER_IFACE = "org.freedesktop.systemd1.Manager"
 VIRT_PROP_NAME = "Virtualization"
 
@@ -1115,6 +1115,6 @@ def detect_virt():
         vm = safe_dbus.get_property_sync(SYSTEMD_SERVICE, SYSTEMD_MANAGER_PATH,
                                          SYSTEMD_MANAGER_IFACE, VIRT_PROP_NAME)
     except (safe_dbus.DBusCallError, safe_dbus.DBusPropertyError):
-        vm = None
-
-    return vm in ('qemu', 'kvm')
+        return False
+    else:
+        return vm[0] in ('qemu', 'kvm')
diff --git a/tests/formats_test/disklabel_test.py b/tests/formats_test/disklabel_test.py
index 4b105da6..94f3775f 100644
--- a/tests/formats_test/disklabel_test.py
+++ b/tests/formats_test/disklabel_test.py
@@ -163,16 +163,18 @@ class DiskLabelTestCase(unittest.TestCase):
         arch.is_efi.return_value = False
 
         arch.is_s390.return_value = True
-        with mock.patch.object(dl, '_label_type_size_check') as size_check:
-            size_check.return_value = True
-            with mock.patch("blivet.formats.disklabel.blockdev.s390") as _s390:
-                _s390.dasd_is_fba.return_value = False
-                self.assertEqual(dl._get_best_label_type(), "msdos")
-
-                _s390.dasd_is_fba.return_value = True
-                self.assertEqual(dl._get_best_label_type(), "msdos")
-
-                _s390.dasd_is_fba.return_value = False
-                dl._parted_device.type = parted.DEVICE_DASD
-                self.assertEqual(dl._get_best_label_type(), "dasd")
+        with mock.patch('blivet.util.detect_virt') as virt:
+            virt.return_value = False
+            with mock.patch.object(dl, '_label_type_size_check') as size_check:
+                size_check.return_value = True
+                with mock.patch("blivet.formats.disklabel.blockdev.s390") as _s390:
+                    _s390.dasd_is_fba.return_value = False
+                    self.assertEqual(dl._get_best_label_type(), "msdos")
+
+                    _s390.dasd_is_fba.return_value = True
+                    self.assertEqual(dl._get_best_label_type(), "msdos")
+
+                    _s390.dasd_is_fba.return_value = False
+                    dl._parted_device.type = parted.DEVICE_DASD
+                    self.assertEqual(dl._get_best_label_type(), "dasd")
         arch.is_s390.return_value = False
diff --git a/tests/util_test.py b/tests/util_test.py
index 5fa3070e..9a2ff492 100644
--- a/tests/util_test.py
+++ b/tests/util_test.py
@@ -37,6 +37,10 @@ class MiscTest(unittest.TestCase):
         # real deduplication
         self.assertEqual([1, 2, 3, 4, 5, 6], util.dedup_list([1, 2, 3, 4, 2, 2, 2, 1, 3, 5, 3, 6, 6, 2, 3, 1, 5]))
 
+    def test_detect_virt(self):
+        in_virt = not util.run_program(["systemd-detect-virt", "--vm"])
+        self.assertEqual(util.detect_virt(), in_virt)
+
 
 class TestDefaultNamedtuple(unittest.TestCase):
     def test_default_namedtuple(self):
-- 
2.20.1