[libvirt] [PATCH 4/4] test: Support virStorageFindPoolSources

Cole Robinson crobinso at redhat.com
Fri Oct 16 16:35:14 UTC 2009


The results are hardcoded into the test driver, no option to read from a
testfile is implemented at this time.

Signed-off-by: Cole Robinson <crobinso at redhat.com>
---
 src/test/test_driver.c |   75 +++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 71 insertions(+), 4 deletions(-)

diff --git a/src/test/test_driver.c b/src/test/test_driver.c
index 888bc9c..aabad9a 100644
--- a/src/test/test_driver.c
+++ b/src/test/test_driver.c
@@ -225,6 +225,29 @@ static const char *defaultPoolXML =
 "  </target>"
 "</pool>";
 
+static const char *defaultPoolSourcesLogicalXML =
+"<sources>\n"
+"  <source>\n"
+"    <device path='/dev/sda20'/>\n"
+"    <name>testvg1</name>\n"
+"    <format type='lvm2'/>\n"
+"  </source>\n"
+"  <source>\n"
+"    <device path='/dev/sda21'/>\n"
+"    <name>testvg2</name>\n"
+"    <format type='lvm2'/>\n"
+"  </source>\n"
+"</sources>\n";
+
+static const char *defaultPoolSourcesNetFSXML =
+"<sources>\n"
+"  <source>\n"
+"    <host name='%s'/>\n"
+"    <dir path='/testshare'/>\n"
+"    <format type='nfs'/>\n"
+"  </source>\n"
+"</sources>\n";
+
 static const char *defaultNodeXML =
 "<device>"
 "  <name>computer</name>"
@@ -3210,12 +3233,56 @@ cleanup:
 }
 
 static char *
-testStorageFindPoolSources(virConnectPtr conn ATTRIBUTE_UNUSED,
-                           const char *type ATTRIBUTE_UNUSED,
-                           const char *srcSpec ATTRIBUTE_UNUSED,
+testStorageFindPoolSources(virConnectPtr conn,
+                           const char *type,
+                           const char *srcSpec,
                            unsigned int flags ATTRIBUTE_UNUSED)
 {
-    return NULL;
+    virStoragePoolSourcePtr source = NULL;
+    int pool_type;
+    char *ret = NULL;
+
+    pool_type = virStoragePoolTypeFromString(type);
+    if (!pool_type) {
+        testError(conn, VIR_ERR_INTERNAL_ERROR,
+                  _("unknown storage pool type %s"), type);
+        goto cleanup;
+    }
+
+    if (srcSpec) {
+        source = virStoragePoolDefParseSourceString(conn, srcSpec, pool_type);
+        if (!source)
+            goto cleanup;
+    }
+
+    switch (pool_type) {
+
+    case VIR_STORAGE_POOL_LOGICAL:
+        ret = strdup(defaultPoolSourcesLogicalXML);
+        if (!ret)
+            virReportOOMError(conn);
+        break;
+
+    case VIR_STORAGE_POOL_NETFS:
+        if (!source || !source->host.name) {
+            testError(conn, VIR_ERR_INVALID_ARG,
+                      "%s", "hostname must be specified for netfs sources");
+            goto cleanup;
+        }
+
+        if (virAsprintf(&ret, defaultPoolSourcesNetFSXML,
+                        source->host.name) < 0)
+            virReportOOMError(conn);
+        break;
+
+    default:
+        testError(conn, VIR_ERR_NO_SUPPORT,
+                  _("pool type '%s' does not support source discovery"), type);
+    }
+
+cleanup:
+    virStoragePoolSourceFree(source);
+    return ret;
 }
 
 
-- 
1.6.0.6




More information about the libvir-list mailing list