c401cc
From 122cab08174f4346cf101ad2e150d2ebf6507d9f Mon Sep 17 00:00:00 2001
c401cc
Message-Id: <122cab08174f4346cf101ad2e150d2ebf6507d9f@dist-git>
c401cc
From: Peter Krempa <pkrempa@redhat.com>
c401cc
Date: Wed, 26 Feb 2014 14:54:56 +0100
c401cc
Subject: [PATCH] qemu: Simplify call pattern of qemuBuildDriveURIString
c401cc
c401cc
https://bugzilla.redhat.com/show_bug.cgi?id=1032370
c401cc
c401cc
Automatically assign secret type from the disk source definition and
c401cc
pull in adding of the comma. Then update callers to keep generated
c401cc
output the same.
c401cc
c401cc
(cherry picked from commit 927ddae1972ac36149a3a95d4feed6453089b743)
c401cc
c401cc
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
c401cc
---
c401cc
 src/qemu/qemu_command.c | 34 +++++++++++++---------------------
c401cc
 1 file changed, 13 insertions(+), 21 deletions(-)
c401cc
c401cc
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
c401cc
index da4d2f8..b80ffe9 100644
c401cc
--- a/src/qemu/qemu_command.c
c401cc
+++ b/src/qemu/qemu_command.c
c401cc
@@ -3620,9 +3620,7 @@ cleanup:
c401cc
 static int
c401cc
 qemuBuildDriveURIString(virConnectPtr conn,
c401cc
                         virDomainDiskDefPtr disk,
c401cc
-                        virBufferPtr opt,
c401cc
-                        int protocol,
c401cc
-                        virSecretUsageType secretUsageType)
c401cc
+                        virBufferPtr opt)
c401cc
 {
c401cc
     char *secret = NULL;
c401cc
     char *builturi = NULL;
c401cc
@@ -3630,20 +3628,22 @@ qemuBuildDriveURIString(virConnectPtr conn,
c401cc
 
c401cc
     virBufferAddLit(opt, "file=");
c401cc
 
c401cc
-    if (disk->auth.username && secretUsageType != VIR_SECRET_USAGE_TYPE_NONE) {
c401cc
+    if (disk->protocol == VIR_DOMAIN_DISK_PROTOCOL_ISCSI &&
c401cc
+        disk->auth.username) {
c401cc
         /* Get the secret string using the virDomainDiskDef */
c401cc
         if (!(secret = qemuGetSecretString(conn,
c401cc
-                                           virDomainDiskProtocolTypeToString(protocol),
c401cc
+                                           virDomainDiskProtocolTypeToString(disk->protocol),
c401cc
                                            false,
c401cc
                                            disk->auth.secretType,
c401cc
                                            disk->auth.username,
c401cc
                                            disk->auth.secret.uuid,
c401cc
                                            disk->auth.secret.usage,
c401cc
-                                           secretUsageType)))
c401cc
+                                           VIR_SECRET_USAGE_TYPE_ISCSI)))
c401cc
             goto cleanup;
c401cc
     }
c401cc
 
c401cc
-    if (!(builturi = qemuBuildNetworkDriveURI(protocol,
c401cc
+
c401cc
+    if (!(builturi = qemuBuildNetworkDriveURI(disk->protocol,
c401cc
                                               disk->src,
c401cc
                                               disk->nhosts,
c401cc
                                               disk->hosts,
c401cc
@@ -3652,6 +3652,7 @@ qemuBuildDriveURIString(virConnectPtr conn,
c401cc
         goto cleanup;
c401cc
 
c401cc
     virBufferEscape(opt, ',', ",", "%s", builturi);
c401cc
+    virBufferAddChar(opt, ',');
c401cc
 
c401cc
     ret = 0;
c401cc
 
c401cc
@@ -3681,9 +3682,7 @@ qemuBuildNBDString(virConnectPtr conn, virDomainDiskDefPtr disk, virBufferPtr op
c401cc
             && !disk->hosts->name)
c401cc
         || (disk->hosts->transport == VIR_DOMAIN_DISK_PROTO_TRANS_UNIX
c401cc
             && disk->hosts->socket && disk->hosts->socket[0] != '/'))
c401cc
-        return qemuBuildDriveURIString(conn, disk, opt,
c401cc
-                                       VIR_DOMAIN_DISK_PROTOCOL_NBD,
c401cc
-                                       VIR_SECRET_USAGE_TYPE_NONE);
c401cc
+        return qemuBuildDriveURIString(conn, disk, opt);
c401cc
 
c401cc
     virBufferAddLit(opt, "file=nbd:");
c401cc
 
c401cc
@@ -3713,6 +3712,8 @@ qemuBuildNBDString(virConnectPtr conn, virDomainDiskDefPtr disk, virBufferPtr op
c401cc
     if (disk->src)
c401cc
         virBufferEscape(opt, ',', ",", ":exportname=%s", disk->src);
c401cc
 
c401cc
+    virBufferAddChar(opt, ',');
c401cc
+
c401cc
     return 0;
c401cc
 }
c401cc
 
c401cc
@@ -3840,7 +3841,6 @@ qemuBuildDriveStr(virConnectPtr conn ATTRIBUTE_UNUSED,
c401cc
             case VIR_DOMAIN_DISK_PROTOCOL_NBD:
c401cc
                 if (qemuBuildNBDString(conn, disk, &opt) < 0)
c401cc
                     goto error;
c401cc
-                virBufferAddChar(&opt, ',');
c401cc
                 break;
c401cc
             case VIR_DOMAIN_DISK_PROTOCOL_RBD:
c401cc
                 virBufferAddLit(&opt, "file=");
c401cc
@@ -3848,19 +3848,11 @@ qemuBuildDriveStr(virConnectPtr conn ATTRIBUTE_UNUSED,
c401cc
                     goto error;
c401cc
                 virBufferAddChar(&opt, ',');
c401cc
                 break;
c401cc
+
c401cc
             case VIR_DOMAIN_DISK_PROTOCOL_GLUSTER:
c401cc
-                if (qemuBuildDriveURIString(conn, disk, &opt,
c401cc
-                                            VIR_DOMAIN_DISK_PROTOCOL_GLUSTER,
c401cc
-                                            VIR_SECRET_USAGE_TYPE_NONE) < 0)
c401cc
-                    goto error;
c401cc
-                virBufferAddChar(&opt, ',');
c401cc
-                break;
c401cc
             case VIR_DOMAIN_DISK_PROTOCOL_ISCSI:
c401cc
-                if (qemuBuildDriveURIString(conn, disk, &opt,
c401cc
-                                            VIR_DOMAIN_DISK_PROTOCOL_ISCSI,
c401cc
-                                            VIR_SECRET_USAGE_TYPE_ISCSI) < 0)
c401cc
+                if (qemuBuildDriveURIString(conn, disk, &opt) < 0)
c401cc
                     goto error;
c401cc
-                virBufferAddChar(&opt, ',');
c401cc
                 break;
c401cc
 
c401cc
             case VIR_DOMAIN_DISK_PROTOCOL_SHEEPDOG:
c401cc
-- 
c401cc
1.9.0
c401cc