[PATCH 0 of 3] Modifying rasd.py and vsms.py to include support for StoragevolRASD

# HG changeset patch # User Deepti B.Kalakeri <deeptik@linux.vnet.ibm.com> # Date 1249463264 25200 # Node ID 4ab4184ab2998f32f5cd369fd39fed01917ba5e1 # Parent cb9ab2702c7b693c334bc6709fd71833e7fa843f [TEST] #2 Modifying rasd.py and vsms.py lib to support StorageVolRASD. patch 2: -------- 1) Added the RType constant in the vsms.py 2) Added diskpoolrasd, netpoolrasd, storagevolrasd cn in rasd.py Tested with KVM on F10 and current sources. Signed-off-by: Deepti B. Kalakeri <deeptik@linux.vnet.ibm.com> diff -r cb9ab2702c7b -r 4ab4184ab299 suites/libvirt-cim/lib/XenKvmLib/rasd.py --- a/suites/libvirt-cim/lib/XenKvmLib/rasd.py Tue Aug 04 05:20:41 2009 -0700 +++ b/suites/libvirt-cim/lib/XenKvmLib/rasd.py Wed Aug 05 02:07:44 2009 -0700 @@ -40,6 +40,11 @@ masd_cn = 'MemResourceAllocationSettingData' dcrasd_cn = 'GraphicsResourceAllocationSettingData' irasd_cn = 'InputResourceAllocationSettingData' +dpasd_cn = 'DiskPoolResourceAllocationSettingData' +npasd_cn = 'NetPoolResourceAllocationSettingData' +svrasd_cn = 'StorageVolumeResourceAllocationSettingData' + + proccn = 'Processor' memcn = 'Memory' netcn = 'NetworkPort' @@ -47,6 +52,8 @@ dccn = 'DisplayController' pdcn = 'PointingDevice' +libvirt_rasd_storagepool_changes = 934 + def rasd_init_list(vsxml, virt, t_disk, t_dom, t_mac, t_mem, server): """ Creating the lists that will be used for comparisons. @@ -319,6 +326,8 @@ exp_base_num = 4 exp_cdrom = 4 + # StoragePoolRASD record 1 for each of Min, Max, Default, and Incr + exp_storagevol_rasd = 4 exp_len = exp_base_num if id == "DiskPool/0": @@ -351,6 +360,9 @@ volumes = enum_volumes(virt, ip, id[1]) exp_len = (volumes * exp_base_num) + exp_cdrom + if rev >= libvirt_rasd_storagepool_changes and virt != 'LXC': + exp_len += exp_storagevol_rasd + return exp_len def get_exp_net_rasd_len(virt, rev, id): diff -r cb9ab2702c7b -r 4ab4184ab299 suites/libvirt-cim/lib/XenKvmLib/vsms.py --- a/suites/libvirt-cim/lib/XenKvmLib/vsms.py Tue Aug 04 05:20:41 2009 -0700 +++ b/suites/libvirt-cim/lib/XenKvmLib/vsms.py Wed Aug 05 02:07:44 2009 -0700 @@ -35,6 +35,7 @@ RASD_TYPE_DISK = 17 RASD_TYPE_GRAPHICS = 24 RASD_TYPE_INPUT = 13 +RASD_TYPE_STOREVOL = 32768 VSSD_RECOVERY_NONE = 2 VSSD_RECOVERY_RESTART = 3

