Also add some XML examples. Signed-off-by: Cole Robinson <crobinso@xxxxxxxxxx> --- examples/xml/test/testdev.xml | 16 +++++++++++++ examples/xml/test/testnode.xml | 1 + examples/xml/test/testnodeinline.xml | 19 ++++++++++++++++ src/test/test_driver.c | 40 +++++++++++++++++++++++++++++++++- 4 files changed, 75 insertions(+), 1 deletions(-) create mode 100644 examples/xml/test/testdev.xml diff --git a/examples/xml/test/testdev.xml b/examples/xml/test/testdev.xml new file mode 100644 index 0000000..c49caa7 --- /dev/null +++ b/examples/xml/test/testdev.xml @@ -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> diff --git a/examples/xml/test/testnode.xml b/examples/xml/test/testnode.xml index 1ad7a10..adc5440 100644 --- a/examples/xml/test/testnode.xml +++ b/examples/xml/test/testnode.xml @@ -14,6 +14,7 @@ <pool file="testpool.xml"> <volume file="testvol.xml"/> </pool> + <device file="testdev.xml"/> <cpu> <mhz>6000</mhz> diff --git a/examples/xml/test/testnodeinline.xml b/examples/xml/test/testnodeinline.xml index 1810d4d..b353f39 100644 --- a/examples/xml/test/testnodeinline.xml +++ b/examples/xml/test/testnodeinline.xml @@ -97,6 +97,25 @@ </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> diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 2a413ee..764faf2 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -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); -- 1.6.5.rc2 -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list