]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: block: refactor and rename qemuBuildGlusterDriveJSONHosts
authorPeter Krempa <pkrempa@redhat.com>
Fri, 7 Jul 2017 15:55:04 +0000 (17:55 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 14 Jul 2017 14:05:46 +0000 (16:05 +0200)
New name is qemuBlockStorageSourceBuildHostsJSONSocketAddress since it
formats the JSON object in accordance with qemu's SocketAddress type.

Since the new naming in qemu uses 'inet' instead of 'tcp' add a
compatibility layer for gluster which uses the old name.

src/qemu/qemu_block.c

index 3dbb5586d21bb330b0726905402c9708d97b827c..73f20906026bf63893fdcd4d556cf745c9543a65 100644 (file)
@@ -430,9 +430,17 @@ qemuBlockGetNodeData(virJSONValuePtr data)
 }
 
 
-/* builds the hosts array */
+/**
+ * qemuBlockStorageSourceBuildHostsJSONSocketAddress:
+ * @src: disk storage source
+ * @legacy: use 'tcp' instead of 'inet' for compatibility reasons
+ *
+ * Formats src->hosts into a json object conforming to the 'SocketAddress' type
+ * in qemu.
+ */
 static virJSONValuePtr
-qemuBuildGlusterDriveJSONHosts(virStorageSourcePtr src)
+qemuBlockStorageSourceBuildHostsJSONSocketAddress(virStorageSourcePtr src,
+                                                  bool legacy)
 {
     virJSONValuePtr servers = NULL;
     virJSONValuePtr server = NULL;
@@ -446,24 +454,27 @@ qemuBuildGlusterDriveJSONHosts(virStorageSourcePtr src)
 
     for (i = 0; i < src->nhosts; i++) {
         host = src->hosts + i;
-        transport = virStorageNetHostTransportTypeToString(host->transport);
-
-        if (virJSONValueObjectCreate(&server, "s:type", transport, NULL) < 0)
-            goto cleanup;
 
         switch ((virStorageNetHostTransport) host->transport) {
         case VIR_STORAGE_NET_HOST_TRANS_TCP:
-            if (virJSONValueObjectAdd(server,
-                                      "s:host", host->name,
-                                      "s:port", host->port,
-                                      NULL) < 0)
+            if (legacy)
+                transport = "tcp";
+            else
+                transport = "inet";
+
+            if (virJSONValueObjectCreate(&server,
+                                         "s:type", transport,
+                                         "s:host", host->name,
+                                         "s:port", host->port,
+                                         NULL) < 0)
                 goto cleanup;
             break;
 
         case VIR_STORAGE_NET_HOST_TRANS_UNIX:
-            if (virJSONValueObjectAdd(server,
-                                      "s:socket", host->socket,
-                                      NULL) < 0)
+            if (virJSONValueObjectCreate(&server,
+                                         "s:type", "unix",
+                                         "s:socket", host->socket,
+                                         NULL) < 0)
                 goto cleanup;
             break;
 
@@ -481,8 +492,7 @@ qemuBuildGlusterDriveJSONHosts(virStorageSourcePtr src)
         server = NULL;
     }
 
-    ret = servers;
-    servers = NULL;
+    VIR_STEAL_PTR(ret, servers);
 
  cleanup:
     virJSONValueFree(servers);
@@ -499,7 +509,7 @@ qemuBuildGlusterDriveJSON(virStorageSourcePtr src)
     virJSONValuePtr servers = NULL;
     virJSONValuePtr ret = NULL;
 
-    if (!(servers = qemuBuildGlusterDriveJSONHosts(src)))
+    if (!(servers = qemuBlockStorageSourceBuildHostsJSONSocketAddress(src, true)))
         return NULL;
 
      /* { driver:"gluster",