[PATCH 09/30] qemu: Split out initialization of secrets for 'iscsi' hostdevs

Peter Krempa posted 30 patches 5 years, 11 months ago
[PATCH 09/30] qemu: Split out initialization of secrets for 'iscsi' hostdevs
Posted by Peter Krempa 5 years, 11 months ago
Currently we don't have infrastructure to remember the secret aliases
for hostdevs. Since an upcomming 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>
---
 src/qemu/qemu_domain.c  | 25 +++++++++++++++++++++++--
 src/qemu/qemu_hotplug.c |  2 +-
 2 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 72e651ecee..c2218871a7 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -1835,8 +1835,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;
         }
     }
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index ca18bb9e5f..e804053933 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -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;
         }

-- 
2.24.1

Re: [PATCH 09/30] qemu: Split out initialization of secrets for 'iscsi' hostdevs
Posted by Ján Tomko 5 years, 11 months ago
On a Monday in 2020, Peter Krempa wrote:
>Currently we don't have infrastructure to remember the secret aliases
>for hostdevs. Since an upcomming patch is going to change aliases for

upcoming

>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>
>---
> src/qemu/qemu_domain.c  | 25 +++++++++++++++++++++++--
> src/qemu/qemu_hotplug.c |  2 +-
> 2 files changed, 24 insertions(+), 3 deletions(-)
>

Reviewed-by: Ján Tomko <jtomko@redhat.com>

Jano