]> xenbits.xensource.com Git - libvirt.git/commitdiff
storage: Fix XPath for looking up gluster volume name
authorPeter Krempa <pkrempa@redhat.com>
Thu, 30 Mar 2017 14:14:13 +0000 (16:14 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 4 Apr 2017 14:36:15 +0000 (16:36 +0200)
Use the relative lookup specifier rather than the global one. Otherwise
only the first name would be looked up. Add a test case to cover the
scenario.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1436574

src/storage/storage_util.c
tests/virstorageutildata/gluster-parse-multivol-native.xml [new file with mode: 0644]
tests/virstorageutildata/gluster-parse-multivol-netfs.xml [new file with mode: 0644]
tests/virstorageutildata/gluster-parse-multivol-src.xml [new file with mode: 0644]
tests/virstorageutiltest.c

index b7c594da2f6f0d96a792dd8cc6992c3d11a633c9..1e44a2da4464b52cb379b11e4e0ef7fe40bc4c6d 100644 (file)
@@ -2862,7 +2862,7 @@ virStorageUtilGlusterExtractPoolSources(const char *host,
         if (!(src = virStoragePoolSourceListNewSource(list)))
             goto cleanup;
 
-        if (!(src->dir = virXPathString("string(//name)", ctxt))) {
+        if (!(src->dir = virXPathString("string(./name)", ctxt))) {
             virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                            _("failed to extract gluster volume name"));
             goto cleanup;
diff --git a/tests/virstorageutildata/gluster-parse-multivol-native.xml b/tests/virstorageutildata/gluster-parse-multivol-native.xml
new file mode 100644 (file)
index 0000000..d2d8fef
--- /dev/null
@@ -0,0 +1,14 @@
+<sources>
+  <source>
+    <host name='testhost'/>
+    <dir path='aaa'/>
+  </source>
+  <source>
+    <host name='testhost'/>
+    <dir path='test'/>
+  </source>
+  <source>
+    <host name='testhost'/>
+    <dir path='test1'/>
+  </source>
+</sources>
diff --git a/tests/virstorageutildata/gluster-parse-multivol-netfs.xml b/tests/virstorageutildata/gluster-parse-multivol-netfs.xml
new file mode 100644 (file)
index 0000000..3a54299
--- /dev/null
@@ -0,0 +1,17 @@
+<sources>
+  <source>
+    <host name='testhost'/>
+    <dir path='aaa'/>
+    <format type='glusterfs'/>
+  </source>
+  <source>
+    <host name='testhost'/>
+    <dir path='test'/>
+    <format type='glusterfs'/>
+  </source>
+  <source>
+    <host name='testhost'/>
+    <dir path='test1'/>
+    <format type='glusterfs'/>
+  </source>
+</sources>
diff --git a/tests/virstorageutildata/gluster-parse-multivol-src.xml b/tests/virstorageutildata/gluster-parse-multivol-src.xml
new file mode 100644 (file)
index 0000000..0c1f9d1
--- /dev/null
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--- note that the XML file is truncated -->
+<cliOutput>
+  <opRet>0</opRet>
+  <opErrno>0</opErrno>
+  <opErrstr/>
+  <volInfo>
+    <volumes>
+      <volume>
+        <name>aaa</name>
+        <id>d0b219d4-4169-4907-8994-d2e2434854ed</id>
+        <status>0</status>
+        <statusStr>Created</statusStr>
+        <snapshotCount>0</snapshotCount>
+      </volume>
+      <volume>
+        <name>test</name>
+        <id>32826068-2320-4b62-a825-2554edb7f020</id>
+        <status>1</status>
+        <statusStr>Started</statusStr>
+        <snapshotCount>0</snapshotCount>
+      </volume>
+      <volume>
+        <name>test1</name>
+        <id>dfa070f4-b12f-4166-8d68-041b73127abc</id>
+        <status>0</status>
+        <statusStr>Created</statusStr>
+      </volume>
+      <count>3</count>
+    </volumes>
+  </volInfo>
+</cliOutput>
index e846ad547431f36eb89a242ef95806b17a1ffb0d..f82d5174f6fdeb704d138bb9b1ddf6924e70b6d1 100644 (file)
@@ -101,6 +101,8 @@ mymain(void)
 
     DO_TEST_GLUSTER_EXTRACT_POOL_SOURCES_NATIVE("basic");
     DO_TEST_GLUSTER_EXTRACT_POOL_SOURCES_NETFS("basic");
+    DO_TEST_GLUSTER_EXTRACT_POOL_SOURCES_NATIVE("multivol");
+    DO_TEST_GLUSTER_EXTRACT_POOL_SOURCES_NETFS("multivol");
 
 #undef DO_TEST_GLUSTER_EXTRACT_POOL_SOURCES_NATIVE
 #undef DO_TEST_GLUSTER_EXTRACT_POOL_SOURCES_NETFS