]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuMonitorAddNetdev: Convert to the native JSON props object
authorPeter Krempa <pkrempa@redhat.com>
Fri, 15 May 2020 09:36:28 +0000 (11:36 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 20 May 2020 07:41:58 +0000 (09:41 +0200)
Now that all code paths generate JSON props we can remove the conversion
to command line arguments and back in the monitor code.

Note that the test which is removed in this commit will be replaced by a
stronger testsuite later.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
src/qemu/qemu_hotplug.c
src/qemu/qemu_monitor.c
src/qemu/qemu_monitor.h
src/qemu/qemu_monitor_json.c
src/qemu/qemu_monitor_json.h
tests/qemumonitorjsontest.c

index 4a3597ac011959693f5a5a5da9fe0b3af688307e..3571dead89e92829a91f8b2d23147be9f619ad07 100644 (file)
@@ -1159,7 +1159,6 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver,
     size_t queueSize = 0;
     g_autofree char *nicstr = NULL;
     g_autoptr(virJSONValue) netprops = NULL;
-    g_autofree char *netstr = NULL;
     int ret = -1;
     bool releaseaddr = false;
     bool iface_connected = false;
@@ -1390,9 +1389,6 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver,
                                          slirpfdName)))
         goto cleanup;
 
-    if (!(netstr = virQEMUBuildNetdevCommandlineFromJSON(netprops)))
-        goto cleanup;
-
     qemuDomainObjEnterMonitor(driver, vm);
 
     if (actualType == VIR_DOMAIN_NET_TYPE_VHOSTUSER) {
@@ -1404,7 +1400,7 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver,
         charDevPlugged = true;
     }
 
