[Libvirt-cim] [PATCH] [TEST] Adding new tc to verify fs storage pool creation
Kaitlin Rupert
kaitlin at linux.vnet.ibm.com
Mon Jun 29 18:28:06 UTC 2009
> +import os
> +import sys
> +from optparse import OptionParser
> +from commands import getstatusoutput
> +from distutils.text_file import TextFile
> +from pywbem import WBEMConnection, cim_types
> +sys.path.append('../../../lib')
> +from CimTest import Globals
> +from CimTest.Globals import logger, log_param
> +sys.path.append('../lib')
> +from XenKvmLib.classes import inst_to_mof, get_typed_class
> +from XenKvmLib.pool import get_pool_rasds
> +sys.path.append('../')
> +from main import pre_check
I like the use of this check, but importing from main.py is a little
odd. main.py isn't intended to be a module... can you move pre-check to
XenKvmLib?
You don't have to do this change in the this patch - you can follow up
with a different patch once this test is in the tree.
> +
> +PASS = 0
> +FAIL = 1
Why not import the PASS / FAIL values from lib/CimTest/ReturnCodes.py?
> +
> +def get_pool_settings(dp_rasds, pooltype, part_dev, mount_pt, pool_name):
> + pool_settings = None
> + for dpool_rasd in dp_rasds:
> + if dpool_rasd['Type'] == pooltype and \
> + dpool_rasd['InstanceID'] == 'Default':
> + dpool_rasd['DevicePaths'] =[part_dev]
Need a space between =[part_dev] so that is looks like:
dpool_rasd['DevicePaths'] = [part_dev]
> + dpool_rasd['Path'] = mount_pt
> + dp_pid = "%s/%s" %("DiskPool", pool_name)
Need a space here so it looks like:
dp_pid = "%s/%s" % ("DiskPool", pool_name)
> + dpool_rasd['PoolID'] = dpool_rasd['InstanceID'] = dp_pid
> + break
> + if not pool_name in dpool_rasd['InstanceID']:
> + return pool_settings
> +
> + pool_settings = inst_to_mof(dpool_rasd)
> + return pool_settings
> +
> +
> +def cleanup(virt, pool_name, sysname, mount_pt, del_dir):
> + virsh = "virsh -c %s" % get_uri(virt)
> + cmd = "%s pool-destroy %s && %s pool-undefine %s" \
> + % (virsh, pool_name, virsh, pool_name)
Why not use the providers to clean up the pool?
> + ret, out = getstatusoutput(cmd)
> + if ret != PASS:
> + logger.error("WARNING: pool '%s' was not cleaned on '%s'",
> + pool_name, sysname)
> + logger.error("WARNING: Please remove it manually")
> +
> + if del_dir == True:
> + cmd ="rm -rf %s" % mount_pt
> + status, out = getstatusoutput(cmd)
> + if status != PASS:
> + logger.error("WARNING: '%s' was not removed", mount_pt)
> + logger.error("WARNING: Please remove %s manually", mount_pt)
> +
> + # Verify if the desired pool was successfully created ..
> + status, out = verify_pool(virt, pool_name)
> + if status != PASS:
> + raise Exception("Failed to create pool: %s " % pool_name)
> +
> + except Exception, details:
> + logger.error("In main(), exception '%s'", details)
> + if del_dir == True:
> + cmd ="rm -rf %s" % mount_pt
> + status, out = getstatusoutput(cmd)
If the pool is created properly bu the verify step fails, then you will
attempt to remove a directory that has a disk mounted on it.
Also, if the pool is created properly, you don't clean it up here.
Instead of attempting to remove the directory here, why not just set
res[0] = FAIL and then fall through so that cleanup() is called?
> + return FAIL
> +
> + # Clean up the pool and the mount dir that was created ...
> + cleanup(virt, pool_name, sysname, mount_pt, del_dir)
> +
> + if res[0] == PASS:
> + logger.info("Pool %s was successfully verified for pool type %s",
> + pool_name , options.pool_type)
> +
> + # Place holder to give a hint to the user the tc passed
> + # otherwise the user will have to look into the cimtest.log in the
> + # current dir.
> + print "Pool '", pool_name,"' was successfully verified for pool type "\
> + "'", options.pool_type , "'"
> + else:
> + logger.error("Test Failed to verify '%s' pool creation ....",
> + options.pool_type)
> + return res[0]
> +if __name__=="__main__":
> + sys.exit(main())
> +
>
> _______________________________________________
> Libvirt-cim mailing list
> Libvirt-cim at redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-cim
--
Kaitlin Rupert
IBM Linux Technology Center
kaitlin at linux.vnet.ibm.com
More information about the Libvirt-cim
mailing list