From e34473c1daf1303023ef91eb6315872b403be04b Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Tue, 6 Jan 2015 11:54:32 +0000 Subject: [PATCH] Decouple CPU XML formatting from domain XML public API flags The virCPUDefFormat* methods were relying on the VIR_DOMAIN_XML_* flag definitions. It is not desirable for low level internal functions to be coupled to flags for the public API, since they may need to be called from several different contexts where the flags would not be appropriate. --- src/conf/capabilities.c | 2 +- src/conf/cpu_conf.c | 14 +++++++------- src/conf/cpu_conf.h | 6 +++--- src/conf/domain_conf.c | 3 ++- src/cpu/cpu.c | 2 +- tests/cputest.c | 11 +++++------ 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c index 6c11a7f54a..b66c6ddbf5 100644 --- a/src/conf/capabilities.c +++ b/src/conf/capabilities.c @@ -867,7 +867,7 @@ virCapabilitiesFormatXML(virCapsPtr caps) virBufferAdjustIndent(&buf, -2); virBufferAddLit(&buf, "\n"); } - virCPUDefFormatBuf(&buf, caps->host.cpu, 0); + virCPUDefFormatBuf(&buf, caps->host.cpu, false); for (i = 0; i < caps->host.nPagesSize; i++) { virBufferAsprintf(&buf, "\n", diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c index 31fb458839..d6d579f9a0 100644 --- a/src/conf/cpu_conf.c +++ b/src/conf/cpu_conf.c @@ -532,11 +532,11 @@ virCPUDefParseXML(xmlNodePtr node, char * virCPUDefFormat(virCPUDefPtr def, - unsigned int flags) + bool updateCPU) { virBuffer buf = VIR_BUFFER_INITIALIZER; - if (virCPUDefFormatBufFull(&buf, def, flags) < 0) + if (virCPUDefFormatBufFull(&buf, def, updateCPU) < 0) goto cleanup; if (virBufferCheckError(&buf) < 0) @@ -553,7 +553,7 @@ virCPUDefFormat(virCPUDefPtr def, int virCPUDefFormatBufFull(virBufferPtr buf, virCPUDefPtr def, - unsigned int flags) + bool updateCPU) { if (!def) return 0; @@ -573,7 +573,7 @@ virCPUDefFormatBufFull(virBufferPtr buf, if (def->model && (def->mode == VIR_CPU_MODE_CUSTOM || - (flags & VIR_DOMAIN_XML_UPDATE_CPU))) { + updateCPU)) { if (!(tmp = virCPUMatchTypeToString(def->match))) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Unexpected CPU match policy %d"), @@ -589,7 +589,7 @@ virCPUDefFormatBufFull(virBufferPtr buf, if (def->arch) virBufferAsprintf(buf, "%s\n", virArchToString(def->arch)); - if (virCPUDefFormatBuf(buf, def, flags) < 0) + if (virCPUDefFormatBuf(buf, def, updateCPU) < 0) return -1; virBufferAdjustIndent(buf, -2); @@ -601,7 +601,7 @@ virCPUDefFormatBufFull(virBufferPtr buf, int virCPUDefFormatBuf(virBufferPtr buf, virCPUDefPtr def, - unsigned int flags) + bool updateCPU) { size_t i; bool formatModel; @@ -612,7 +612,7 @@ virCPUDefFormatBuf(virBufferPtr buf, formatModel = (def->mode == VIR_CPU_MODE_CUSTOM || def->mode == VIR_CPU_MODE_HOST_MODEL || - (flags & VIR_DOMAIN_XML_UPDATE_CPU)); + updateCPU); formatFallback = (def->type == VIR_CPU_TYPE_GUEST && (def->mode == VIR_CPU_MODE_HOST_MODEL || (def->mode == VIR_CPU_MODE_CUSTOM && def->model))); diff --git a/src/conf/cpu_conf.h b/src/conf/cpu_conf.h index 5bcf10178b..46fce25b5c 100644 --- a/src/conf/cpu_conf.h +++ b/src/conf/cpu_conf.h @@ -158,16 +158,16 @@ virCPUDefIsEqual(virCPUDefPtr src, char * virCPUDefFormat(virCPUDefPtr def, - unsigned int flags); + bool updateCPU); int virCPUDefFormatBuf(virBufferPtr buf, virCPUDefPtr def, - unsigned int flags); + bool updateCPU); int virCPUDefFormatBufFull(virBufferPtr buf, virCPUDefPtr def, - unsigned int flags); + bool updateCPU); int virCPUDefAddFeature(virCPUDefPtr cpu, diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 3cbb93d677..fc29f976ee 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -19882,7 +19882,8 @@ virDomainDefFormatInternal(virDomainDefPtr def, virBufferAddLit(buf, "\n"); } - if (virCPUDefFormatBufFull(buf, def->cpu, flags) < 0) + if (virCPUDefFormatBufFull(buf, def->cpu, + !!(flags & VIR_DOMAIN_XML_UPDATE_CPU)) < 0) goto error; virBufferAsprintf(buf, "arch, guest, result, 0); + ret = cpuTestCompareXML(data->arch, guest, result, false); cleanup: VIR_FREE(result); @@ -351,7 +351,7 @@ cpuTestBaseline(const void *arg) if (virAsprintf(&result, "%s-%s", data->name, suffix) < 0) goto cleanup; - if (cpuTestCompareXML(data->arch, baseline, result, 0) < 0) + if (cpuTestCompareXML(data->arch, baseline, result, false) < 0) goto cleanup; for (i = 0; i < ncpus; i++) { @@ -403,8 +403,7 @@ cpuTestUpdate(const void *arg) if (virAsprintf(&result, "%s+%s", data->host, data->name) < 0) goto cleanup; - ret = cpuTestCompareXML(data->arch, cpu, result, - VIR_DOMAIN_XML_UPDATE_CPU); + ret = cpuTestCompareXML(data->arch, cpu, result, true); cleanup: virCPUDefFree(host);