[libvirt PATCH 08/10] virDomainVcpuParse: Use virXMLProp*

Tim Wiederhake twiederh at redhat.com
Tue May 4 14:02:33 UTC 2021


Signed-off-by: Tim Wiederhake <twiederh at redhat.com>
---
 src/conf/domain_conf.c | 84 ++++++++++--------------------------------
 1 file changed, 20 insertions(+), 64 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 20cf987176..52d12bfb43 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -18228,32 +18228,16 @@ virDomainVcpuParse(virDomainDef *def,
         }
         VIR_FREE(tmp);
 
-        if ((tmp = virXMLPropString(vcpuNode, "current"))) {
-            if (virStrToLong_ui(tmp, NULL, 10, &vcpus) < 0) {
-                virReportError(VIR_ERR_XML_ERROR, "%s",
-                               _("current vcpus count must be an integer"));
-                return -1;
-            }
-            VIR_FREE(tmp);
-        } else {
-            vcpus = maxvcpus;
-        }
+        vcpus = maxvcpus;
 
-        tmp = virXMLPropString(vcpuNode, "placement");
-        if (tmp) {
-            int placement_mode;
-            if ((placement_mode =
-                 virDomainCpuPlacementModeTypeFromString(tmp)) < 0) {
-                virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                               _("Unsupported CPU placement mode '%s'"),
-                               tmp);
-                return -1;
-            }
-            def->placement_mode = placement_mode;
-            VIR_FREE(tmp);
-        } else {
-            def->placement_mode = VIR_DOMAIN_CPU_PLACEMENT_MODE_STATIC;
-        }
+        if (virXMLPropUInt(vcpuNode, "current", 10, VIR_XML_PROP_NONE, &vcpus) < 0)
+            return -1;
+
+        def->placement_mode = VIR_DOMAIN_CPU_PLACEMENT_MODE_STATIC;
+        if (virXMLPropEnum(vcpuNode, "placement",
+                           virDomainCpuPlacementModeTypeFromString,
+                           VIR_XML_PROP_NONE, &def->placement_mode) < 0)
+            return -1;
 
         if (def->placement_mode != VIR_DOMAIN_CPU_PLACEMENT_MODE_AUTO) {
             tmp = virXMLPropString(vcpuNode, "cpuset");
@@ -18284,18 +18268,11 @@ virDomainVcpuParse(virDomainDef *def,
 
         for (i = 0; i < n; i++) {
             virDomainVcpuDef *vcpu;
-            int state;
+            virTristateBool state;
             unsigned int id;
-            unsigned int order;
 
-            if (!(tmp = virXMLPropString(nodes[i], "id")) ||
-                virStrToLong_uip(tmp, NULL, 10, &id) < 0) {
-                virReportError(VIR_ERR_XML_ERROR, "%s",
-                               _("missing or invalid vcpu id"));
+            if (virXMLPropUInt(nodes[i], "id", 10, VIR_XML_PROP_REQUIRED, &id) < 0)
                 return -1;
-            }
-
-            VIR_FREE(tmp);
 
             if (id >= def->maxvcpus) {
                 virReportError(VIR_ERR_XML_ERROR,
@@ -18306,41 +18283,20 @@ virDomainVcpuParse(virDomainDef *def,
 
             vcpu = virDomainDefGetVcpu(def, id);
 
-            if (!(tmp = virXMLPropString(nodes[i], "enabled"))) {
-                virReportError(VIR_ERR_XML_ERROR, "%s",
-                               _("missing vcpu enabled state"));
-                return -1;
-            }
-
-            if ((state = virTristateBoolTypeFromString(tmp)) < 0) {
-                virReportError(VIR_ERR_XML_ERROR,
-                               _("invalid vcpu 'enabled' value '%s'"), tmp);
+            if (virXMLPropTristateBool(nodes[i], "enabled",
+                                       VIR_XML_PROP_REQUIRED, &state) < 0)
                 return -1;
-            }
-            VIR_FREE(tmp);
 
             vcpu->online = state == VIR_TRISTATE_BOOL_YES;
 
-            if ((tmp = virXMLPropString(nodes[i], "hotpluggable"))) {
-                int hotpluggable;
-                if ((hotpluggable = virTristateBoolTypeFromString(tmp)) < 0) {
-                    virReportError(VIR_ERR_XML_ERROR,
-                                   _("invalid vcpu 'hotpluggable' value '%s'"), tmp);
-                    return -1;
-                }
-                vcpu->hotpluggable = hotpluggable;
-                VIR_FREE(tmp);
-            }
+            if (virXMLPropTristateBool(nodes[i], "hotpluggable",
+                                       VIR_XML_PROP_NONE,
+                                       &vcpu->hotpluggable) < 0)
+                return -1;
 
-            if ((tmp = virXMLPropString(nodes[i], "order"))) {
-                if (virStrToLong_uip(tmp, NULL, 10, &order) < 0) {
-                    virReportError(VIR_ERR_XML_ERROR, "%s",
-                                   _("invalid vcpu order"));
-                    return -1;
-                }
-                vcpu->order = order;
-                VIR_FREE(tmp);
-            }
+            if (virXMLPropUInt(nodes[i], "order", 10, VIR_XML_PROP_NONE,
+                               &vcpu->order) < 0)
+                return -1;
         }
     } else {
         if (virDomainDefSetVcpus(def, vcpus) < 0)
-- 
2.26.3




More information about the libvir-list mailing list