]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Introduce qemuBuildWatchdogCommandLine
authorJohn Ferlan <jferlan@redhat.com>
Sat, 12 Mar 2016 00:36:23 +0000 (19:36 -0500)
committerJohn Ferlan <jferlan@redhat.com>
Tue, 15 Mar 2016 11:10:22 +0000 (07:10 -0400)
Add new function to manage adding the watchdog device options to the
command line removing that task from the mainline qemuBuildCommandLine.

Also since qemuBuildWatchdogDevStr was only local here, make it static as
well as modifying the const virDomainDef.

Signed-off-by: John Ferlan <jferlan@redhat.com>
src/qemu/qemu_command.c
src/qemu/qemu_command.h

index ebc15a102e368a3630b5bdd8e57f99dad0bbcbed..437f93127b7337c06610dd3188752cf2149304b7 100644 (file)
@@ -3329,8 +3329,8 @@ qemuBuildHostNetStr(virDomainNetDefPtr net,
 }
 
 
-char *
-qemuBuildWatchdogDevStr(virDomainDefPtr def,
+static char *
+qemuBuildWatchdogDevStr(const virDomainDef *def,
                         virDomainWatchdogDefPtr dev,
                         virQEMUCapsPtr qemuCaps)
 {
@@ -3358,6 +3358,55 @@ qemuBuildWatchdogDevStr(virDomainDefPtr def,
 }
 
 
+static int
+qemuBuildWatchdogCommandLine(virCommandPtr cmd,
+                             const virDomainDef *def,
+                             virQEMUCapsPtr qemuCaps)
+{
+    virDomainWatchdogDefPtr watchdog = def->watchdog;
+    char *optstr;
+    const char *action;
+
+    if (!def->watchdog)
+        return 0;
+
+    if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
+        virCommandAddArg(cmd, "-device");
+
+        optstr = qemuBuildWatchdogDevStr(def, watchdog, qemuCaps);
+        if (!optstr)
+            return -1;
+    } else {
+        virCommandAddArg(cmd, "-watchdog");
+
+        const char *model = virDomainWatchdogModelTypeToString(watchdog->model);
+        if (!model) {
+            virReportError(VIR_ERR_INTERNAL_ERROR,
+                           "%s", _("missing watchdog model"));
+            return -1;
+        }
+
+        if (VIR_STRDUP(optstr, model) < 0)
+            return -1;
+    }
+    virCommandAddArg(cmd, optstr);
+    VIR_FREE(optstr);
+
+    if (watchdog->action == VIR_DOMAIN_WATCHDOG_ACTION_DUMP)
+        watchdog->action = VIR_DOMAIN_WATCHDOG_ACTION_PAUSE;
+
+    action = virDomainWatchdogActionTypeToString(watchdog->action);
+    if (!action) {
+        virReportError(VIR_ERR_INTERNAL_ERROR,
+                       "%s", _("invalid watchdog action"));
+        return -1;
+    }
+    virCommandAddArgList(cmd, "-watchdog-action", action, NULL);
+
+    return 0;
+}
+
+
 char *
 qemuBuildMemballoonDevStr(virDomainDefPtr def,
                           virDomainMemballoonDefPtr dev,
@@ -8863,44 +8912,8 @@ qemuBuildCommandLine(virConnectPtr conn,
     if (qemuBuildSoundCommandLine(cmd, def, qemuCaps) < 0)
         goto error;
 
-    /* Add watchdog hardware */
-    if (def->watchdog) {
-        virDomainWatchdogDefPtr watchdog = def->watchdog;
-        char *optstr;
-
-        if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
-            virCommandAddArg(cmd, "-device");
-
-            optstr = qemuBuildWatchdogDevStr(def, watchdog, qemuCaps);
-            if (!optstr)
-                goto error;
-        } else {
-            virCommandAddArg(cmd, "-watchdog");
-
-            const char *model = virDomainWatchdogModelTypeToString(watchdog->model);
-            if (!model) {
-                virReportError(VIR_ERR_INTERNAL_ERROR,
-                               "%s", _("missing watchdog model"));
-                goto error;
-            }
-
-            if (VIR_STRDUP(optstr, model) < 0)
-                goto error;
-        }
-        virCommandAddArg(cmd, optstr);
-        VIR_FREE(optstr);
-
-        int act = watchdog->action;
-        if (act == VIR_DOMAIN_WATCHDOG_ACTION_DUMP)
-            act = VIR_DOMAIN_WATCHDOG_ACTION_PAUSE;
-        const char *action = virDomainWatchdogActionTypeToString(act);
-        if (!action) {
-            virReportError(VIR_ERR_INTERNAL_ERROR,
-                           "%s", _("invalid watchdog action"));
-            goto error;
-        }
-        virCommandAddArgList(cmd, "-watchdog-action", action, NULL);
-    }
+    if (qemuBuildWatchdogCommandLine(cmd, def, qemuCaps) < 0)
+        goto error;
 
     /* Add redirected devices */
     for (i = 0; i < def->nredirdevs; i++) {
index d7f13448b23c406bfc5bdb6aa6d49aa0d6e001fa..e5b4445eee6b56e7c02e5bc9271f8e3b6e3c2b7a 100644 (file)
@@ -130,10 +130,6 @@ char *qemuBuildControllerDevStr(const virDomainDef *domainDef,
                                 virQEMUCapsPtr qemuCaps,
                                 int *nusbcontroller);
 
-char *qemuBuildWatchdogDevStr(virDomainDefPtr domainDef,
-                              virDomainWatchdogDefPtr dev,
-                              virQEMUCapsPtr qemuCaps);
-
 char *qemuBuildMemballoonDevStr(virDomainDefPtr domainDef,
                                 virDomainMemballoonDefPtr dev,
                                 virQEMUCapsPtr qemuCaps);