[Libvirt-cim] [PATCH] [TEST] [TEST] Adding vol_delete and modifying RPCS/10_create_storagevolume.py

Deepti B. Kalakeri deeptik at linux.vnet.ibm.com
Thu Sep 17 08:56:41 UTC 2009


# HG changeset patch
# User Deepti B. Kalakeri <deeptik at linux.vnet.ibm.com>
# Date 1253182950 14400
# Node ID 5158d71836cdd6127473221731f203c3af221b21
# Parent  26357e57d207c3437a06a0730e99c942111901f3
[TEST] [TEST] Adding vol_delete and modifying RPCS/10_create_storagevolume.py

1) Adding vol_delete() to xm_virt_util.py to delete a volume of a pool.
2) Updating RPCS/10_create_storagevolume.py to include vol_delete.

Tested with KVM and current sources on SLES11.
Signed-off-by: Deepti B. Kalakeri <deeptik at linux.vnet.ibm.com>

diff -r 26357e57d207 -r 5158d71836cd suites/libvirt-cim/cimtest/ResourcePoolConfigurationService/10_create_storagevolume.py
--- a/suites/libvirt-cim/cimtest/ResourcePoolConfigurationService/10_create_storagevolume.py	Wed Sep 16 09:03:39 2009 -0400
+++ b/suites/libvirt-cim/cimtest/ResourcePoolConfigurationService/10_create_storagevolume.py	Thu Sep 17 06:22:30 2009 -0400
@@ -38,7 +38,7 @@
 from XenKvmLib import rpcs_service
 from XenKvmLib.assoc import Associators
 from XenKvmLib.enumclass import GetInstance, EnumNames
-from XenKvmLib.xm_virt_util import virsh_version, vol_list
+from XenKvmLib.xm_virt_util import virsh_version, vol_list, vol_delete
 from XenKvmLib.classes import get_typed_class, inst_to_mof
 from XenKvmLib.common_util import destroy_diskpool
 from XenKvmLib.pool import create_pool, undefine_diskpool, DIR_POOL
@@ -129,9 +129,14 @@
     return PASS
 
 
-def cleanup_pool_vol(server, virt, pool_name, clean_vol, exp_vol_path):
+def cleanup_pool_vol(server, virt, pool_name, clean_pool, exp_vol_path):
+    status = FAIL
     try:
-        if clean_vol == True:
+        ret = vol_delete(server, virt, vol_name, pool_name)
+        if ret == None:
+            logger.error("Failed to delete the volume '%s'", vol_name)
+
+        if clean_pool == True:
             status = destroy_diskpool(server, virt, pool_name)
             if status != PASS:
                 raise Exception("Unable to destroy diskpool '%s'" % pool_name)
@@ -140,16 +145,21 @@
                 if status != PASS:
                     raise Exception("Unable to undefine diskpool '%s'" \
                                      % pool_name)
+
+        if os.path.exists(exp_vol_path):
+            cmd = "rm -rf %s" % exp_vol_path
+            res, out = utils.run_remote(server, cmd)
+            if res != 0:
+                raise Exception("'%s' was not removed, please remove it "\
+                                "manually", exp_vol_path)
+
     except Exception, details:
         logger.error("Exception details: %s", details)
+        status = FAIL
+
+    if ret == None or (clean_pool == True and status != PASS):
         return FAIL
-
-    if os.path.exists(exp_vol_path):
-        cmd = "rm -rf %s" % exp_vol_path
-        ret, out = utils.run_remote(server, cmd)
-        if ret != 0:
-            logger.info("'%s' was not removed, please remove it manually", 
-                        exp_vol_path)
+  
     return PASS
 
 @do_main(platform_sup)
@@ -211,18 +221,18 @@
             found = verify_vol(server, virt, pool_name, exp_vol_path, found)
             stovol_status = verify_sto_vol_rasd(virt, server, dp_inst_id, 
                                                 exp_vol_path)
+
+            ret = cleanup_pool_vol(server, virt, pool_name, 
+                                   clean_pool, exp_vol_path)
+            if res[0] == PASS and found == 1 and \
+               ret == PASS and stovol_status == PASS:
+                status = PASS
+            else:
+                return FAIL
         
         except Exception, details:
             logger.error("Exception details: %s", details)
             status = FAIL
-
-        ret = cleanup_pool_vol(server, virt, pool_name, 
-                               clean_pool, exp_vol_path)
-        if res[0] == PASS and found == 1 and \
-           ret == PASS and stovol_status == PASS:
-            status = PASS
-        else:
-            return FAIL
         
     return status
 if __name__ == "__main__":
diff -r 26357e57d207 -r 5158d71836cd suites/libvirt-cim/lib/XenKvmLib/xm_virt_util.py
--- a/suites/libvirt-cim/lib/XenKvmLib/xm_virt_util.py	Wed Sep 16 09:03:39 2009 -0400
+++ b/suites/libvirt-cim/lib/XenKvmLib/xm_virt_util.py	Thu Sep 17 06:22:30 2009 -0400
@@ -238,9 +238,9 @@
     return names
 
 def vol_list(server, virt="KVM", pool_name=None):
-    """ Function to list the volumes part of a pool"""
+    """ Function to list the volumes of a pool"""
 
-    cmd = " virsh -c %s vol-list %s | sed -e '1,2 d' -e '$ d'" \
+    cmd = "virsh -c %s vol-list %s | sed -e '1,2 d' -e '$ d'" \
             % (virt2uri(virt), pool_name)
     ret, out = utils.run_remote(server, cmd)
     if ret != 0:
@@ -248,6 +248,18 @@
 
     return out 
 
+def vol_delete(server, virt="KVM", vol_name=None, pool_name=None):
+    """ Function to delete the volume of a pool"""
+
+    cmd = "virsh -c %s vol-delete %s --pool %s"\
+            % (virt2uri(virt), vol_name, pool_name)
+    ret, out = utils.run_remote(server, cmd)
+    if ret != 0:
+        return None
+
+    return out 
+
+
 def virsh_vcpuinfo(server, dom, virt="Xen"):
     cmd = "virsh -c %s vcpuinfo %s | grep VCPU | wc -l" % (virt2uri(virt),
           dom)




More information about the Libvirt-cim mailing list