}
-/* qemuDomainSecretDiskPrepare:
- * @conn: Pointer to connection
- * @priv: pointer to domain private object
- * @disk: Pointer to a disk definition
+/**
+ * qemuDomainSecretStorageSourcePrepare:
+ * @conn: connection object - for secret lookup
+ * @priv: domain private object
+ * @src: storage source struct to setup
+ * @authalias: prefix of the alias for secret holding authentication data
+ * @encalias: prefix of the alias for secret holding encryption password
*
- * For the right disk, generate the qemuDomainSecretInfo structure.
+ * Prepares data necessary for encryption and authentication of @src. The two
+ * alias prefixes are provided since in the backing chain authentication belongs
+ * to the storage protocol data whereas encryption is relevant to the format
+ * driver in qemu. The two will have different node names.
*
- * Returns 0 on success, -1 on failure
+ * Returns 0 on success; -1 on error while reporting an libvirt error.
*/
-int
-qemuDomainSecretDiskPrepare(virConnectPtr conn,
- qemuDomainObjPrivatePtr priv,
- virDomainDiskDefPtr disk)
+static int
+qemuDomainSecretStorageSourcePrepare(virConnectPtr conn,
+ qemuDomainObjPrivatePtr priv,
+ virStorageSourcePtr src,
+ const char *authalias,
+ const char *encalias)
{
- virStorageSourcePtr src = disk->src;
qemuDomainStorageSourcePrivatePtr srcPriv;
- if (!(disk->src->privateData = qemuDomainStorageSourcePrivateNew()))
+ if (!(src->privateData = qemuDomainStorageSourcePrivateNew()))
return -1;
- srcPriv = QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(disk->src);
+ srcPriv = QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(src);
if (qemuDomainSecretDiskCapable(src)) {
virSecretUsageType usageType = VIR_SECRET_USAGE_TYPE_ISCSI;
usageType = VIR_SECRET_USAGE_TYPE_CEPH;
if (!(srcPriv->secinfo =
- qemuDomainSecretInfoNew(conn, priv, disk->info.alias,
+ qemuDomainSecretInfoNew(conn, priv, authalias,
usageType, src->auth->username,
&src->auth->seclookupdef, false)))
return -1;
if (qemuDomainDiskHasEncryptionSecret(src)) {
if (!(srcPriv->encinfo =
- qemuDomainSecretInfoNew(conn, priv, disk->info.alias,
+ qemuDomainSecretInfoNew(conn, priv, encalias,
VIR_SECRET_USAGE_TYPE_VOLUME, NULL,
&src->encryption->secrets[0]->seclookupdef,
true)))
}
+/* qemuDomainSecretDiskPrepare:
+ * @conn: Pointer to connection
+ * @priv: pointer to domain private object
+ * @disk: Pointer to a disk definition
+ *
+ * For the right disk, generate the qemuDomainSecretInfo structure.
+ *
+ * Returns 0 on success, -1 on failure
+ */
+
+int
+qemuDomainSecretDiskPrepare(virConnectPtr conn,
+ qemuDomainObjPrivatePtr priv,
+ virDomainDiskDefPtr disk)
+{
+ return qemuDomainSecretStorageSourcePrepare(conn, priv, disk->src,
+ disk->info.alias,
+ disk->info.alias);
+}
+
+
/* qemuDomainSecretHostdevDestroy:
* @disk: Pointer to a hostdev definition
*