[Libvirt-cim] [PATCH 1 of 5] [TEST] Add destroy_diskpool()

Kaitlin Rupert kaitlin at linux.vnet.ibm.com
Sat Sep 6 00:22:25 UTC 2008


# HG changeset patch
# User Kaitlin Rupert <karupert at us.ibm.com>
# Date 1220559239 25200
# Node ID 4b80cfce163204588ff4195debe8fdbe94209a0c
# Parent  8abcd820b6b37e5fbe8ccc30734cefa908dfab78
[TEST] Add destroy_diskpool()...

Also:

  Modify create_diskpool_conf() to take a disk pool name.
  Give default_pool_name a unique name.
  Modify create_diskpool() so that it will use the existing diskpool only if specified.  Also, have it check to see if the specified diskpool exists before attempting to create it.

Signed-off-by: Kaitlin Rupert <karupert at us.ibm.com>

diff -r 8abcd820b6b3 -r 4b80cfce1632 suites/libvirt-cim/lib/XenKvmLib/common_util.py
--- a/suites/libvirt-cim/lib/XenKvmLib/common_util.py	Fri Sep 05 02:47:24 2008 -0700
+++ b/suites/libvirt-cim/lib/XenKvmLib/common_util.py	Thu Sep 04 13:13:59 2008 -0700
@@ -39,9 +39,8 @@
 from XenKvmLib.vxml import PoolXML, NetXML
 from XenKvmLib.enumclass import getInstance
 from VirtLib import utils 
-from XenKvmLib import const 
+from XenKvmLib.const import default_pool_name, default_network_name
 
-test_dpath = "foo"
 disk_file = '/etc/libvirt/diskpool.conf'
 
 back_disk_file = disk_file + "." + "backup"
@@ -308,7 +307,7 @@
     logger.info("Disk conf file : %s", disk_file)
     try:
         f = open(disk_file, 'w')
-        f.write('%s %s' % (test_dpath, '/'))
+        f.write('%s %s' % (default_pool_name, '/'))
         f.close()
     except Exception,detail:
         logger.error("Exception: %s", detail)
@@ -354,19 +353,28 @@
     
     return conf_file()
 
-def create_diskpool(server, virt='KVM'):
+def create_diskpool(server, virt='KVM', dpool=default_pool_name,
+                    useExisting=False):
     status = PASS
     dpoolname = None
     try:
-        dpool_list = diskpool_list(server, virt='KVM')
-        if len(dpool_list) > 0:
-            dpoolname=dpool_list[0]
-        else:
-            diskxml = PoolXML(server, virt=virt)
+        if useExisting == True:
+            dpool_list = diskpool_list(server, virt='KVM')
+            if len(dpool_list) > 0:
+                dpoolname=dpool_list[0]
+
+        if dpoolname == None:
+            cmd = "virsh -c %s pool-list --all | grep %s" % \
+                  (utils.virt2uri(virt), dpool)
+            ret, out = utils.run_remote(server, cmd)
+            if out != "":
+                logger.error("Disk pool with name '%s' already exists", dpool)
+                return FAIL, "Unknown"
+
+            diskxml = PoolXML(server, virt=virt, poolname=dpool)
             ret = diskxml.create_vpool()
             if not ret:
-                logger.error('Failed to create the disk pool "%s"',
-                         dpoolname)
+                logger.error('Failed to create the disk pool "%s"', dpool)
                 status = FAIL
             else:
                 dpoolname=diskxml.xml_get_diskpool_name()
@@ -375,20 +383,40 @@
         status=FAIL
     return status, dpoolname
 
-def create_diskpool_conf(server, virt):
+def create_diskpool_conf(server, virt, dpool=default_pool_name):
     libvirt_version = virsh_version(server, virt)
     if libvirt_version >= '0.4.1':
-        status, dpoolname = create_diskpool(server, virt=virt)
+        status, dpoolname = create_diskpool(server, virt, dpool)
         diskid = "%s/%s" % ("DiskPool", dpoolname)
     else:
         status = create_diskpool_file()
-        diskid = "%s/%s" % ("DiskPool", test_dpath)
+        diskid = "DiskPool/%s" % default_pool_name
 
     return status, diskid
 
+def destroy_diskpool(server, virt, dpool):
+    libvirt_version = virsh_version(server, virt)
+    if libvirt_version >= '0.4.1':
+        if dpool == None:
+            logger.error("No disk pool specified")
+            return FAIL
+
+        pool_xml = PoolXML(server, virt=virt, poolname=dpool)
+        ret = pool_xml.destroy_vpool()
+        if not ret:
+            logger.error("Failed to destroy disk pool '%s'", dpool)
+            return FAIL
+
+    else:
+        status = cleanup_restore(server, virt)
+        if status != PASS:
+            logger.error("Failed to restore original disk pool file")
+            return status 
+
+    return PASS
 
 def create_netpool_conf(server, virt, use_existing=False,
-                        net_name=const.default_network_name):
+                        net_name=default_network_name):
     status = PASS
     test_network = None
     try:
diff -r 8abcd820b6b3 -r 4b80cfce1632 suites/libvirt-cim/lib/XenKvmLib/const.py
--- a/suites/libvirt-cim/lib/XenKvmLib/const.py	Fri Sep 05 02:47:24 2008 -0700
+++ b/suites/libvirt-cim/lib/XenKvmLib/const.py	Thu Sep 04 13:13:59 2008 -0700
@@ -37,7 +37,7 @@
 default_net_type = 'network'
 
 #vxml.PoolXML
-default_pool_name = 'testpool'
+default_pool_name = 'cimtest-diskpool'
 
 # vxml.VirtXML
 default_domname = 'domU1'
diff -r 8abcd820b6b3 -r 4b80cfce1632 suites/libvirt-cim/lib/XenKvmLib/vxml.py
--- a/suites/libvirt-cim/lib/XenKvmLib/vxml.py	Fri Sep 05 02:47:24 2008 -0700
+++ b/suites/libvirt-cim/lib/XenKvmLib/vxml.py	Thu Sep 04 13:13:59 2008 -0700
@@ -145,14 +145,12 @@
             self.vuri = 'lxc:///system'
 
     def run(self, ip, vcmd, param):
-        file_arg_cmds = ['define', 'create', 'net-create', 'pool-create', 'pool-destroy']
+        file_arg_cmds = ['define', 'create', 'net-create', 'pool-create']
         if vcmd in file_arg_cmds:
             ntf = tempfile.NamedTemporaryFile('w')
             ntf.write(param)
             ntf.flush()
             name = ntf.name
-        elif vcmd == 'pool-destroy':
-            name = param
         elif param is None:
             name = ""
         else:




More information about the Libvirt-cim mailing list