-    if (qemuMonitorAddNetdev(priv->mon, netstr,
+    if (qemuMonitorAddNetdev(priv->mon, &netprops,
                              tapfd, tapfdName, tapfdSize,
                              vhostfd, vhostfdName, vhostfdSize,
                              slirpfd, slirpfdName) < 0) {
@@ -2114,7 +2110,6 @@ int qemuDomainAttachChrDevice(virQEMUDriverPtr driver,
     virDomainDefPtr vmdef = vm->def;
     g_autofree char *devstr = NULL;
     g_autoptr(virJSONValue) netdevprops = NULL;
-    g_autofree char *netdevstr = NULL;
     virDomainChrSourceDefPtr dev = chr->source;
     g_autofree char *charAlias = NULL;
     bool chardevAttached = false;
@@ -2156,9 +2151,6 @@ int qemuDomainAttachChrDevice(virQEMUDriverPtr driver,
     if (guestfwd) {
         if (!(netdevprops = qemuBuildChannelGuestfwdNetdevProps(chr)))
             goto cleanup;
-
-        if (!(netdevstr = virQEMUBuildNetdevCommandlineFromJSON(netdevprops)))
-            goto cleanup;
     } else {
         if (qemuBuildChrDeviceStr(&devstr, vmdef, chr, priv->qemuCaps) < 0)
             goto cleanup;
@@ -2181,8 +2173,8 @@ int qemuDomainAttachChrDevice(virQEMUDriverPtr driver,
         goto exit_monitor;
     chardevAttached = true;
 
-    if (netdevstr) {
-        if (qemuMonitorAddNetdev(priv->mon, netdevstr,
+    if (netdevprops) {
+        if (qemuMonitorAddNetdev(priv->mon, &netdevprops,
                                  NULL, NULL, 0, NULL, NULL, 0, -1, NULL) < 0)
             goto exit_monitor;
     }
index 9c853ccb93b902031b5f62aa9bf5b82d79f1169c..2911307f0e8aef3aced5d280650899837497d262 100644 (file)
@@ -2667,7 +2667,7 @@ qemuMonitorCloseFileHandle(qemuMonitorPtr mon,
 
 int
 qemuMonitorAddNetdev(qemuMonitorPtr mon,
-                     const char *netdevstr,
+                     virJSONValuePtr *props,
                      int *tapfd, char **tapfdName, int tapfdSize,
                      int *vhostfd, char **vhostfdName, int vhostfdSize,
                      int slirpfd, char *slirpfdName)
@@ -2675,10 +2675,10 @@ qemuMonitorAddNetdev(qemuMonitorPtr mon,
     int ret = -1;
     size_t i = 0, j = 0;
 
-    VIR_DEBUG("netdevstr=%s tapfd=%p tapfdName=%p tapfdSize=%d"
+    VIR_DEBUG("props=%p tapfd=%p tapfdName=%p tapfdSize=%d"
               "vhostfd=%p vhostfdName=%p vhostfdSize=%d"
               "slirpfd=%d slirpfdName=%s",
-              netdevstr, tapfd, tapfdName, tapfdSize,
+              props, tapfd, tapfdName, tapfdSize,
               vhostfd, vhostfdName, vhostfdSize, slirpfd, slirpfdName);
 
     QEMU_CHECK_MONITOR(mon);
@@ -2696,7 +2696,7 @@ qemuMonitorAddNetdev(qemuMonitorPtr mon,
         qemuMonitorSendFileHandle(mon, slirpfdName, slirpfd) < 0)
         goto cleanup;
 
-    ret = qemuMonitorJSONAddNetdev(mon, netdevstr);
+    ret = qemuMonitorJSONAddNetdev(mon, props);
 
  cleanup:
     if (ret < 0) {
index 8b6341f3ffc3789d764e29a127d269f8ba657c8b..c61c05cb9f2463ada5b82466b26d3956d00b75ce 100644 (file)
@@ -881,7 +881,7 @@ int qemuMonitorCloseFileHandle(qemuMonitorPtr mon,
                                const char *fdname);
 
 int qemuMonitorAddNetdev(qemuMonitorPtr mon,
-                         const char *netdevstr,
+                         virJSONValuePtr *props,
                          int *tapfd, char **tapfdName, int tapfdSize,
                          int *vhostfd, char **vhostfdName, int vhostfdSize,
                          int slirpfd, char *slirpfdName);
index 36c438d0180f52ec39069456d8ef13b0c5f3a9a0..3070c1e6b3d00c79d369a00f1f470f072e47eeb5 100644 (file)
@@ -3986,23 +3986,14 @@ int qemuMonitorJSONCloseFileHandle(qemuMonitorPtr mon,
 
 int
 qemuMonitorJSONAddNetdev(qemuMonitorPtr mon,
-                         const char *netdevstr)
+                         virJSONValuePtr *props)
 {
     g_autoptr(virJSONValue) cmd = NULL;
     g_autoptr(virJSONValue) reply = NULL;
-    g_autoptr(virJSONValue) args = NULL;
-
-    cmd = qemuMonitorJSONMakeCommand("netdev_add", NULL);
-    if (!cmd)
-        return -1;
-
-    args = qemuMonitorJSONKeywordStringToJSON(netdevstr, "type");
-    if (!args)
-        return -1;
+    virJSONValuePtr pr = g_steal_pointer(props);
 
-    if (virJSONValueObjectAppend(cmd, "arguments", args) < 0)
+    if (!(cmd = qemuMonitorJSONMakeCommandInternal("netdev_add", pr)))
         return -1;
-    args = NULL; /* obj owns reference to args now */
 
     if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0)
         return -1;
index d3d46ec2f72f696a873ec6a89452fd85baa95b0b..83c5e25ca5706d452d9075ed3c0935de9815966f 100644 (file)
@@ -210,7 +210,7 @@ int qemuMonitorJSONCloseFileHandle(qemuMonitorPtr mon,
                                    const char *fdname);
 
 int qemuMonitorJSONAddNetdev(qemuMonitorPtr mon,
-                             const char *netdevstr);
+                             virJSONValuePtr *props);
 
 int qemuMonitorJSONRemoveNetdev(qemuMonitorPtr mon,
                                 const char *alias);
index f58b18a1109e19ea9dff836b3c38d9c3ba3055e6..a50b157dbcd2f0c2e34dc0ff041c5c10eb258121 100644 (file)
@@ -1315,7 +1315,6 @@ GEN_TEST_FUNC(qemuMonitorJSONDump, "dummy_protocol", "elf",
               true)
 GEN_TEST_FUNC(qemuMonitorJSONGraphicsRelocate, VIR_DOMAIN_GRAPHICS_TYPE_SPICE,
               "localhost", 12345, 12346, "certsubjectval")
-GEN_TEST_FUNC(qemuMonitorJSONAddNetdev, "id=net0,type=user")
 GEN_TEST_FUNC(qemuMonitorJSONRemoveNetdev, "net0")
 GEN_TEST_FUNC(qemuMonitorJSONDelDevice, "ide0")
 GEN_TEST_FUNC(qemuMonitorJSONAddDevice, "some_dummy_devicestr")
@@ -3226,7 +3225,6 @@ mymain(void)
     DO_TEST_GEN(qemuMonitorJSONMigrate);
     DO_TEST_GEN(qemuMonitorJSONDump);
     DO_TEST_GEN(qemuMonitorJSONGraphicsRelocate);
-    DO_TEST_GEN(qemuMonitorJSONAddNetdev);
     DO_TEST_GEN(qemuMonitorJSONRemoveNetdev);
     DO_TEST_GEN(qemuMonitorJSONDelDevice);
     DO_TEST_GEN(qemuMonitorJSONAddDevice);