提交 db5b47fd 编写于 作者: J John Ferlan

qemu: Use qemuDomainSecretInfoPtr in qemuBuildNetworkDriveURI

Rather than take username and password as parameters, now take
a qemuDomainSecretInfoPtr and decode within the function.

NB: Having secinfo implies having the username for a plain type
    from a successful virSecretGetSecretString
Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
上级 d0816650
...@@ -610,8 +610,7 @@ qemuNetworkDriveGetPort(int protocol, ...@@ -610,8 +610,7 @@ qemuNetworkDriveGetPort(int protocol,
static char * static char *
qemuBuildNetworkDriveURI(virStorageSourcePtr src, qemuBuildNetworkDriveURI(virStorageSourcePtr src,
const char *username, qemuDomainSecretInfoPtr secinfo)
const char *secret)
{ {
char *ret = NULL; char *ret = NULL;
virBuffer buf = VIR_BUFFER_INITIALIZER; virBuffer buf = VIR_BUFFER_INITIALIZER;
...@@ -722,12 +721,14 @@ qemuBuildNetworkDriveURI(virStorageSourcePtr src, ...@@ -722,12 +721,14 @@ qemuBuildNetworkDriveURI(virStorageSourcePtr src,
virAsprintf(&uri->query, "socket=%s", src->hosts->socket) < 0) virAsprintf(&uri->query, "socket=%s", src->hosts->socket) < 0)
goto cleanup; goto cleanup;
if (username) { if (secinfo) {
if (secret) { if (secinfo->s.plain.secret) {
if (virAsprintf(&uri->user, "%s:%s", username, secret) < 0) if (virAsprintf(&uri->user, "%s:%s",
secinfo->s.plain.username,
secinfo->s.plain.secret) < 0)
goto cleanup; goto cleanup;
} else { } else {
if (VIR_STRDUP(uri->user, username) < 0) if (VIR_STRDUP(uri->user, secinfo->s.plain.username) < 0)
goto cleanup; goto cleanup;
} }
} }
...@@ -776,11 +777,12 @@ qemuBuildNetworkDriveURI(virStorageSourcePtr src, ...@@ -776,11 +777,12 @@ qemuBuildNetworkDriveURI(virStorageSourcePtr src,
if (src->snapshot) if (src->snapshot)
virBufferEscape(&buf, '\\', ":", "@%s", src->snapshot); virBufferEscape(&buf, '\\', ":", "@%s", src->snapshot);
if (username) { if (secinfo) {
virBufferEscape(&buf, '\\', ":", ":id=%s", username); virBufferEscape(&buf, '\\', ":", ":id=%s",
secinfo->s.plain.username);
virBufferEscape(&buf, '\\', ":", virBufferEscape(&buf, '\\', ":",
":key=%s:auth_supported=cephx\\;none", ":key=%s:auth_supported=cephx\\;none",
secret); secinfo->s.plain.secret);
} else { } else {
virBufferAddLit(&buf, ":auth_supported=none"); virBufferAddLit(&buf, ":auth_supported=none");
} }
...@@ -835,8 +837,6 @@ qemuGetDriveSourceString(virStorageSourcePtr src, ...@@ -835,8 +837,6 @@ qemuGetDriveSourceString(virStorageSourcePtr src,
char **source) char **source)
{ {
int actualType = virStorageSourceGetActualType(src); int actualType = virStorageSourceGetActualType(src);
char *secret = NULL;
char *username = NULL;
int ret = -1; int ret = -1;
*source = NULL; *source = NULL;
...@@ -855,12 +855,7 @@ qemuGetDriveSourceString(virStorageSourcePtr src, ...@@ -855,12 +855,7 @@ qemuGetDriveSourceString(virStorageSourcePtr src,
break; break;
case VIR_STORAGE_TYPE_NETWORK: case VIR_STORAGE_TYPE_NETWORK:
if (secinfo) { if (!(*source = qemuBuildNetworkDriveURI(src, secinfo)))
username = secinfo->s.plain.username;
secret = secinfo->s.plain.secret;
}
if (!(*source = qemuBuildNetworkDriveURI(src, username, secret)))
goto cleanup; goto cleanup;
break; break;
...@@ -4464,8 +4459,6 @@ static char * ...@@ -4464,8 +4459,6 @@ static char *
qemuBuildSCSIiSCSIHostdevDrvStr(virDomainHostdevDefPtr dev) qemuBuildSCSIiSCSIHostdevDrvStr(virDomainHostdevDefPtr dev)
{ {
char *source = NULL; char *source = NULL;
char *secret = NULL;
char *username = NULL;
virStorageSource src; virStorageSource src;
qemuDomainHostdevPrivatePtr hostdevPriv = QEMU_DOMAIN_HOSTDEV_PRIVATE(dev); qemuDomainHostdevPrivatePtr hostdevPriv = QEMU_DOMAIN_HOSTDEV_PRIVATE(dev);
...@@ -4474,20 +4467,13 @@ qemuBuildSCSIiSCSIHostdevDrvStr(virDomainHostdevDefPtr dev) ...@@ -4474,20 +4467,13 @@ qemuBuildSCSIiSCSIHostdevDrvStr(virDomainHostdevDefPtr dev)
virDomainHostdevSubsysSCSIPtr scsisrc = &dev->source.subsys.u.scsi; virDomainHostdevSubsysSCSIPtr scsisrc = &dev->source.subsys.u.scsi;
virDomainHostdevSubsysSCSIiSCSIPtr iscsisrc = &scsisrc->u.iscsi; virDomainHostdevSubsysSCSIiSCSIPtr iscsisrc = &scsisrc->u.iscsi;
if (hostdevPriv->secinfo) {
qemuDomainSecretInfoPtr secinfo = hostdevPriv->secinfo;
username = secinfo->s.plain.username;
secret = secinfo->s.plain.secret;
}
src.protocol = VIR_STORAGE_NET_PROTOCOL_ISCSI; src.protocol = VIR_STORAGE_NET_PROTOCOL_ISCSI;
src.path = iscsisrc->path; src.path = iscsisrc->path;
src.hosts = iscsisrc->hosts; src.hosts = iscsisrc->hosts;
src.nhosts = iscsisrc->nhosts; src.nhosts = iscsisrc->nhosts;
/* Rather than pull what we think we want - use the network disk code */ /* Rather than pull what we think we want - use the network disk code */
source = qemuBuildNetworkDriveURI(&src, username, secret); source = qemuBuildNetworkDriveURI(&src, hostdevPriv->secinfo);
return source; return source;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册