From 61c8164502d756c0369ab7788dd67d528e66e951 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Thu, 19 Nov 2020 13:05:05 +0100 Subject: [PATCH] virsh: cmdAttachDisk: Use virXMLFormatElement Convert the code to the new XML formatting approach for simpler code and future additions. Signed-off-by: Peter Krempa Reviewed-by: Daniel Henrique Barboza --- tools/virsh-domain.c | 61 ++++++++++++++++++-------------------------- 1 file changed, 25 insertions(+), 36 deletions(-) diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index 5c7cb994f1..b0e1c6e6f7 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -558,6 +558,10 @@ cmdAttachDisk(vshControl *ctl, const vshCmd *cmd) const char *stype = NULL; int type = VIR_STORAGE_TYPE_NONE; g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER; + g_auto(virBuffer) diskAttrBuf = VIR_BUFFER_INITIALIZER; + g_auto(virBuffer) diskChildBuf = VIR_BUFFER_INIT_CHILD(&buf); + g_auto(virBuffer) driverAttrBuf = VIR_BUFFER_INITIALIZER; + g_auto(virBuffer) sourceAttrBuf = VIR_BUFFER_INITIALIZER; g_autofree char *xml = NULL; struct stat st; bool current = vshCommandOptBool(cmd, "current"); @@ -622,71 +626,56 @@ cmdAttachDisk(vshControl *ctl, const vshCmd *cmd) if (wwn && !virValidateWWN(wwn)) return false; - /* Make XML of disk */ - virBufferAddLit(&buf, "\n"); - virBufferAdjustIndent(&buf, 2); - - if (driver || subdriver || iothread || cache || io) { - virBufferAddLit(&buf, "\n"); - } + virXMLFormatElement(&diskChildBuf, "driver", &driverAttrBuf, NULL); switch ((enum virshAttachDiskSourceType) type) { case VIRSH_ATTACH_DISK_SOURCE_TYPE_FILE: - virBufferEscapeString(&buf, "\n", source); + virBufferEscapeString(&sourceAttrBuf, " file='%s'", source); break; case VIRSH_ATTACH_DISK_SOURCE_TYPE_BLOCK: - virBufferEscapeString(&buf, "\n", source); + virBufferEscapeString(&sourceAttrBuf, " dev='%s'", source); break; case VIRSH_ATTACH_DISK_SOURCE_TYPE_NONE: case VIRSH_ATTACH_DISK_SOURCE_TYPE_LAST: break; } + virXMLFormatElement(&diskChildBuf, "source", &sourceAttrBuf, NULL); - virBufferAsprintf(&buf, "\n"); + virBufferAsprintf(&diskChildBuf, " bus='%s'", targetbus); + virBufferAddLit(&diskChildBuf, "/>\n"); if (mode) - virBufferAsprintf(&buf, "<%s/>\n", mode); + virBufferAsprintf(&diskChildBuf, "<%s/>\n", mode); if (serial) - virBufferAsprintf(&buf, "%s\n", serial); + virBufferAsprintf(&diskChildBuf, "%s\n", serial); if (alias) - virBufferAsprintf(&buf, "\n", alias); + virBufferAsprintf(&diskChildBuf, "\n", alias); if (wwn) - virBufferAsprintf(&buf, "%s\n", wwn); + virBufferAsprintf(&diskChildBuf, "%s\n", wwn); if (straddr && - cmdAttachDiskFormatAddress(ctl, &buf, straddr, target, multifunction) < 0) + cmdAttachDiskFormatAddress(ctl, &diskChildBuf, straddr, target, multifunction) < 0) return false; - virBufferAdjustIndent(&buf, -2); - virBufferAddLit(&buf, "\n"); + virXMLFormatElement(&buf, "disk", &diskAttrBuf, &diskChildBuf); xml = virBufferContentAndReset(&buf); -- 2.47.2