]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
Decouple CPU XML formatting from domain XML public API flags
authorDaniel P. Berrange <berrange@redhat.com>
Tue, 6 Jan 2015 11:54:32 +0000 (11:54 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Tue, 13 Jan 2015 16:19:56 +0000 (16:19 +0000)
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
src/conf/cpu_conf.c
src/conf/cpu_conf.h
src/conf/domain_conf.c
src/cpu/cpu.c
tests/cputest.c

index 6c11a7f54accb0636d084d479f3f14c78333c27c..b66c6ddbf51b633165f131a75c34d47157235d0f 100644 (file)
@@ -867,7 +867,7 @@ virCapabilitiesFormatXML(virCapsPtr caps)
         virBufferAdjustIndent(&buf, -2);
         virBufferAddLit(&buf, "</features>\n");
     }
-    virCPUDefFormatBuf(&buf, caps->host.cpu, 0);
+    virCPUDefFormatBuf(&buf, caps->host.cpu, false);
 
     for (i = 0; i < caps->host.nPagesSize; i++) {
         virBufferAsprintf(&buf, "<pages unit='KiB' size='%u'/>\n",
index 31fb45883964163b945c6043ad49b07027727dd3..d6d579f9a0a72d05ed056740663a4acc4d06029c 100644 (file)
@@ -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, "<arch>%s</arch>\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)));
index 5bcf10178b2736879a4e759f3ea3bbc7a8c96fc2..46fce25b5cacd3e62b36156f6ceca174502d4a0c 100644 (file)
@@ -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,
index 3cbb93d67755fda030b23a99d9d88f495962a3f7..fc29f976ee35342081b568f132076fdc133775c4 100644 (file)
@@ -19882,7 +19882,8 @@ virDomainDefFormatInternal(virDomainDefPtr def,
         virBufferAddLit(buf, "</features>\n");
     }
 
-    if (virCPUDefFormatBufFull(buf, def->cpu, flags) < 0)
+    if (virCPUDefFormatBufFull(buf, def->cpu,
+                               !!(flags & VIR_DOMAIN_XML_UPDATE_CPU)) < 0)
         goto error;
 
     virBufferAsprintf(buf, "<clock offset='%s'",
index 788f68873d1718b41cdc9e8a49138e42a8094ba2..6976b7bbc838d470d63d157e68f7f32d12113d90 100644 (file)
@@ -472,7 +472,7 @@ cpuBaselineXML(const char **xmlCPUs,
     if (!(cpu = cpuBaseline(cpus, ncpus, models, nmodels, flags)))
         goto error;
 
-    cpustr = virCPUDefFormat(cpu, 0);
+    cpustr = virCPUDefFormat(cpu, false);
 
  cleanup:
     if (cpus) {
index a5075768fca9f272348370bc98d0b94e9220b679..e49ae2471ad33d0ff8f9df88949a25adb161f70a 100644 (file)
@@ -153,7 +153,7 @@ static int
 cpuTestCompareXML(const char *arch,
                   virCPUDef *cpu,
                   const char *name,
-                  unsigned int flags)
+                  bool updateCPU)
 {
     char *xml = NULL;
     char *expected = NULL;
@@ -167,7 +167,7 @@ cpuTestCompareXML(const char *arch,
     if (virtTestLoadFile(xml, &expected) < 0)
         goto cleanup;
 
-    if (!(actual = virCPUDefFormat(cpu, flags)))
+    if (!(actual = virCPUDefFormat(cpu, updateCPU)))
         goto cleanup;
 
     if (STRNEQ(expected, actual)) {
@@ -303,7 +303,7 @@ cpuTestGuestData(const void *arg)
     }
     result = virBufferContentAndReset(&buf);
 
-    ret = cpuTestCompareXML(data->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);