1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-20 06:50:22 +03:00

qemu: hotplug: Refactor PR props formatting to use qemuMonitorCreateObjectProps

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Peter Krempa 2018-05-18 14:48:22 +02:00
parent efd32528d0
commit e4a2bfe264
2 changed files with 17 additions and 32 deletions

View File

@ -9725,18 +9725,11 @@ int
qemuBuildPRManagerInfoProps(const virDomainDiskDef *disk,
virJSONValuePtr *propsret)
{
int ret = -1;
*propsret = NULL;
if (virJSONValueObjectCreate(propsret,
"s:path", disk->src->pr->path,
NULL) < 0)
goto cleanup;
ret = 0;
cleanup:
return ret;
return qemuMonitorCreateObjectProps(propsret,
"pr-manager-helper",
disk->src->pr->mgralias,
"s:path", disk->src->pr->path,
NULL);
}
@ -9744,10 +9737,10 @@ static int
qemuBuildMasterPRCommandLine(virCommandPtr cmd,
const virDomainDef *def)
{
virBuffer buf = VIR_BUFFER_INITIALIZER;
size_t i;
bool managedAdded = false;
virJSONValuePtr props = NULL;
char *tmp = NULL;
int ret = -1;
for (i = 0; i < def->ndisks; i++) {
@ -9766,19 +9759,16 @@ qemuBuildMasterPRCommandLine(virCommandPtr cmd,
if (qemuBuildPRManagerInfoProps(disk, &props) < 0)
goto cleanup;
if (!(tmp = virQEMUBuildObjectCommandlineFromJSONType("pr-manager-helper",
disk->src->pr->mgralias,
props)))
if (virQEMUBuildObjectCommandlineFromJSON(&buf, props) < 0)
goto cleanup;
virJSONValueFree(props);
props = NULL;
virCommandAddArgList(cmd, "-object", tmp, NULL);
VIR_FREE(tmp);
virCommandAddArg(cmd, "-object");
virCommandAddArgBuffer(cmd, &buf);
}
ret = 0;
cleanup:
virBufferFreeAndReset(&buf);
virJSONValueFree(props);
return ret;
}

View File

@ -421,10 +421,10 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver,
char *devstr = NULL;
char *drivestr = NULL;
char *drivealias = NULL;
char *prmgrAlias = NULL;
bool driveAdded = false;
bool secobjAdded = false;
bool encobjAdded = false;
bool prmgrAdded = false;
bool prdStarted = false;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
virJSONValuePtr secobjProps = NULL;
@ -504,15 +504,9 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver,
encobjAdded = true;
}
if (prmgrProps) {
rv = qemuMonitorAddObjectType(priv->mon, "pr-manager-helper",
disk->src->pr->mgralias,
prmgrProps);
prmgrProps = NULL; /* qemuMonitorAddObjectType consumes */
if (rv < 0)
goto exit_monitor;
prmgrAdded = true;
}
if (prmgrProps &&
qemuMonitorAddObject(priv->mon, &prmgrProps, &prmgrAlias) < 0)
goto exit_monitor;
if (qemuMonitorAddDrive(priv->mon, drivestr) < 0)
goto exit_monitor;
@ -536,6 +530,7 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver,
virJSONValueFree(encobjProps);
virJSONValueFree(secobjProps);
qemuDomainSecretDiskDestroy(disk);
VIR_FREE(prmgrAlias);
VIR_FREE(drivealias);
VIR_FREE(drivestr);
VIR_FREE(devstr);
@ -552,8 +547,8 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver,
ignore_value(qemuMonitorDelObject(priv->mon, secinfo->s.aes.alias));
if (encobjAdded)
ignore_value(qemuMonitorDelObject(priv->mon, encinfo->s.aes.alias));
if (prmgrAdded)
ignore_value(qemuMonitorDelObject(priv->mon, disk->src->pr->mgralias));
if (prmgrAlias)
ignore_value(qemuMonitorDelObject(priv->mon, prmgrAlias));
if (qemuDomainObjExitMonitor(driver, vm) < 0)
ret = -2;
virErrorRestore(&orig_err);