/* qemuAliasForSecret:
* @parentalias: alias of the parent object
* @obj: optional sub-object of the parent device the secret is for
+ * @secret_idx: secret index number (0 in the case of a single secret)
*
* Generate alias for a secret object used by @parentalias device or one of
* the dependencies of the device described by @obj.
*/
char *
qemuAliasForSecret(const char *parentalias,
- const char *obj)
+ const char *obj,
+ size_t secret_idx)
{
if (obj)
- return g_strdup_printf("%s-%s-secret0", parentalias, obj);
- return g_strdup_printf("%s-secret0", parentalias);
+ return g_strdup_printf("%s-%s-secret%lu", parentalias, obj, secret_idx);
+ return g_strdup_printf("%s-secret%lu", parentalias, secret_idx);
}
/* qemuAliasTLSObjFromSrcAlias
* @priv: pointer to domain private object
* @srcalias: Alias of the disk/hostdev used to generate the secret alias
* @secretuse: specific usage for the secret (may be NULL if main object is using it)
+ * @secret_idx: secret index number (0 in the case of a single secret)
* @usageType: The virSecretUsageType
* @username: username to use for authentication (may be NULL)
* @seclookupdef: Pointer to seclookupdef data
qemuDomainSecretInfoSetupFromSecret(qemuDomainObjPrivate *priv,
const char *srcalias,
const char *secretuse,
+ size_t secret_idx,
virSecretUsageType usageType,
const char *username,
virSecretLookupTypeDef *seclookupdef)
{
qemuDomainSecretInfo *secinfo;
- g_autofree char *alias = qemuAliasForSecret(srcalias, secretuse);
+ g_autofree char *alias = qemuAliasForSecret(srcalias, secretuse, secret_idx);
g_autofree uint8_t *secret = NULL;
size_t secretlen = 0;
VIR_IDENTITY_AUTORESTORE virIdentity *oldident = virIdentityElevateCurrent();
}
seclookupdef.type = VIR_SECRET_LOOKUP_TYPE_UUID;
- return qemuDomainSecretInfoSetupFromSecret(priv, srcAlias, NULL,
+ return qemuDomainSecretInfoSetupFromSecret(priv, srcAlias, NULL, 0,
VIR_SECRET_USAGE_TYPE_TLS,
NULL, &seclookupdef);
}
virStorageSource *src,
const char *aliasprotocol)
{
- g_autofree char *secretalias = qemuAliasForSecret(aliasprotocol, "httpcookie");
+ g_autofree char *secretalias = qemuAliasForSecret(aliasprotocol, "httpcookie", 0);
g_autofree char *cookies = qemuBlockStorageSourceGetCookieString(src);
return qemuDomainSecretInfoSetup(priv, secretalias, NULL,
usageType = VIR_SECRET_USAGE_TYPE_CEPH;
if (!(srcPriv->secinfo = qemuDomainSecretInfoSetupFromSecret(priv, aliasprotocol,
- "auth",
+ "auth", 0,
usageType,
src->auth->username,
&src->auth->seclookupdef)))
if (hasEnc) {
if (!(srcPriv->encinfo = qemuDomainSecretInfoSetupFromSecret(priv, aliasformat,
- "encryption",
+ "encryption", 0,
VIR_SECRET_USAGE_TYPE_VOLUME,
NULL,
&src->encryption->secrets[0]->seclookupdef)))
if (!(srcPriv->secinfo = qemuDomainSecretInfoSetupFromSecret(priv,
backendalias,
- NULL,
+ NULL, 0,
usageType,
src->auth->username,
&src->auth->seclookupdef)))