]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Split out initialization of secrets for 'iscsi' hostdevs
authorPeter Krempa <pkrempa@redhat.com>
Mon, 9 Mar 2020 06:31:53 +0000 (07:31 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 16 Mar 2020 14:51:44 +0000 (15:51 +0100)
Currently we don't have infrastructure to remember the secret aliases
for hostdevs. Since an upcoming patch is going to change aliases for
the disks, initialize the iscsi hostdevs separately so that we can keep
the alias. At the same time let's use qemuAliasForSecret instead of
qemuDomainGetSecretAESAlias when unplugging the iscsi hostdev.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_domain.c
src/qemu/qemu_hotplug.c

index 71ed809e4bc21be1e0642801efc01452e21ee6eb..6077e53288a4228b008591f77840d7f1fd867c04 100644 (file)
@@ -1840,8 +1840,29 @@ qemuDomainSecretHostdevPrepare(qemuDomainObjPrivatePtr priv,
 
         if (scsisrc->protocol == VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI &&
             src->auth) {
-            if (qemuDomainSecretStorageSourcePrepare(priv, src,
-                                                     hostdev->info->alias, NULL) < 0)
+            bool iscsiHasPS = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_ISCSI_PASSWORD_SECRET);
+            virSecretUsageType usageType = VIR_SECRET_USAGE_TYPE_ISCSI;
+            qemuDomainStorageSourcePrivatePtr srcPriv;
+
+            if (!(src->privateData = qemuDomainStorageSourcePrivateNew()))
+                return -1;
+
+            srcPriv = QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(src);
+
+            if (!qemuDomainSupportsEncryptedSecret(priv) || !iscsiHasPS) {
+                srcPriv->secinfo = qemuDomainSecretInfoNewPlain(usageType,
+                                                                src->auth->username,
+                                                                &src->auth->seclookupdef);
+            } else {
+                srcPriv->secinfo = qemuDomainSecretAESSetupFromSecret(priv,
+                                                                      hostdev->info->alias,
+                                                                      usageType,
+                                                                      src->auth->username,
+                                                                      &src->auth->seclookupdef,
+                                                                      false);
+            }
+
+            if (!srcPriv->secinfo)
                 return -1;
         }
     }
index ca18bb9e5fe00082de936940ff24793b87fd62d4..e804053933fc6d4b386434324344b6e11a77b43e 100644 (file)
@@ -4471,7 +4471,7 @@ qemuDomainRemoveHostDevice(virQEMUDriverPtr driver,
         if (scsisrc->protocol == VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI &&
             virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_ISCSI_PASSWORD_SECRET) &&
             qemuDomainStorageSourceHasAuth(iscsisrc->src)) {
-            if (!(objAlias = qemuDomainGetSecretAESAlias(hostdev->info->alias, false)))
+            if (!(objAlias = qemuAliasForSecret(hostdev->info->alias, NULL)))
                 return -1;
         }