During qemuTranslateDiskSourcePool() execution, if the srcpool has been defined with authentication information, then for iSCSI pools copy the authentication and host information to virDomainDiskDef. --- src/qemu/qemu_conf.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index 6e6163f..3e7b78a 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -1186,6 +1186,58 @@ cleanup: return ret; } +static int +qemuTranslateDiskSourcePoolAuth(virDomainDiskDefPtr def, + virStoragePoolDefPtr pooldef) +{ + int ret = -1; + + /* Only necessary when authentication set */ + if (pooldef->source.authType == VIR_STORAGE_POOL_AUTH_NONE) { + ret = 0; + goto cleanup; + } + + /* Copy the authentication information from the storage pool + * into the virDomainDiskDef + */ + if (pooldef->source.authType == VIR_STORAGE_POOL_AUTH_CHAP) { + if (VIR_STRDUP(def->auth.username, + pooldef->source.auth.chap.username) < 0) + goto cleanup; + if (pooldef->source.auth.chap.secret.uuidUsable) { + def->auth.secretType = VIR_DOMAIN_DISK_SECRET_TYPE_UUID; + memcpy(def->auth.secret.uuid, + pooldef->source.auth.chap.secret.uuid, + VIR_UUID_BUFLEN); + } else { + if (VIR_STRDUP(def->auth.secret.usage, + pooldef->source.auth.chap.secret.usage) < 0) + goto cleanup; + def->auth.secretType = VIR_DOMAIN_DISK_SECRET_TYPE_USAGE; + } + } else if (pooldef->source.authType == VIR_STORAGE_POOL_AUTH_CEPHX) { + if (VIR_STRDUP(def->auth.username, + pooldef->source.auth.cephx.username) < 0) + goto cleanup; + if (pooldef->source.auth.cephx.secret.uuidUsable) { + def->auth.secretType = VIR_DOMAIN_DISK_SECRET_TYPE_UUID; + memcpy(def->auth.secret.uuid, + pooldef->source.auth.cephx.secret.uuid, + VIR_UUID_BUFLEN); + } else { + if (VIR_STRDUP(def->auth.secret.usage, + pooldef->source.auth.cephx.secret.usage) < 0) + goto cleanup; + def->auth.secretType = VIR_DOMAIN_DISK_SECRET_TYPE_USAGE; + } + } + ret = 0; + +cleanup: + return ret; +} + int qemuTranslateDiskSourcePool(virConnectPtr conn, virDomainDiskDefPtr def) @@ -1254,6 +1306,9 @@ qemuTranslateDiskSourcePool(virConnectPtr conn, if (!(def->src = virStorageVolGetPath(vol))) goto cleanup; } + + if (qemuTranslateDiskSourcePoolAuth(def, pooldef) < 0) + goto cleanup; } else { if (!(def->src = virStorageVolGetPath(vol))) goto cleanup; -- 1.8.1.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list