]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: monitor: Add monitor API for device_add supporting JSON objects
authorPeter Krempa <pkrempa@redhat.com>
Sun, 31 Jul 2016 13:26:12 +0000 (15:26 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 4 Aug 2016 06:01:29 +0000 (08:01 +0200)
Rather than formatting a string and splitting it back to a JSON object
add API that will take a JSON object directly.

src/qemu/qemu_monitor.c
src/qemu/qemu_monitor.h
src/qemu/qemu_monitor_json.c
src/qemu/qemu_monitor_json.h

index 6c9695e172db6eae7095259ed33c683863197301..3e80376b82fcfeed039706208a9d8a703b385c73 100644 (file)
@@ -2770,6 +2770,24 @@ qemuMonitorAddDevice(qemuMonitorPtr mon,
 }
 
 
+/**
+ * qemuMonitorAddDeviceArgs:
+ * @mon: monitor object
+ * @args: arguments for device add, consumed on success or failure
+ *
+ * Adds a device described by @args. Requires JSON monitor.
+ * Returns 0 on success -1 on error.
+ */
+int
+qemuMonitorAddDeviceArgs(qemuMonitorPtr mon,
+                         virJSONValuePtr args)
+{
+    QEMU_CHECK_MONITOR_JSON(mon);
+
+    return qemuMonitorJSONAddDeviceArgs(mon, args);
+}
+
+
 /**
  * qemuMonitorAddObject:
  * @mon: Pointer to monitor object
index ae0954daeb6776aed6e9fd8854500f0308b3d74a..591d3ed28a2ec2726b7395b4e2330594df84e6e1 100644 (file)
@@ -685,6 +685,8 @@ int qemuMonitorAttachPCIDiskController(qemuMonitorPtr mon,
                                        const char *bus,
                                        virPCIDeviceAddress *guestAddr);
 
+int qemuMonitorAddDeviceArgs(qemuMonitorPtr mon,
+                             virJSONValuePtr args);
 int qemuMonitorAddDevice(qemuMonitorPtr mon,
                          const char *devicestr);
 
index 52830241c543c439e5f236800e50a20c487a370f..c57c8b85105d8dd5a3c335442850b1f37cacb748 100644 (file)
@@ -3583,20 +3583,15 @@ int qemuMonitorJSONDelDevice(qemuMonitorPtr mon,
 }
 
 
-int qemuMonitorJSONAddDevice(qemuMonitorPtr mon,
-                             const char *devicestr)
+int
+qemuMonitorJSONAddDeviceArgs(qemuMonitorPtr mon,
+                             virJSONValuePtr args)
 {
     int ret = -1;
-    virJSONValuePtr cmd;
+    virJSONValuePtr cmd = NULL;
     virJSONValuePtr reply = NULL;
-    virJSONValuePtr args;
 
-    cmd = qemuMonitorJSONMakeCommand("device_add", NULL);
-    if (!cmd)
-        return -1;
-
-    args = qemuMonitorJSONKeywordStringToJSON(devicestr, "driver");
-    if (!args)
+    if (!(cmd = qemuMonitorJSONMakeCommand("device_add", NULL)))
         goto cleanup;
 
     if (virJSONValueObjectAppend(cmd, "arguments", args) < 0)
@@ -3618,6 +3613,19 @@ int qemuMonitorJSONAddDevice(qemuMonitorPtr mon,
 }
 
 
+int
+qemuMonitorJSONAddDevice(qemuMonitorPtr mon,
+                         const char *devicestr)
+{
+    virJSONValuePtr args;
+
+    if (!(args = qemuMonitorJSONKeywordStringToJSON(devicestr, "driver")))
+        return -1;
+
+    return qemuMonitorJSONAddDeviceArgs(mon, args);
+}
+
+
 int qemuMonitorJSONAddObject(qemuMonitorPtr mon,
                              const char *type,
                              const char *objalias,
index 0b3d898a29612d7ed31dc29ca09fcb72e68aba4b..7f3222a477986c7f0ceefdbc8c6913033cd04748 100644 (file)
@@ -215,6 +215,8 @@ int qemuMonitorJSONAttachPCIDiskController(qemuMonitorPtr mon,
                                            const char *bus,
                                            virPCIDeviceAddress *guestAddr);
 
+int qemuMonitorJSONAddDeviceArgs(qemuMonitorPtr mon,
+                                 virJSONValuePtr args);
 int qemuMonitorJSONAddDevice(qemuMonitorPtr mon,
                              const char *devicestr);