# HG changeset patch
# User Deepti B. Kalakeri <deeptik(a)linux.vnet.ibm.com>
# Date 1218440570 25200
# Node ID 0b5dea4e96cd0e128c0da6019cc545964deeba49
# Parent 8ac224c6840c79e73c54b7c59647f5be5117d29e
[TEST] Adding KVM and XenFV support to 41_cs_to_settingdefinestate.py.
1) Added support for XenFV, KVM.
2) Removed get_inst_from_list().
3) Used poll_for_state_change to get the CS instance and also verify the enabled state is
set to 2
4) Also verifying that the RequestedState is set to 0 when the VS is created.
Tested with Xen, XenFV and KVM on latest sources.
Signed-off-by: Deepti B. Kalakeri <deeptik(a)linux.vnet.ibm.com>
diff -r 8ac224c6840c -r 0b5dea4e96cd
suites/libvirt-cim/cimtest/ComputerSystem/41_cs_to_settingdefinestate.py
--- a/suites/libvirt-cim/cimtest/ComputerSystem/41_cs_to_settingdefinestate.py Thu Aug 07
23:45:42 2008 -0700
+++ b/suites/libvirt-cim/cimtest/ComputerSystem/41_cs_to_settingdefinestate.py Mon Aug 11
00:42:50 2008 -0700
@@ -37,9 +37,9 @@
# Steps:
# ------
# 1) Create a guest domain.
-# 2) Enumerate ComputerSystem.
-# 3) Select the guest domain from the output and create info list for the guest domain
-# to be used later for comparison.
+# 2) Enumerate ComputerSystem and Select the guest domain from the output
+# and and verify the EnabledState is 2.
+# 3) Create info list for the guest domain to be used later for comparison.
# 4) Get the various devices allocated to the domain by using the SystemDevice
# association and giving the ComputerSystem output from the previous enumeration
# as inputs to the association.
@@ -70,26 +70,31 @@ from XenKvmLib import rasd
from XenKvmLib import rasd
from XenKvmLib.rasd import verify_procrasd_values, verify_netrasd_values, \
verify_diskrasd_values, verify_memrasd_values, rasd_init_list
+from XenKvmLib.common_util import poll_for_state_change
+from XenKvmLib.classes import get_typed_class
-sup_types = ['Xen']
+sup_types = ['Xen', 'XenFV', 'KVM']
test_dom = "CrossClass_GuestDom"
test_vcpus = 1
test_mem = 128
test_mac = "00:11:22:33:44:aa"
-test_disk = "xvda"
def vssd_init_list(virt):
"""
Creating the lists that will be used for comparisons.
"""
+ if virt == 'XenFV':
+ virt = 'Xen'
+
vssd_values = {
- 'Caption' : "Virtual System", \
- 'InstanceID' : '%s:%s' % (virt,
test_dom), \
- 'ElementName' : test_dom, \
- 'VirtualSystemIdentifier' : test_dom, \
- 'VirtualSystemType' : virt, \
- 'Classname' :
"Xen_VirtualSystemSettingData"
+ 'Caption' : "Virtual System",
+ 'InstanceID' : '%s:%s' % (virt,
test_dom),
+ 'ElementName' : test_dom,
+ 'VirtualSystemIdentifier' : test_dom,
+ 'VirtualSystemType' : virt,
+ 'Classname' : get_typed_class(virt,
+ "VirtualSystemSettingData")
}
return vssd_values
@@ -99,19 +104,20 @@ def cs_init_list(cs_dom):
Creating the lists that will be used for comparisons.
"""
cs_values = {
- 'Caption' : cs_dom.Caption, \
- 'EnabledState' : cs_dom.EnabledState, \
- 'RequestedState' : cs_dom.RequestedState, \
- 'CreationClassName' : cs_dom.CreationClassName, \
+ 'Caption' : cs_dom.Caption,
+ 'EnabledState' : cs_dom.EnabledState,
+ 'RequestedState' : cs_dom.RequestedState,
+ 'CreationClassName' : cs_dom.CreationClassName,
'Name' : cs_dom.Name
}
return cs_values
-def setup_env(server, virt):
+def setup_env(server, virt, test_disk):
vsxml_info = None
status = PASS
destroy_and_undefine_all(server)
virt_xml = get_class(virt)
+
vsxml_info = virt_xml(test_dom, mem = test_mem,
vcpus=test_vcpus,
mac = test_mac,
@@ -137,23 +143,7 @@ def vssd_sds_err( an, fieldname, ret_val
logger.error(err)
logger.error(detail)
-def get_inst_from_list(server, vsxml, cn, cs_list, exp_val):
- status = PASS
- ret = -1
- inst = None
- for inst in cs_list:
- if inst.Name == exp_val:
- ret = PASS
- break
-
- if ret != PASS:
- logger.error("%s with %s was not returned" % (cn, exp_val))
- vsxml.destroy(server)
- status = FAIL
-
- return status, inst
-
-def get_associatornames_info(server, vsxml, cn, an, qcn, name):
+def get_associatornames_info(server, virt, vsxml, cn, an, qcn, name):
status = PASS
assoc_info = []
try:
@@ -161,7 +151,8 @@ def get_associatornames_info(server, vsx
an,
cn,
CreationClassName=cn,
- Name = name)
+ Name = name,
+ virt=virt)
if len(assoc_info) < 1:
logger.error("%s returned %i %s objects" % (an, len(assoc_info),
qcn))
status = FAIL
@@ -174,14 +165,15 @@ def get_associatornames_info(server, vsx
return status, assoc_info
-def get_associators_info(server, vsxml, cn, an, qcn, instid):
+def get_associators_info(server, virt, vsxml, cn, an, qcn, instid):
status = PASS
assoc_info = []
try:
assoc_info = Associators(server,
an,
cn,
- InstanceID = instid)
+ InstanceID = instid,
+ virt=virt)
if len(assoc_info) < 1:
logger.error("%s returned %i %s objects" %
(an, len(assoc_info), qcn))
@@ -208,31 +200,39 @@ def get_SDS_verify_RASD_build_vssdc_inpu
status = PASS
in_setting_define_state = {}
in_vssdc = {}
+ prasd = get_typed_class(virt, 'ProcResourceAllocationSettingData')
+ mrasd = get_typed_class(virt, 'MemResourceAllocationSettingData')
+ nrasd = get_typed_class(virt, 'NetResourceAllocationSettingData')
+ drasd = get_typed_class(virt, 'DiskResourceAllocationSettingData')
+
try:
-# Building the input for Xen_SettingsDefineState association.
+
+ # Building the input for Xen_SettingsDefineState association.
for i in range(len(sd_assoc_info)):
if sd_assoc_info[i]['SystemName'] == test_dom:
classname_keyvalue = sd_assoc_info[i]['CreationClassName']
deviceid = sd_assoc_info[i]['DeviceID']
in_setting_define_state[classname_keyvalue] = deviceid
-# Expect the Xen_SystemDevice to return 4 logical device records.
-# one each for memory, network, disk and processor and hence 4.
-# and hence expect the in_setting_define_state to contain just 4 entries.
- an = "Xen_SystemDevice"
+
+ # Expect the Xen_SystemDevice to return 4 logical device records.
+ # one each for memory, network, disk and processor and hence 4.
+ # and hence expect the in_setting_define_state to contain just 4 entries.
+ an = get_typed_class(virt, "SystemDevice")
qcn = "Logical Devices"
exp_len = 4
if check_len(an, in_setting_define_state, qcn, exp_len) != PASS:
return FAIL, in_setting_define_state
-# Get the rasd values that will be used to compare with the Xen_SettingsDefineState
-# output.
+
+ # Get the rasd values that will be used to compare with the
Xen_SettingsDefineState
+ # output.
status, rasd_values, in_list = rasd_init_list(vsxml, virt, test_disk,
test_dom, test_mac,
test_mem)
if status != PASS:
- return status
-
- sccn = "Xen_ComputerSystem"
- an = "Xen_SettingsDefineState"
+ return status, rasd_values
+
+ sccn = get_typed_class(virt,"ComputerSystem")
+ an = get_typed_class(virt,"SettingsDefineState")
for cn, devid in sorted(in_setting_define_state.items()):
assoc_info = Associators(server,
an,
@@ -240,10 +240,11 @@ def get_SDS_verify_RASD_build_vssdc_inpu
DeviceID = devid,
CreationClassName = cn,
SystemName = test_dom,
- SystemCreationClassName = sccn)
+ SystemCreationClassName = sccn,
+ virt=virt)
-# we expect only one RASD record to be returned for each device that is used to
-# query with the Xen_SettingsDefineState association.
+ # we expect only one RASD record to be returned for each device that is used
to
+ # query with the Xen_SettingsDefineState association.
if len(assoc_info) != 1:
logger.error("%s returned %i %s objects" % (an,
len(assoc_info), cn))
status = FAIL
@@ -251,13 +252,13 @@ def get_SDS_verify_RASD_build_vssdc_inpu
index = (len(assoc_info) - 1)
rasd = rasd_values[cn]
CCName = assoc_info[index].classname
- if CCName == 'Xen_ProcResourceAllocationSettingData':
+ if CCName == prasd:
status = verify_procrasd_values(assoc_info[index], rasd)
- elif CCName == 'Xen_NetResourceAllocationSettingData':
+ elif CCName == nrasd:
status = verify_netrasd_values(assoc_info[index], rasd)
- elif CCName == 'Xen_DiskResourceAllocationSettingData':
+ elif CCName == drasd:
status = verify_diskrasd_values(assoc_info[index], rasd)
- elif CCName == 'Xen_MemResourceAllocationSettingData':
+ elif CCName == mrasd:
status = verify_memrasd_values(assoc_info[index], rasd)
else:
status = FAIL
@@ -283,9 +284,9 @@ def verify_fields(an, field_name, vssd_c
def verify_VSSD_values(assoc_info, vssd_values, an, qcn):
-# We expect that Xen_VirtualSystemSettingDataComponent returns only one
-# Xen_VirtualSystemSettingData object when queried with disk, processor,
-# network and memory rasd's and all of them return the same output.
+ # We expect that Xen_VirtualSystemSettingDataComponent returns only one
+ # Xen_VirtualSystemSettingData object when queried with disk, processor,
+ # network and memory rasd's and all of them return the same output.
exp_len = 1
if check_len(an, assoc_info, qcn, exp_len) != PASS:
return FAIL
@@ -301,8 +302,8 @@ def verify_VSSD_values(assoc_info, vssd_
if verify_fields(an, 'VirtualSystemType', vssd_assoc, vssd_values) != PASS:
return FAIL
if vssd_assoc.classname != vssd_values['Classname']:
- vssd_sds_err(an, 'Classname', vssd_assoc.classname, \
- vssd_values['Classname'])
+ vssd_sds_err(an, 'Classname', vssd_assoc.classname,
+ vssd_values['Classname'])
return FAIL
return PASS
@@ -327,60 +328,56 @@ def main():
def main():
server = main.options.ip
virt = main.options.virt
- status, vsxml = setup_env(server, virt)
+ if virt == 'Xen':
+ test_disk = "xvda"
+ else:
+ test_disk = "hda"
+
+ status, vsxml = setup_env(server, virt, test_disk)
if status != PASS:
return status
- cs_enum = computersystem.enumerate(server)
- if len(cs_enum) == 0:
+ status, cs_dom = poll_for_state_change(server, virt, test_dom, 2,
+ timeout=10)
+ if status != PASS and cs_dom.RequestedState != 0:
vsxml.destroy(server)
- return status
- cn = cs_enum[0].CreationClassName
- status, cs_dom = get_inst_from_list(server,
- vsxml,
- cn,
- cs_enum,
- test_dom)
- if status != PASS:
- vsxml.destroy(server)
- return status
+ return FAIL
-# Creating the cs info list which will be used later for comparison.
+ # Creating the cs info list which will be used later for comparison.
cs_values = cs_init_list(cs_dom)
- if cs_values['EnabledState'] != 2 :
- logger.error("Improper EnabledState value set for domain %s",
test_dom)
- logger.error("Should have been 2 instead of %s",
cs_values['EnabledState'])
- vsxml.destroy(server)
- return FAIL
cn = cs_dom.CreationClassName
- an = 'Xen_SystemDevice'
+ an = get_typed_class(virt, 'SystemDevice')
qcn = 'Logical Devices'
name = test_dom
- status, sd_assoc_info = get_associatornames_info(server, vsxml,
+ status, sd_assoc_info = get_associatornames_info(server, virt, vsxml,
cn, an, qcn, name)
if status != PASS or len(sd_assoc_info) == 0:
return status
+
status, in_vssdc_list = get_SDS_verify_RASD_build_vssdc_input(server, virt,
vsxml, test_disk,
sd_assoc_info)
if status != PASS or len(in_vssdc_list) == 0 :
vsxml.destroy(server)
return status
-# Verifying that the in_vssdc_list contains 4 entries one each for mem rasd,
-# network rasd, processor rasd and disk rasd.
+
+ # Verifying that the in_vssdc_list contains 4 entries one each for mem rasd,
+ # network rasd, processor rasd and disk rasd.
exp_len = 4
if check_len(an, in_vssdc_list, qcn, exp_len) != PASS:
vsxml.destroy(server)
return FAIL
-# Get the vssd values which will be used for verifying the Xen_VirtualSystemSettingData
-# output from the Xen_VirtualSystemSettingDataComponent results.
+
+ # Get the vssd values which will be used for verifying the
+ # Xen_VirtualSystemSettingData output from the
+ # Xen_VirtualSystemSettingDataComponent results.
vssd_values = vssd_init_list(virt)
- an = 'Xen_VirtualSystemSettingDataComponent'
- qcn = 'Xen_VirtualSystemSettingData'
+ an = get_typed_class(virt, 'VirtualSystemSettingDataComponent')
+ qcn = get_typed_class(virt, 'VirtualSystemSettingData')
for cn, instid in sorted((in_vssdc_list.items())):
- status, vssd_assoc_info = get_associators_info(server, vsxml, cn, an, qcn,
- instid)
+ status, vssd_assoc_info = get_associators_info(server, virt, vsxml, cn,
+ an, qcn, instid)
if status != PASS or len(vssd_assoc_info) == 0:
break
status = verify_VSSD_values(vssd_assoc_info, vssd_values, an, qcn)
@@ -389,18 +386,22 @@ def main():
if status != PASS:
vsxml.destroy(server)
return status
-# Since the Xen_VirtualSystemSettingDataComponent returns similar output when queried
with
-# every RASD, we are taking the output of the last associtaion query as inputs for
-# querying Xen_SettingsDefineState.
+
+ # Since the Xen_VirtualSystemSettingDataComponent returns similar
+ # output when queried with every RASD, we are taking the output of
+ # the last associtaion query as inputs for
+ # querying Xen_SettingsDefineState.
cn = vssd_assoc_info[0].classname
- an = 'Xen_SettingsDefineState'
- qcn = 'Xen_ComputerSystem'
+ an = get_typed_class(virt, 'SettingsDefineState')
+ qcn = get_typed_class(virt, 'ComputerSystem')
instid = vssd_assoc_info[0]['InstanceID']
- status, cs_assoc_info = get_associators_info(server, vsxml, cn, an, qcn, instid)
+ status, cs_assoc_info = get_associators_info(server, virt, vsxml, cn,
+ an, qcn, instid)
if status != PASS or len(cs_assoc_info) == 0:
return status
-# verify the results of Xen_SettingsDefineState with the cs_values list that was
-# built using the output of the enumeration on Xen_ComputerSystem.
+
+ # verify the results of Xen_SettingsDefineState with the cs_values list that was
+ # built using the output of the enumeration on Xen_ComputerSystem.
status = verify_CS_values(cs_assoc_info, cs_values, an, qcn)
vsxml.destroy(server)
return status