mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-20 06:50:22 +03:00
qemu: hotplug: Refactor 'secret' props formatting to qemuMonitorCreateObjectProps
Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
9374c6e0a1
commit
c2f71bb295
@ -511,18 +511,14 @@ qemuBuildSecretInfoProps(qemuDomainSecretInfoPtr secinfo,
|
||||
if (!(keyid = qemuDomainGetMasterKeyAlias()))
|
||||
return -1;
|
||||
|
||||
if (virJSONValueObjectCreate(propsret,
|
||||
"s:data", secinfo->s.aes.ciphertext,
|
||||
"s:keyid", keyid,
|
||||
"s:iv", secinfo->s.aes.iv,
|
||||
"s:format", "base64", NULL) < 0)
|
||||
goto cleanup;
|
||||
ret = qemuMonitorCreateObjectProps(propsret,
|
||||
"secret", secinfo->s.aes.alias,
|
||||
"s:data", secinfo->s.aes.ciphertext,
|
||||
"s:keyid", keyid,
|
||||
"s:iv", secinfo->s.aes.iv,
|
||||
"s:format", "base64", NULL);
|
||||
|
||||
ret = 0;
|
||||
|
||||
cleanup:
|
||||
VIR_FREE(keyid);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -543,25 +539,24 @@ static int
|
||||
qemuBuildObjectSecretCommandLine(virCommandPtr cmd,
|
||||
qemuDomainSecretInfoPtr secinfo)
|
||||
{
|
||||
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
||||
int ret = -1;
|
||||
virJSONValuePtr props = NULL;
|
||||
char *tmp = NULL;
|
||||
|
||||
if (qemuBuildSecretInfoProps(secinfo, &props) < 0)
|
||||
return -1;
|
||||
|
||||
if (!(tmp = virQEMUBuildObjectCommandlineFromJSONType("secret",
|
||||
secinfo->s.aes.alias,
|
||||
props)))
|
||||
if (virQEMUBuildObjectCommandlineFromJSON(&buf, props) < 0)
|
||||
goto cleanup;
|
||||
|
||||
virCommandAddArgList(cmd, "-object", tmp, NULL);
|
||||
ret = 0;
|
||||
virCommandAddArg(cmd, "-object");
|
||||
virCommandAddArgBuffer(cmd, &buf);
|
||||
|
||||
ret = 0;
|
||||
|
||||
cleanup:
|
||||
virBufferFreeAndReset(&buf);
|
||||
virJSONValueFree(props);
|
||||
VIR_FREE(tmp);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -171,7 +171,7 @@ qemuDomainAddDiskSrcTLSObject(virQEMUDriverPtr driver,
|
||||
goto cleanup;
|
||||
|
||||
if (qemuDomainAddTLSObjects(driver, vm, QEMU_ASYNC_JOB_NONE,
|
||||
NULL, NULL, &tlsProps) < 0)
|
||||
NULL, &tlsProps) < 0)
|
||||
goto cleanup;
|
||||
|
||||
ret = 0;
|
||||
@ -423,9 +423,9 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver,
|
||||
char *drivestr = NULL;
|
||||
char *drivealias = NULL;
|
||||
char *prmgrAlias = NULL;
|
||||
char *encobjAlias = NULL;
|
||||
char *secobjAlias = NULL;
|
||||
bool driveAdded = false;
|
||||
bool secobjAdded = false;
|
||||
bool encobjAdded = false;
|
||||
bool prdStarted = false;
|
||||
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
||||
virJSONValuePtr secobjProps = NULL;
|
||||
@ -487,23 +487,13 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver,
|
||||
|
||||
qemuDomainObjEnterMonitor(driver, vm);
|
||||
|
||||
if (secobjProps) {
|
||||
rv = qemuMonitorAddObjectType(priv->mon, "secret", secinfo->s.aes.alias,
|
||||
secobjProps);
|
||||
secobjProps = NULL; /* qemuMonitorAddObjectType consumes */
|
||||
if (rv < 0)
|
||||
goto exit_monitor;
|
||||
secobjAdded = true;
|
||||
}
|
||||
if (secobjProps &&
|
||||
qemuMonitorAddObject(priv->mon, &secobjProps, &secobjAlias) < 0)
|
||||
goto exit_monitor;
|
||||
|
||||
if (encobjProps) {
|
||||
rv = qemuMonitorAddObjectType(priv->mon, "secret", encinfo->s.aes.alias,
|
||||
encobjProps);
|
||||
encobjProps = NULL; /* qemuMonitorAddObjectType consumes */
|
||||
if (rv < 0)
|
||||
goto exit_monitor;
|
||||
encobjAdded = true;
|
||||
}
|
||||
if (encobjProps &&
|
||||
qemuMonitorAddObject(priv->mon, &encobjProps, &encobjAlias) < 0)
|
||||
goto exit_monitor;
|
||||
|
||||
if (prmgrProps &&
|
||||
qemuMonitorAddObject(priv->mon, &prmgrProps, &prmgrAlias) < 0)
|
||||
@ -532,6 +522,8 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver,
|
||||
virJSONValueFree(secobjProps);
|
||||
qemuDomainSecretDiskDestroy(disk);
|
||||
VIR_FREE(prmgrAlias);
|
||||
VIR_FREE(secobjAlias);
|
||||
VIR_FREE(encobjAlias);
|
||||
VIR_FREE(drivealias);
|
||||
VIR_FREE(drivestr);
|
||||
VIR_FREE(devstr);
|
||||
@ -544,10 +536,10 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver,
|
||||
VIR_WARN("Unable to remove drive %s (%s) after failed "
|
||||
"qemuMonitorAddDevice", drivealias, drivestr);
|
||||
}
|
||||
if (secobjAdded)
|
||||
ignore_value(qemuMonitorDelObject(priv->mon, secinfo->s.aes.alias));
|
||||
if (encobjAdded)
|
||||
ignore_value(qemuMonitorDelObject(priv->mon, encinfo->s.aes.alias));
|
||||
if (secobjAlias)
|
||||
ignore_value(qemuMonitorDelObject(priv->mon, secobjAlias));
|
||||
if (encobjAlias)
|
||||
ignore_value(qemuMonitorDelObject(priv->mon, encobjAlias));
|
||||
if (prmgrAlias)
|
||||
ignore_value(qemuMonitorDelObject(priv->mon, prmgrAlias));
|
||||
if (qemuDomainObjExitMonitor(driver, vm) < 0)
|
||||
@ -1445,32 +1437,29 @@ int
|
||||
qemuDomainAddTLSObjects(virQEMUDriverPtr driver,
|
||||
virDomainObjPtr vm,
|
||||
qemuDomainAsyncJob asyncJob,
|
||||
const char *secAlias,
|
||||
virJSONValuePtr *secProps,
|
||||
virJSONValuePtr *tlsProps)
|
||||
{
|
||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||
int rc;
|
||||
virErrorPtr orig_err;
|
||||
char *secAlias = NULL;
|
||||
|
||||
if (!tlsProps && !secAlias)
|
||||
if (!tlsProps && !secProps)
|
||||
return 0;
|
||||
|
||||
if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0)
|
||||
return -1;
|
||||
|
||||
if (secAlias) {
|
||||
rc = qemuMonitorAddObjectType(priv->mon, "secret",
|
||||
secAlias, *secProps);
|
||||
*secProps = NULL; /* qemuMonitorAddObjectType consumes */
|
||||
if (rc < 0)
|
||||
goto error;
|
||||
}
|
||||
if (secProps &&
|
||||
qemuMonitorAddObject(priv->mon, secProps, &secAlias) < 0)
|
||||
goto error;
|
||||
|
||||
if (tlsProps &&
|
||||
qemuMonitorAddObject(priv->mon, tlsProps, NULL) < 0)
|
||||
goto error;
|
||||
|
||||
VIR_FREE(secAlias);
|
||||
|
||||
return qemuDomainObjExitMonitor(driver, vm);
|
||||
|
||||
error:
|
||||
@ -1478,6 +1467,7 @@ qemuDomainAddTLSObjects(virQEMUDriverPtr driver,
|
||||
ignore_value(qemuDomainObjExitMonitor(driver, vm));
|
||||
virErrorRestore(&orig_err);
|
||||
qemuDomainDelTLSObjects(driver, vm, asyncJob, secAlias, NULL);
|
||||
VIR_FREE(secAlias);
|
||||
|
||||
return -1;
|
||||
}
|
||||
@ -1557,7 +1547,7 @@ qemuDomainAddChardevTLSObjects(virQEMUDriverPtr driver,
|
||||
dev->data.tcp.tlscreds = true;
|
||||
|
||||
if (qemuDomainAddTLSObjects(driver, vm, QEMU_ASYNC_JOB_NONE,
|
||||
*secAlias, &secProps, &tlsProps) < 0)
|
||||
&secProps, &tlsProps) < 0)
|
||||
goto cleanup;
|
||||
|
||||
ret = 0;
|
||||
@ -2305,18 +2295,17 @@ qemuDomainAttachHostSCSIDevice(virQEMUDriverPtr driver,
|
||||
virDomainHostdevDefPtr hostdev)
|
||||
{
|
||||
size_t i;
|
||||
int rv;
|
||||
int ret = -1;
|
||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||
virErrorPtr orig_err;
|
||||
char *devstr = NULL;
|
||||
char *drvstr = NULL;
|
||||
char *drivealias = NULL;
|
||||
char *secobjAlias = NULL;
|
||||
bool teardowncgroup = false;
|
||||
bool teardownlabel = false;
|
||||
bool teardowndevice = false;
|
||||
bool driveAdded = false;
|
||||
bool secobjAdded = false;
|
||||
virJSONValuePtr secobjProps = NULL;
|
||||
virDomainHostdevSubsysSCSIPtr scsisrc = &hostdev->source.subsys.u.scsi;
|
||||
qemuDomainSecretInfoPtr secinfo = NULL;
|
||||
@ -2385,14 +2374,9 @@ qemuDomainAttachHostSCSIDevice(virQEMUDriverPtr driver,
|
||||
|
||||
qemuDomainObjEnterMonitor(driver, vm);
|
||||
|
||||
if (secobjProps) {
|
||||
rv = qemuMonitorAddObjectType(priv->mon, "secret", secinfo->s.aes.alias,
|
||||
secobjProps);
|
||||
secobjProps = NULL; /* qemuMonitorAddObjectType consumes */
|
||||
if (rv < 0)
|
||||
goto exit_monitor;
|
||||
secobjAdded = true;
|
||||
}
|
||||
if (secobjProps &&
|
||||
qemuMonitorAddObject(priv->mon, &secobjProps, &secobjAlias) < 0)
|
||||
goto exit_monitor;
|
||||
|
||||
if (qemuMonitorAddDrive(priv->mon, drvstr) < 0)
|
||||
goto exit_monitor;
|
||||
@ -2424,6 +2408,7 @@ qemuDomainAttachHostSCSIDevice(virQEMUDriverPtr driver,
|
||||
}
|
||||
qemuDomainSecretHostdevDestroy(hostdev);
|
||||
virJSONValueFree(secobjProps);
|
||||
VIR_FREE(secobjAlias);
|
||||
VIR_FREE(drivealias);
|
||||
VIR_FREE(drvstr);
|
||||
VIR_FREE(devstr);
|
||||
@ -2436,8 +2421,8 @@ qemuDomainAttachHostSCSIDevice(virQEMUDriverPtr driver,
|
||||
"qemuMonitorAddDevice",
|
||||
drvstr, devstr);
|
||||
}
|
||||
if (secobjAdded)
|
||||
ignore_value(qemuMonitorDelObject(priv->mon, secinfo->s.aes.alias));
|
||||
if (secobjAlias)
|
||||
ignore_value(qemuMonitorDelObject(priv->mon, secobjAlias));
|
||||
ignore_value(qemuDomainObjExitMonitor(driver, vm));
|
||||
virErrorRestore(&orig_err);
|
||||
|
||||
|
@ -43,7 +43,6 @@ void qemuDomainDelTLSObjects(virQEMUDriverPtr driver,
|
||||
int qemuDomainAddTLSObjects(virQEMUDriverPtr driver,
|
||||
virDomainObjPtr vm,
|
||||
qemuDomainAsyncJob asyncJob,
|
||||
const char *secAlias,
|
||||
virJSONValuePtr *secProps,
|
||||
virJSONValuePtr *tlsProps);
|
||||
|
||||
|
@ -871,8 +871,7 @@ qemuMigrationParamsEnableTLS(virQEMUDriverPtr driver,
|
||||
* some other error path between now and perform . */
|
||||
qemuDomainDelTLSObjects(driver, vm, asyncJob, secAlias, *tlsAlias);
|
||||
|
||||
if (qemuDomainAddTLSObjects(driver, vm, asyncJob, secAlias, &secProps,
|
||||
&tlsProps) < 0)
|
||||
if (qemuDomainAddTLSObjects(driver, vm, asyncJob, &secProps, &tlsProps) < 0)
|
||||
goto error;
|
||||
|
||||
if (qemuMigrationParamsSetString(migParams,
|
||||
|
Loading…
x
Reference in New Issue
Block a user