]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Unify checking for machine1 systemd service
authorJán Tomko <jtomko@redhat.com>
Fri, 24 Jun 2016 15:38:33 +0000 (17:38 +0200)
committerJán Tomko <jtomko@redhat.com>
Mon, 6 Mar 2017 14:34:33 +0000 (15:34 +0100)
Both virSystemdTerminateMachine and virSystemdCreateMachine
propagate the error to tell between a non-systemd system
and a hard error.

In virSystemdGetMachineNameByPID both are treated the same,
but an error is ignored by the callers.

Split out the checks into a separate function.

src/util/virsystemd.c

index 7ec3eee2b9174423d90f69ca0a2fee4fa05360c1..90dd68afaf0499df38246e61873a1a657e81376e 100644 (file)
@@ -182,6 +182,20 @@ virSystemdMakeMachineName(const char *drivername,
     return machinename;
 }
 
+/* -2 = machine1 is not supported on this machine
+ * -1 = error
+ *  0 = machine1 is available
+ */
+static int
+virSystemdHasMachined(void)
+{
+    int ret;
+    if ((ret = virDBusIsServiceEnabled("org.freedesktop.machine1")) < 0)
+        return ret;
+
+    return virDBusIsServiceRegistered("org.freedesktop.systemd1");
+}
+
 
 char *
 virSystemdGetMachineNameByPID(pid_t pid)
@@ -190,10 +204,7 @@ virSystemdGetMachineNameByPID(pid_t pid)
     DBusMessage *reply = NULL;
     char *name = NULL, *object = NULL;
 
-    if (virDBusIsServiceEnabled("org.freedesktop.machine1") < 0)
-        goto cleanup;
-
-    if (virDBusIsServiceRegistered("org.freedesktop.systemd1") < 0)
+    if (virSystemdHasMachined() < 0)
         goto cleanup;
 
     if (!(conn = virDBusGetSystemBus()))
@@ -268,11 +279,7 @@ int virSystemdCreateMachine(const char *name,
     char *slicename = NULL;
     static int hasCreateWithNetwork = 1;
 
-    ret = virDBusIsServiceEnabled("org.freedesktop.machine1");
-    if (ret < 0)
-        return ret;
-
-    if ((ret = virDBusIsServiceRegistered("org.freedesktop.systemd1")) < 0)
+    if ((ret = virSystemdHasMachined()) < 0)
         return ret;
 
     if (!(conn = virDBusGetSystemBus()))
@@ -434,11 +441,7 @@ int virSystemdTerminateMachine(const char *name)
 
     memset(&error, 0, sizeof(error));
 
-    ret = virDBusIsServiceEnabled("org.freedesktop.machine1");
-    if (ret < 0)
-        goto cleanup;
-
-    if ((ret = virDBusIsServiceRegistered("org.freedesktop.systemd1")) < 0)
+    if ((ret = virSystemdHasMachined()) < 0)
         goto cleanup;
 
     ret = -1;