# HG changeset patch # User Deepti B.Kalakeri <deeptik@linux.vnet.ibm.com> # Date 1249463466 25200 # Node ID 86053a515f379c660de7755fac3dba19209ce373 # Parent 4ab4184ab2998f32f5cd369fd39fed01917ba5e1 [TEST]#2 Fixing HostSystem/03_hs_to_settdefcap.py Patch 2: -------- Using the constants defined in rasd.py and vsms.py Tested with KVM on F10 and current sources. Signed-off-by: Deepti B. Kalakeri <deeptik@linux.vnet.ibm.com> diff -r 4ab4184ab299 -r 86053a515f37 suites/libvirt-cim/cimtest/HostSystem/03_hs_to_settdefcap.py --- a/suites/libvirt-cim/cimtest/HostSystem/03_hs_to_settdefcap.py Wed Aug 05 02:07:44 2009 -0700 +++ b/suites/libvirt-cim/cimtest/HostSystem/03_hs_to_settdefcap.py Wed Aug 05 02:11:06 2009 -0700 @@ -45,14 +45,16 @@ from VirtLib.live import full_hostname from XenKvmLib.common_util import get_host_info from XenKvmLib.assoc import Associators -from XenKvmLib.vxml import XenXML, KVMXML, get_class +from XenKvmLib.vxml import get_class from XenKvmLib.classes import get_typed_class from CimTest.Globals import logger, CIM_ERROR_ASSOCIATORNAMES -from XenKvmLib.const import do_main +from XenKvmLib.const import do_main, get_provider_version from CimTest.ReturnCodes import PASS, FAIL -from XenKvmLib.test_xml import testxml -from XenKvmLib.test_doms import destroy_and_undefine_all -from XenKvmLib.rasd import get_exp_template_rasd_len +from XenKvmLib.rasd import get_exp_template_rasd_len, dasd_cn, masd_cn,\ + pasd_cn, nasd_cn, dpasd_cn, npasd_cn, svrasd_cn ,\ + libvirt_rasd_storagepool_changes +from XenKvmLib.vsms import RASD_TYPE_DISK, RASD_TYPE_MEM, RASD_TYPE_NET_ETHER, \ + RASD_TYPE_PROC, RASD_TYPE_STOREVOL sup_types = ['Xen', 'KVM', 'XenFV', 'LXC'] test_dom = "domgst_test" @@ -60,7 +62,6 @@ def setup_env(server, virt="Xen"): status = PASS - destroy_and_undefine_all(server) if virt == 'LXC': vsxml = get_class(virt)(test_dom) else: @@ -156,12 +157,12 @@ filter = {"key" : "ResourceType"} if virt == 'LXC': - ccnlist = { '%s_MemoryPool' % virt : 4 } + ccnlist = { '%s_MemoryPool' % virt : RASD_TYPE_MEM } else: - ccnlist = { '%s_ProcessorPool' % virt: 3, - '%s_MemoryPool' % virt : 4, - '%s_DiskPool' % virt : 17 , - '%s_NetworkPool' % virt : 10 } + ccnlist = { '%s_ProcessorPool' % virt: RASD_TYPE_PROC, + '%s_MemoryPool' % virt : RASD_TYPE_MEM, + '%s_DiskPool' % virt : RASD_TYPE_DISK , + '%s_NetworkPool' % virt : RASD_TYPE_NET_ETHER } for inst in devpool: try: @@ -198,18 +199,20 @@ status = PASS ccn = get_typed_class(virt, 'AllocationCapabilities') an = get_typed_class(virt, 'SettingsDefineCapabilities') - - if virt == 'LXC': - rtype = { "%s_MemResourceAllocationSettingData" % virt : 4 } - else: - rtype = { - "%s_DiskResourceAllocationSettingData" % virt : 17, \ - "%s_DiskPoolResourceAllocationSettingData" % virt : 17, \ - "%s_MemResourceAllocationSettingData" % virt : 4, \ - "%s_NetResourceAllocationSettingData" % virt : 10, \ - "%s_NetPoolResourceAllocationSettingData" % virt : 10, \ - "%s_ProcResourceAllocationSettingData" % virt : 3 - } + mrasd_cn = get_typed_class(virt, masd_cn) + rtype = { mrasd_cn : RASD_TYPE_MEM } + if virt != 'LXC': + rtype[get_typed_class(virt, pasd_cn)] = RASD_TYPE_PROC + rtype[get_typed_class(virt, dasd_cn)] = RASD_TYPE_DISK + rtype[get_typed_class(virt, dpasd_cn)] = RASD_TYPE_DISK + rtype[get_typed_class(virt, nasd_cn)] = RASD_TYPE_NET_ETHER + rtype[get_typed_class(virt, npasd_cn)] = RASD_TYPE_NET_ETHER + + curr_cim_rev, changeset = get_provider_version(virt, server) + if curr_cim_rev >= libvirt_rasd_storagepool_changes: + storagevol_rasd_cn = get_typed_class(virt, svrasd_cn) + rtype[storagevol_rasd_cn] = RASD_TYPE_STOREVOL + try: for ap in alloccap: assoc_info = Associators(server, @@ -244,7 +247,8 @@ def check_rasd_vals(inst, rt): try: if inst['ResourceType'] != rt: - logger.error("In ResourceType for %s ", rt) + logger.error("ResourceType Mismatch, Got '%s' Expected '%s' ", + inst['ResourceType'], rt) return FAIL except Exception, detail: logger.error("Error checking RASD attribute values %s", detail)

