]> xenbits.xensource.com Git - libvirt.git/commitdiff
test: Support loading node device info from file/XML
authorCole Robinson <crobinso@redhat.com>
Fri, 2 Oct 2009 14:05:17 +0000 (10:05 -0400)
committerCole Robinson <crobinso@redhat.com>
Mon, 5 Oct 2009 18:07:17 +0000 (14:07 -0400)
Also add some XML examples.

Signed-off-by: Cole Robinson <crobinso@redhat.com>
examples/xml/test/testdev.xml [new file with mode: 0644]
examples/xml/test/testnode.xml
examples/xml/test/testnodeinline.xml
src/test/test_driver.c

diff --git a/examples/xml/test/testdev.xml b/examples/xml/test/testdev.xml
new file mode 100644 (file)
index 0000000..c49caa7
--- /dev/null
@@ -0,0 +1,16 @@
+<device>
+  <name>File_test_device</name>
+  <capability type='system'>
+    <hardware>
+      <vendor>Libvirt</vendor>
+      <version>Test driver</version>
+      <serial>123456</serial>
+      <uuid>11111111-2222-3333-4444-555555555555</uuid>
+    </hardware>
+    <firmware>
+      <vendor>Libvirt</vendor>
+      <version>Test Driver</version>
+      <release_date>01/22/2007</release_date>
+    </firmware>
+  </capability>
+</device>
index 1ad7a1083acd80678e60ae91872ed134c71d22ee..adc5440ab6106cecb7e2e731628a9fe76c095acc 100644 (file)
@@ -14,6 +14,7 @@
   <pool file="testpool.xml">
     <volume file="testvol.xml"/>
   </pool>
+  <device file="testdev.xml"/>
 
   <cpu>
     <mhz>6000</mhz>
index 1810d4d6fef69ccbc4e9493336ad4151b6866b02..b353f390a79ef67f5f6d0c487fd5a20e195e05e9 100644 (file)
       </dhcp>
     </ip>
   </network>
+
+<device>
+  <name>File_test_device</name>
+  <capability type='system'>
+    <hardware>
+      <vendor>Libvirt</vendor>
+      <version>Test driver</version>
+      <serial>123456</serial>
+      <uuid>11111111-2222-3333-4444-555555555555</uuid>
+    </hardware>
+    <firmware>
+      <vendor>Libvirt</vendor>
+      <version>Test Driver</version>
+      <release_date>01/22/2007</release_date>
+    </firmware>
+  </capability>
+</device>
+
+
   <cpu>
     <mhz>6000</mhz>
     <model>i986</model>
index add86c55e30e778dce8eefb18a23c8a52e17d8cf..0b866d214419706abf1b0f8fa7da1d31036eb733 100644 (file)
@@ -547,7 +547,8 @@ static int testOpenFromFile(virConnectPtr conn,
     char *str;
     xmlDocPtr xml = NULL;
     xmlNodePtr root = NULL;
-    xmlNodePtr *domains = NULL, *networks = NULL, *ifaces = NULL, *pools = NULL;
+    xmlNodePtr *domains = NULL, *networks = NULL, *ifaces = NULL,
+               *pools = NULL, *devs = NULL;
     xmlXPathContextPtr ctxt = NULL;
     virNodeInfoPtr nodeInfo;
     virNetworkObjPtr net;
@@ -841,6 +842,43 @@ static int testOpenFromFile(virConnectPtr conn,
     }
     VIR_FREE(pools);
 
+    ret = virXPathNodeSet(conn, "/node/device", ctxt, &devs);
+    if (ret < 0) {
+        testError(NULL, VIR_ERR_XML_ERROR, "%s", _("node device list"));
+        goto error;
+    }
+    for (i = 0 ; i < ret ; i++) {
+        virNodeDeviceDefPtr def;
+        virNodeDeviceObjPtr dev;
+        char *relFile = virXMLPropString(devs[i], "file");
+
+        if (relFile != NULL) {
+            char *absFile = testBuildFilename(file, relFile);
+            VIR_FREE(relFile);
+
+            if (!absFile) {
+                testError(NULL, VIR_ERR_INTERNAL_ERROR, "%s",
+                          _("resolving device filename"));
+                goto error;
+            }
+
+            def = virNodeDeviceDefParseFile(conn, absFile, 0);
+            VIR_FREE(absFile);
+            if (!def)
+                goto error;
+        } else {
+            if ((def = virNodeDeviceDefParseNode(conn, xml, devs[i], 0)) == NULL)
+                goto error;
+        }
+        if (!(dev = virNodeDeviceAssignDef(conn, &privconn->devs, def))) {
+            virNodeDeviceDefFree(def);
+            goto error;
+        }
+        virNodeDeviceObjUnlock(dev);
+    }
+    VIR_FREE(devs);
+
+
     xmlXPathFreeContext(ctxt);
     xmlFreeDoc(xml);
     testDriverUnlock(privconn);