+def get_cs_sysdev_info(server, virt, qcn, rasd_val):
+ sd_info={}
+ try:
+ cs_class = get_typed_class(virt, 'ComputerSystem')
+ keys = { 'Name' : test_dom, 'CreationClassName' : cs_class }
+ dom_cs = GetInstance(server, cs_class, keys)
+ if dom_cs.Name != test_dom:
+ raise Exception("Instance matching %s was not returned" %
test_dom)
+
+ an = get_typed_class(virt, 'SystemDevice')
+ sd_assoc = AssociatorNames(server, an, cs_class,
+ CreationClassName=cs_class,
+ Name=test_dom)
+ if len(sd_assoc) < 1:
+ raise Exception ("%s returned %d %s objects" \
+ % (an, len(sd_assoc), qcn))
Remove space between Exception and (.
+
+ status, sd_info = build_sd_info(sd_assoc, qcn, an, rasd_val)
+ if status != PASS:
+ raise Exception ("Failed to get SystemDevice info for: %s" \
+ % test_dom)
Remove space between Exception and (.
- status = FAIL
+ raise Exception("%s returned %d %s objects, Expected 1" \
+ % (an, len(assoc_info), cn))
+
+ assoc_val = assoc_info[0]
+ CCName = assoc_val.classname
+ exp_rasd = rasd_values[CCName]
+ if assoc_val['InstanceID'] != exp_rasd.InstanceID:
+ raise Exception ("Got %s instead of %s" \
+ % (assoc_val['InstanceID'],
+ exp_rasd.InstanceID))
Remove space between Exception and (.
+def get_vssd_info(server, virt, in_vssdc_list, qcn):
+ try:
+ # Get the vssd values which will be used for verifying the
+ # VSSD output from the VSSDC results.
+ if virt == "XenFV":
+ instIdval = "Xen:%s" % test_dom
+ else:
+ instIdval = "%s:%s" % (virt, test_dom)
+
+ vssd_class = get_typed_class(virt, 'VirtualSystemSettingData')
+ keys = { 'InstanceID' : instIdval }
+ vssd_values = GetInstance(server, vssd_class, keys)
+ if vssd_values.ElementName != test_dom:
+ raise Exception ("Instance matching %s was not returned" %
test_dom)
Remove space between Exception and (.
+
+ an = get_typed_class(virt, 'VirtualSystemSettingDataComponent')
+ for cn, instid in sorted((in_vssdc_list.items())):
+ status, vssd_assoc_info = get_associators_info(server, cn, an,
+ vssd_class,
+ instid)
if status != PASS:
- logger.error("Mistmatching RASD values" )
- break
- vs_name = assoc_info[index]['InstanceID']
- if vs_name.find(test_dom) >= 0:
- instid = assoc_info[index]['InstanceID']
- in_vssdc[CCName] = instid
- except Exception, detail:
- print_err(CIM_ERROR_ASSOCIATORS, detail, an)
- status = FAIL
- return status, in_vssdc
+ raise Exception ("Failed to get VSSD info")
Remove space between Exception and (.
+ status = verify_values(vssd_assoc_info, vssd_values, an, qcn)
+ if status != PASS:
+ raise Exception ("VSSD values verification error")
Remove space between Exception and (.
-def verify_fields(an, field_name, vssd_cs_assoc_info, vssd_cs_values):
- if vssd_cs_assoc_info[field_name] != vssd_cs_values[field_name]:
- vssd_sds_err(an, field_name, vssd_cs_assoc_info[field_name], \
- vssd_cs_values[field_name])
- return FAIL
- return PASS
+ except Exception, details:
+ logger.error("Exception details: %s", details)
+ return FAIL, vssd_assoc_info
+ return PASS, vssd_assoc_info
-def verify_VSSD_values(assoc_info, vssd_values, an, qcn):
- # We expect that VirtualSystemSettingDataComponent returns only one
- # VirtualSystemSettingData object when queried with disk, processor,
- # network and memory rasd's and all of them return the same output.
- exp_len = 1
+def verify_vssdc_assoc(server, virt, cs_class, vssd_assoc_info, dom_cs):
+ try:
+ # Since the VirtualSystemSettingDataComponent returns similar
+ # output when queried with every RASD, we are taking the output of
+ # the last associtaion query as inputs for
+ # querying SettingsDefineState.
+ cn = vssd_assoc_info[0].classname
+ an = get_typed_class(virt, 'SettingsDefineState')
+ instid = vssd_assoc_info[0]['InstanceID']
+ status, cs_assoc_info = get_associators_info(server, cn, an,
+ cs_class, instid)
+ if status != PASS:
+ raise Exception ("Failed to get assoc info for dom: %s", test_dom)
Remove space between Exception and (.
+ status, dom_cs, sd_info = get_cs_sysdev_info(server, virt,
+ qcn, rasd_val)
+ if status != PASS:
+ raise Exception ("Failed to get SystemDevice information")
Remove space between Exception and (.
+ status, sds_info = get_sds_info(server, virt, cs_class,
rasd_val,
+ sd_info, qcn)
+ if status != PASS:
+ raise Exception ("Failed to get SetingDefineState information")
Remove space between Exception and (.
+ status, vssd_assoc_info = get_vssd_info(server, virt,
sds_info, qcn)
if status != PASS:
- break
- if status != PASS:
- vsxml.destroy(server)
- return status
+ raise Exception ("Failed to get VSSD information")
Remove space between Exception and (.
+ status = verify_vssdc_assoc(server, virt, cs_class,
+ vssd_assoc_info, dom_cs)
- # verify the results of SettingsDefineState with the cs_values list that was
- # built using the output of the enumeration on ComputerSystem.
- status = verify_CS_values(cs_assoc_info, cs_values, an, qcn)
+ except Exception, details:
+ logger.error("Exception details is %s", details)
+ status = FAIL
+
vsxml.destroy(server)
This should be cim_destroy(). Otherwise, I think this looks much easier
to read. Thanks for overhauling this test!
--
Kaitlin Rupert
IBM Linux Technology Center
kaitlin(a)linux.vnet.ibm.com