From e4d7ddfdd2220046b8ca9f5e2af3a5d45e962e44 Mon Sep 17 00:00:00 2001 From: Andrea Bolognani Date: Fri, 10 Apr 2015 15:09:59 +0200 Subject: [PATCH] conf: Don't output tag if it contains no information. The tag is already marked as optional in the schema, so no changes are needed there. RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1202606 --- src/conf/cpu_conf.c | 29 +++++++++++++------ .../qemuxml2argv-cpu-empty.xml | 23 +++++++++++++++ .../qemuxml2xmlout-cpu-empty.xml | 21 ++++++++++++++ tests/qemuxml2xmltest.c | 1 + 4 files changed, 65 insertions(+), 9 deletions(-) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-cpu-empty.xml create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-empty.xml diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c index cd3882df2c..e959ecca03 100644 --- a/src/conf/cpu_conf.c +++ b/src/conf/cpu_conf.c @@ -435,13 +435,14 @@ virCPUDefFormatBufFull(virBufferPtr buf, bool updateCPU) { int ret = -1; + virBuffer attributeBuf = VIR_BUFFER_INITIALIZER; virBuffer childrenBuf = VIR_BUFFER_INITIALIZER; int indent = virBufferGetIndent(buf, false); if (!def) return 0; - virBufferAddLit(buf, "type == VIR_CPU_TYPE_GUEST) { const char *tmp; @@ -451,7 +452,7 @@ virCPUDefFormatBufFull(virBufferPtr buf, _("Unexpected CPU mode %d"), def->mode); goto cleanup; } - virBufferAsprintf(buf, " mode='%s'", tmp); + virBufferAsprintf(&attributeBuf, " mode='%s'", tmp); } if (def->model && @@ -463,10 +464,11 @@ virCPUDefFormatBufFull(virBufferPtr buf, def->match); goto cleanup; } - virBufferAsprintf(buf, " match='%s'", tmp); + virBufferAsprintf(&attributeBuf, " match='%s'", tmp); } } + /* Format children */ virBufferAdjustIndent(&childrenBuf, indent + 2); if (def->arch) virBufferAsprintf(&childrenBuf, "%s\n", @@ -477,16 +479,25 @@ virCPUDefFormatBufFull(virBufferPtr buf, if (virDomainNumaDefCPUFormat(&childrenBuf, numa) < 0) goto cleanup; - if (virBufferUse(&childrenBuf)) { - virBufferAddLit(buf, ">\n"); - virBufferAddBuffer(buf, &childrenBuf); - virBufferAddLit(buf, "\n"); - } else { - virBufferAddLit(buf, "/>\n"); + /* Put it all together */ + if (virBufferUse(&attributeBuf) || virBufferUse(&childrenBuf)) { + virBufferAddLit(buf, "\n"); + virBufferAddBuffer(buf, &childrenBuf); + virBufferAddLit(buf, "\n"); + } else { + virBufferAddLit(buf, "/>\n"); + } } ret = 0; cleanup: + virBufferFreeAndReset(&attributeBuf); virBufferFreeAndReset(&childrenBuf); return ret; } diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-empty.xml b/tests/qemuxml2argvdata/qemuxml2argv-cpu-empty.xml new file mode 100644 index 0000000000..2a79826b3a --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-cpu-empty.xml @@ -0,0 +1,23 @@ + + cpu-empty + 1aed4c39-ad6e-4a78-9264-4ce996290d17 + 4000768 + 1048576 + 1 + + hvm + + + + + + destroy + restart + destroy + + /usr/bin/qemu-kvm + + + + + diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-empty.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-empty.xml new file mode 100644 index 0000000000..e678607183 --- /dev/null +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-empty.xml @@ -0,0 +1,21 @@ + + cpu-empty + 1aed4c39-ad6e-4a78-9264-4ce996290d17 + 4000768 + 1048576 + 1 + + hvm + + + + destroy + restart + destroy + + /usr/bin/qemu-kvm + + + + + diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 817e408337..cd0b280f92 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -361,6 +361,7 @@ mymain(void) DO_TEST("clock-utc"); DO_TEST("clock-localtime"); + DO_TEST_DIFFERENT("cpu-empty"); DO_TEST("cpu-kvmclock"); DO_TEST("cpu-host-kvmclock"); DO_TEST("cpu-host-passthrough-features");