From afd67eb793ebd23b66acfcc96240c9fc20c8024c Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Fri, 4 Mar 2022 13:56:02 +0100 Subject: [PATCH] virDomainDiskDefFormat: Refactor to virXMLFormatElement MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- src/conf/domain_conf.c | 79 ++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 41 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 34fec887a3..69f61aadc1 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -23568,6 +23568,8 @@ virDomainDiskDefFormat(virBuffer *buf, const char *device = virDomainDiskDeviceTypeToString(def->device); const char *bus = virDomainDiskBusTypeToString(def->bus); const char *sgio = virDomainDeviceSGIOTypeToString(def->sgio); + g_auto(virBuffer) attrBuf = VIR_BUFFER_INITIALIZER; + g_auto(virBuffer) childBuf = VIR_BUFFER_INIT_CHILD(buf); if (!type || !def->src->type) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -23590,39 +23592,35 @@ virDomainDiskDefFormat(virBuffer *buf, return -1; } - virBufferAsprintf(buf, - "model) { - virBufferAsprintf(buf, " model='%s'", + virBufferAsprintf(&attrBuf, " model='%s'", virDomainDiskModelTypeToString(def->model)); } if (def->rawio) { - virBufferAsprintf(buf, " rawio='%s'", + virBufferAsprintf(&attrBuf, " rawio='%s'", virTristateBoolTypeToString(def->rawio)); } if (def->sgio) - virBufferAsprintf(buf, " sgio='%s'", sgio); + virBufferAsprintf(&attrBuf, " sgio='%s'", sgio); if (def->snapshot && !(def->snapshot == VIR_DOMAIN_SNAPSHOT_LOCATION_NONE && def->src->readonly)) - virBufferAsprintf(buf, " snapshot='%s'", + virBufferAsprintf(&attrBuf, " snapshot='%s'", virDomainSnapshotLocationTypeToString(def->snapshot)); - virBufferAddLit(buf, ">\n"); - virBufferAdjustIndent(buf, 2); - virDomainDiskDefFormatDriver(buf, def); + virDomainDiskDefFormatDriver(&childBuf, def); /* Format as child of if defined there; otherwise, * if defined as child of , then format later */ if (def->src->auth && def->diskElementAuth) - virStorageAuthDefFormat(buf, def->src->auth); + virStorageAuthDefFormat(&childBuf, def->src->auth); - if (virDomainDiskSourceFormat(buf, def->src, "source", def->startupPolicy, + if (virDomainDiskSourceFormat(&childBuf, def->src, "source", def->startupPolicy, true, flags, def->diskElementAuth, def->diskElementEnc, xmlopt) < 0) @@ -23630,75 +23628,74 @@ virDomainDiskDefFormat(virBuffer *buf, /* Don't format backingStore to inactive XMLs until the code for * persistent storage of backing chains is ready. */ - if (virDomainDiskBackingStoreFormat(buf, def->src, xmlopt, flags) < 0) + if (virDomainDiskBackingStoreFormat(&childBuf, def->src, xmlopt, flags) < 0) return -1; - virBufferEscapeString(buf, "\n", def->domain_name); + virBufferEscapeString(&childBuf, "\n", def->domain_name); - virDomainDiskGeometryDefFormat(buf, def); - virDomainDiskBlockIoDefFormat(buf, def); + virDomainDiskGeometryDefFormat(&childBuf, def); + virDomainDiskBlockIoDefFormat(&childBuf, def); - if (virDomainDiskDefFormatMirror(buf, def, flags, xmlopt) < 0) + if (virDomainDiskDefFormatMirror(&childBuf, def, flags, xmlopt) < 0) return -1; - virBufferAsprintf(buf, "dst, bus); if ((def->device == VIR_DOMAIN_DISK_DEVICE_FLOPPY || def->device == VIR_DOMAIN_DISK_DEVICE_CDROM) && def->tray_status != VIR_DOMAIN_DISK_TRAY_CLOSED) - virBufferAsprintf(buf, " tray='%s'", + virBufferAsprintf(&childBuf, " tray='%s'", virDomainDiskTrayTypeToString(def->tray_status)); if (def->bus == VIR_DOMAIN_DISK_BUS_USB && def->removable != VIR_TRISTATE_SWITCH_ABSENT) { - virBufferAsprintf(buf, " removable='%s'", + virBufferAsprintf(&childBuf, " removable='%s'", virTristateSwitchTypeToString(def->removable)); } if (def->rotation_rate) - virBufferAsprintf(buf, " rotation_rate='%u'", def->rotation_rate); - virBufferAddLit(buf, "/>\n"); + virBufferAsprintf(&childBuf, " rotation_rate='%u'", def->rotation_rate); + virBufferAddLit(&childBuf, "/>\n"); - virDomainDiskDefFormatIotune(buf, def); + virDomainDiskDefFormatIotune(&childBuf, def); if (def->src->readonly) - virBufferAddLit(buf, "\n"); + virBufferAddLit(&childBuf, "\n"); if (def->src->shared) - virBufferAddLit(buf, "\n"); + virBufferAddLit(&childBuf, "\n"); if (def->transient) { - virBufferAddLit(buf, "transientShareBacking == VIR_TRISTATE_BOOL_YES) - virBufferAddLit(buf, " shareBacking='yes'"); - virBufferAddLit(buf, "/>\n"); + virBufferAddLit(&childBuf, " shareBacking='yes'"); + virBufferAddLit(&childBuf, "/>\n"); } - virBufferEscapeString(buf, "%s\n", def->serial); - virBufferEscapeString(buf, "%s\n", def->wwn); - virBufferEscapeString(buf, "%s\n", def->vendor); - virBufferEscapeString(buf, "%s\n", def->product); + virBufferEscapeString(&childBuf, "%s\n", def->serial); + virBufferEscapeString(&childBuf, "%s\n", def->wwn); + virBufferEscapeString(&childBuf, "%s\n", def->vendor); + virBufferEscapeString(&childBuf, "%s\n", def->product); /* If originally found as a child of , then format thusly; * otherwise, will be formatted as child of */ if (def->src->encryption && def->diskElementEnc && - virStorageEncryptionFormat(buf, def->src->encryption) < 0) + virStorageEncryptionFormat(&childBuf, def->src->encryption) < 0) return -1; - virDomainDeviceInfoFormat(buf, &def->info, flags | VIR_DOMAIN_DEF_FORMAT_ALLOW_BOOT); + virDomainDeviceInfoFormat(&childBuf, &def->info, flags | VIR_DOMAIN_DEF_FORMAT_ALLOW_BOOT); - if (virDomainDiskDefFormatPrivateData(buf, def, flags, xmlopt) < 0) + if (virDomainDiskDefFormatPrivateData(&childBuf, def, flags, xmlopt) < 0) return -1; /* format diskElementAuth and diskElementEnc into status XML to preserve * formatting */ if (flags & VIR_DOMAIN_DEF_FORMAT_STATUS) { - g_auto(virBuffer) attrBuf = VIR_BUFFER_INITIALIZER; + g_auto(virBuffer) secretPlacementAttrBuf = VIR_BUFFER_INITIALIZER; if (def->diskElementAuth) - virBufferAddLit(&attrBuf, " auth='true'"); + virBufferAddLit(&secretPlacementAttrBuf, " auth='true'"); if (def->diskElementEnc) - virBufferAddLit(&attrBuf, " enc='true'"); + virBufferAddLit(&secretPlacementAttrBuf, " enc='true'"); - virXMLFormatElement(buf, "diskSecretsPlacement", &attrBuf, NULL); + virXMLFormatElement(&childBuf, "diskSecretsPlacement", &secretPlacementAttrBuf, NULL); } - virBufferAdjustIndent(buf, -2); - virBufferAddLit(buf, "\n"); + virXMLFormatElement(buf, "disk", &attrBuf, &childBuf); return 0; }