# HG changeset patch # User Deepti B.Kalakeri <deeptik@linux.vnet.ibm.com> # Date 1249467784 25200 # Node ID ca99e2ff90ec82d9668f0751e201882acc0c0f16 # Parent 86053a515f379c660de7755fac3dba19209ce373 [TEST]#2 Fixing SettingsDefineCapabilities/01_forward.py Patch 2: ------- Modified to use constants defined in rasd.py and vsms.py Tested with KVM on F10 and current sources. Signed-off-by: Deepti B. Kalakeri <deeptik@linux.vnet.ibm.com> diff -r 86053a515f37 -r ca99e2ff90ec suites/libvirt-cim/cimtest/SettingsDefineCapabilities/01_forward.py --- a/suites/libvirt-cim/cimtest/SettingsDefineCapabilities/01_forward.py Wed Aug 05 02:11:06 2009 -0700 +++ b/suites/libvirt-cim/cimtest/SettingsDefineCapabilities/01_forward.py Wed Aug 05 03:23:04 2009 -0700 @@ -59,11 +59,16 @@ from XenKvmLib import enumclass from XenKvmLib.xm_virt_util import virsh_version from CimTest.ReturnCodes import PASS, FAIL, SKIP -from CimTest.Globals import logger, CIM_ERROR_GETINSTANCE, CIM_ERROR_ASSOCIATORS -from XenKvmLib.const import do_main, default_pool_name, default_network_name +from CimTest.Globals import logger, CIM_ERROR_GETINSTANCE, \ + CIM_ERROR_ASSOCIATORS +from XenKvmLib.const import do_main, default_pool_name, default_network_name, \ + get_provider_version from XenKvmLib.classes import get_typed_class -from XenKvmLib.common_util import print_field_error -from XenKvmLib.rasd import get_exp_template_rasd_len +from XenKvmLib.rasd import get_exp_template_rasd_len, dasd_cn, masd_cn, \ + nasd_cn, pasd_cn, svrasd_cn, \ + libvirt_rasd_storagepool_changes +from XenKvmLib.vsms import RASD_TYPE_DISK, RASD_TYPE_MEM, RASD_TYPE_PROC, \ + RASD_TYPE_NET_ETHER, RASD_TYPE_STOREVOL platform_sup = ['Xen', 'KVM', 'XenFV', 'LXC'] @@ -86,20 +91,17 @@ sys.exit(FAIL) return instance -def init_list(virt, pool): +def init_list(virt, server, pool): """ Creating the lists that will be used for comparisons. """ - memrasd = get_typed_class(virt, "MemResourceAllocationSettingData") - diskrasd = get_typed_class(virt, "DiskResourceAllocationSettingData") - netrasd = get_typed_class(virt, "NetResourceAllocationSettingData") - procrasd = get_typed_class(virt, "ProcResourceAllocationSettingData") + memrasd = get_typed_class(virt, masd_cn) + + rtype = { memrasd : RASD_TYPE_MEM } if virt == 'LXC': instlist = [ pool[1].InstanceID ] - cllist = [ memrasd ] - rtype = { memrasd : 4 } else: instlist = [ pool[0].InstanceID, @@ -107,20 +109,22 @@ pool[2].InstanceID, pool[3].InstanceID ] - cllist = [ diskrasd, memrasd, netrasd, procrasd ] - rtype = { - diskrasd : 17, - memrasd : 4, - netrasd : 10, - procrasd : 3 - } + + rtype[get_typed_class(virt, dasd_cn)] = RASD_TYPE_DISK + rtype[get_typed_class(virt, nasd_cn)] = RASD_TYPE_NET_ETHER + rtype[get_typed_class(virt, pasd_cn)] = RASD_TYPE_PROC + + curr_cim_rev, changeset = get_provider_version(virt, server) + if curr_cim_rev >= libvirt_rasd_storagepool_changes: + rtype[get_typed_class(virt, svrasd_cn)] = RASD_TYPE_STOREVOL + rangelist = { "Default" : 0, "Minimum" : 1, "Maximum" : 2, "Increment" : 3 } - return instlist, cllist, rtype, rangelist + return instlist, rtype, rangelist def get_pool_info(virt, server, devid, poolname=""): pool_cname = get_typed_class(virt, poolname) @@ -147,21 +151,21 @@ return PASS, pool_set -def verify_rasd_fields(loop, assoc_info, cllist, rtype, rangelist): +def verify_rasd_fields(assoc_info, rtype, rangelist): for inst in assoc_info: - if inst.classname != cllist[loop]: - print_field_error("Classname", inst.classname, cllist[loop]) + if not inst.classname in rtype.keys(): + logger.error("Classname Mismatch, '%s' not in '%s'", + inst.classname, rtype.keys()) return FAIL - if inst['ResourceType'] != rtype[cllist[loop]]: - print_field_error("ResourceType", inst['ResourceType'], - rtype[cllist[loop]]) + if inst['ResourceType'] != rtype[inst.classname]: + logger.error("ResourceType Mismatch, got '%s' expected '%s'", + inst['ResourceType'], rtype[inst.classname]) return FAIL return PASS def verify_sdc_with_ac(virt, server, pool): - loop = 0 - instlist, cllist, rtype, rangelist = init_list(virt, pool) + instlist, rtype, rangelist = init_list(virt, server, pool) assoc_cname = get_typed_class(virt, "SettingsDefineCapabilities") cn = get_typed_class(virt, "AllocationCapabilities") for instid in sorted(instlist): @@ -176,12 +180,9 @@ " of %i", assoc_cname, len(assoc_info), exp_len) status = FAIL break - status = verify_rasd_fields(loop, assoc_info, cllist, rtype, - rangelist) + status = verify_rasd_fields(assoc_info, rtype, rangelist) if status != PASS: break - else: - loop = loop + 1 except Exception, detail: logger.error(CIM_ERROR_ASSOCIATORS, assoc_cname)
participants (1)
-
Deepti B. Kalakeri