[libvirt] [PATCH v1 12/51] util: conf: separate virDomainDefParseResourceInfo from virDomainDefParseXML

xinhua.Cao caoxinhua at huawei.com
Thu Feb 8 06:46:10 UTC 2018


separate virDomainDefParseResourceInfo from virDomainDefParseXML
---
 src/conf/domain_conf.c | 51 +++++++++++++++++++++++++++++++++-----------------
 1 file changed, 34 insertions(+), 17 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 892e871..24bd240 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -19274,6 +19274,39 @@ virDomainDefParseCpuNumaInfo(virDomainParseTotalParamPtr param)
 }
 
 
+static int
+virDomainDefParseResourceInfo(virDomainParseTotalParamPtr param)
+{
+    virDomainDefPtr def = param->def;
+    xmlXPathContextPtr ctxt = param->ctxt;
+
+    int ret = -1;
+    int n;
+    xmlNodePtr *nodes = NULL;
+
+    if ((n = virXPathNodeSet("./resource", ctxt, &nodes)) < 0) {
+        virReportError(VIR_ERR_INTERNAL_ERROR,
+                       "%s", _("cannot extract resource nodes"));
+        goto cleanup;
+    }
+
+    if (n > 1) {
+        virReportError(VIR_ERR_XML_ERROR, "%s",
+                       _("only one resource element is supported"));
+        goto cleanup;
+    }
+
+    if (n &&
+        !(def->resource = virDomainResourceDefParse(nodes[0], ctxt)))
+        goto cleanup;
+    ret = 0;
+
+ cleanup:
+    VIR_FREE(nodes);
+    return ret;
+}
+
+
 static virDomainDefPtr
 virDomainDefParseXML(xmlDocPtr xml,
                      xmlNodePtr root,
@@ -19325,6 +19358,7 @@ virDomainDefParseXML(xmlDocPtr xml,
             virDomainDefParseIoThreadInfo,
             virDomainDefParseCputuneInfo,
             virDomainDefParseCpuNumaInfo,
+            virDomainDefParseResourceInfo,
             NULL
     };
 
@@ -19352,23 +19386,6 @@ virDomainDefParseXML(xmlDocPtr xml,
         fun_index++;
     }
 
-    if ((n = virXPathNodeSet("./resource", ctxt, &nodes)) < 0) {
-        virReportError(VIR_ERR_INTERNAL_ERROR,
-                       "%s", _("cannot extract resource nodes"));
-        goto error;
-    }
-
-    if (n > 1) {
-        virReportError(VIR_ERR_XML_ERROR, "%s",
-                       _("only one resource element is supported"));
-        goto error;
-    }
-
-    if (n &&
-        !(def->resource = virDomainResourceDefParse(nodes[0], ctxt)))
-        goto error;
-    VIR_FREE(nodes);
-
     if ((n = virXPathNodeSet("./features/*", ctxt, &nodes)) < 0)
         goto error;
 
-- 
2.8.3





More information about the libvir-list mailing list