]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Handle hotplug and commandline for secret objects for http cookies
authorPeter Krempa <pkrempa@redhat.com>
Mon, 9 Mar 2020 08:14:07 +0000 (09:14 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 16 Mar 2020 14:51:44 +0000 (15:51 +0100)
Implement both commandline support and hotplug by adding the http cookie
handling to 'qemuBlockStorageSourceAttachData' handling functions for
it.

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

index 6bfd46a489a37771a33537f431d1a4f396c3e937..aba0f31f9486ad82afef7791528725ba94d0612a 100644 (file)
@@ -1499,11 +1499,13 @@ qemuBlockStorageSourceAttachDataFree(qemuBlockStorageSourceAttachDataPtr data)
     virJSONValueFree(data->formatProps);
     virJSONValueFree(data->prmgrProps);
     virJSONValueFree(data->authsecretProps);
+    virJSONValueFree(data->httpcookiesecretProps);
     virJSONValueFree(data->encryptsecretProps);
     virJSONValueFree(data->tlsProps);
     VIR_FREE(data->tlsAlias);
     VIR_FREE(data->authsecretAlias);
     VIR_FREE(data->encryptsecretAlias);
+    VIR_FREE(data->httpcookiesecretAlias);
     VIR_FREE(data->driveCmd);
     VIR_FREE(data->driveAlias);
     VIR_FREE(data);
@@ -1570,6 +1572,11 @@ qemuBlockStorageSourceAttachApplyStorageDeps(qemuMonitorPtr mon,
                              &data->authsecretAlias) < 0)
         return -1;
 
+    if (data->httpcookiesecretProps &&
+        qemuMonitorAddObject(mon, &data->httpcookiesecretProps,
+                             &data->httpcookiesecretAlias) < 0)
+        return -1;
+
     if (data->tlsProps &&
         qemuMonitorAddObject(mon, &data->tlsProps, &data->tlsAlias) < 0)
         return -1;
@@ -1713,6 +1720,9 @@ qemuBlockStorageSourceAttachRollback(qemuMonitorPtr mon,
     if (data->encryptsecretAlias)
         ignore_value(qemuMonitorDelObject(mon, data->encryptsecretAlias));
 
+    if (data->httpcookiesecretAlias)
+        ignore_value(qemuMonitorDelObject(mon, data->httpcookiesecretAlias));
+
     if (data->tlsAlias)
         ignore_value(qemuMonitorDelObject(mon, data->tlsAlias));
 
@@ -1768,6 +1778,9 @@ qemuBlockStorageSourceDetachPrepare(virStorageSourcePtr src,
 
         if (srcpriv->encinfo && srcpriv->encinfo->type == VIR_DOMAIN_SECRET_INFO_TYPE_AES)
             data->encryptsecretAlias = g_strdup(srcpriv->encinfo->s.aes.alias);
+
+        if (srcpriv->httpcookie)
+            data->httpcookiesecretAlias = g_strdup(srcpriv->httpcookie->s.aes.alias);
     }
 
     return g_steal_pointer(&data);
index eab0128d5d92f1d95fbf0fbef77d2049b0c357c1..197f5dae974efdd99bbb4271290ac2e840b1f97c 100644 (file)
@@ -100,6 +100,9 @@ struct qemuBlockStorageSourceAttachData {
     virJSONValuePtr encryptsecretProps;
     char *encryptsecretAlias;
 
+    virJSONValuePtr httpcookiesecretProps;
+    char *httpcookiesecretAlias;
+
     virJSONValuePtr tlsProps;
     char *tlsAlias;
 };
index 9e0334a3e77b51d9a23a056bffe0b4aef97bb774..9790c92cf8fdfbfcc39901bb460189d83215ba99 100644 (file)
@@ -2398,6 +2398,7 @@ qemuBuildBlockStorageSourceAttachDataCommandline(virCommandPtr cmd,
     if (qemuBuildObjectCommandline(cmd, data->prmgrProps) < 0 ||
         qemuBuildObjectCommandline(cmd, data->authsecretProps) < 0 ||
         qemuBuildObjectCommandline(cmd, data->encryptsecretProps) < 0 ||
+        qemuBuildObjectCommandline(cmd, data->httpcookiesecretProps) < 0 ||
         qemuBuildObjectCommandline(cmd, data->tlsProps) < 0)
         return -1;
 
@@ -10333,6 +10334,10 @@ qemuBuildStorageSourceAttachPrepareCommon(virStorageSourcePtr src,
         if (srcpriv->encinfo &&
             qemuBuildSecretInfoProps(srcpriv->encinfo, &data->encryptsecretProps) < 0)
             return -1;
+
+        if (srcpriv->httpcookie &&
+            qemuBuildSecretInfoProps(srcpriv->httpcookie, &data->httpcookiesecretProps) < 0)
+            return -1;
     }
 
     if (src->haveTLS == VIR_TRISTATE_BOOL_YES &&