
# HG changeset patch # User Guolian Yun <yunguol@cn.ibm.com> # Date 1239868524 25200 # Node ID 860c994006a12104618e29bf051730993568bcc1 # Parent 4ec367c94c356de7fac5a19ffe215c316d0cdcd1 [TEST]Update RPCS/04 to validate that the Network child pool can be created through the providers Follow up patch will valide Disk child pool creation and verification in the same tc Tested for KVM with current sources Signed-off-by: Guolian Yun<yunguol@cn.ibm.com> diff -r 4ec367c94c35 -r 860c994006a1 suites/libvirt-cim/cimtest/ResourcePoolConfigurationService/04_CreateChildResourcePool.py --- a/suites/libvirt-cim/cimtest/ResourcePoolConfigurationService/04_CreateChildResourcePool.py Wed Apr 08 02:22:53 2009 -0700 +++ b/suites/libvirt-cim/cimtest/ResourcePoolConfigurationService/04_CreateChildResourcePool.py Thu Apr 16 00:55:24 2009 -0700 @@ -52,32 +52,84 @@ from XenKvmLib import rpcs_service from CimTest.Globals import logger from CimTest.ReturnCodes import FAIL, PASS -from XenKvmLib.const import do_main, platform_sup +from XenKvmLib.const import do_main, platform_sup, get_provider_version from XenKvmLib.classes import get_typed_class +from pywbem.cim_obj import CIMInstanceName, CIMInstance +from XenKvmLib.enumclass import EnumInstances +from XenKvmLib.common_util import destroy_netpool cim_errno = pywbem.CIM_ERR_NOT_SUPPORTED cim_mname = "CreateChildResourcePool" +libvirt_cim_child_pool_rev = 837 +testpool = "mypool" + +def verify_pool(pool_list, poolname): + status = PASS + if len(pool_list) < 1: + logger.error("Returen %i instances, expected at least one instance", + len(pool_list)) + return FAIL + + for i in range(0, len(pool_list)): + ret_pool = pool_list[i].InstanceID + if ret_pool == poolname: + break + elif ret_pool != poolname and i == len(pool_list)-1: + logger.error("Can not find expected pool") + status = FAIL + + return status @do_main(platform_sup) def main(): options = main.options rpcs_conn = eval("rpcs_service." + get_typed_class(options.virt, \ "ResourcePoolConfigurationService"))(options.ip) - try: - rpcs_conn.CreateChildResourcePool() - except pywbem.CIMError, (err_no, desc): - if err_no == cim_errno : - logger.info("Got expected exception for '%s' service", cim_mname) - logger.info("Errno is '%s' ", err_no) - logger.info("Error string is '%s'", desc) - return PASS - else: - logger.error("Unexpected rc code %s and description %s\n", - err_no, desc) + + curr_cim_rev, changeset = get_provider_version(options.virt, options.ip) + if curr_cim_rev < libvirt_cim_child_pool_rev: + try: + rpcs_conn.CreateChildResourcePool() + except pywbem.CIMError, (err_no, desc): + if err_no == cim_errno : + logger.info("Got expected exception for '%s'service", cim_mname) + logger.info("Errno is '%s' ", err_no) + logger.info("Error string is '%s'", desc) + return PASS + else: + logger.error("Unexpected rc code %s and description %s\n", + err_no, desc) + return FAIL + elif curr_cim_rev >= libvirt_cim_child_pool_rev: + nprasd = get_typed_class(options.virt, + 'NetPoolResourceAllocationSettingData') + np_id = 'NetworkPool/%s' % testpool + iname = CIMInstanceName(nprasd, + namespace = 'root/virt', + keybindings = {'InstanceID':np_id}) + logger.info('iname is %s', iname) + nrasd = CIMInstance(nprasd, path = iname, + properties ={ + "Address" : "192.168.0.30", + "Netmask" : "255.255.255.0", + "IPRangeStart" : "192.168.0.31", + "IPRangeEnd" : "192.168.0.57", + "ForwardMode":"route eth1"}) + try: + rpcs_conn.CreateChildResourcePool(ElementName=testpool, + Settings=[nrasd.tomof()]) + except pywbem.CIMError, details: + logger.error("Invoke CreateChildResourcePool() error") + logger.error(details) return FAIL - - logger.error("The execution should not have reached here!!") - return FAIL + + np = get_typed_class(options.virt, 'NetworkPool') + netpool = EnumInstances(options.ip, np) + status = verify_pool(netpool, np_id) + + destroy_netpool(options.ip, options.virt, testpool) + return status + if __name__ == "__main__": sys.exit(main())