From 7ee3df57754cdc7f67354c7a888ef63599a76365 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Fri, 7 Jul 2017 17:55:04 +0200 Subject: [PATCH] qemu: block: refactor and rename qemuBuildGlusterDriveJSONHosts 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 | 42 ++++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c index 3dbb5586d2..73f2090602 100644 --- a/src/qemu/qemu_block.c +++ b/src/qemu/qemu_block.c @@ -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", -- GitLab