[PATCH] [TEST] Fixing and updating 02_reverse.py of HostedDependency to work with sblim-base-provider

# HG changeset patch # User Deepti B. Kalakeri <deeptik@linux.vnet.ibm.com> # Date 1222777504 25200 # Node ID 74c27c6878537864db0d9a2f37dcfc826abffa5b # Parent 52f8b84c5bc6c3665b434b18707e2debbc0c0bff [TEST] Fixing and updating 02_reverse.py of HostedDependency to work with sblim-base-provider. 1) Updated the tc to work with/without sblim-base-provider. 2) Updated the tc to use cim_define(). 3) Updated call_request_state_change() to start the domain. 3) Included the bug no 00007. 4) Used get_host_info() for getting the host information. Tested with Xen, XenFV, KVM on current sources and with/without sblim-base-provider installed. Signed-off-by: Deepti B. Kalakeri <deeptik@linux.vnet.ibm.com> diff -r 52f8b84c5bc6 -r 74c27c687853 suites/libvirt-cim/cimtest/HostedDependency/02_reverse.py --- a/suites/libvirt-cim/cimtest/HostedDependency/02_reverse.py Tue Sep 30 05:06:02 2008 -0700 +++ b/suites/libvirt-cim/cimtest/HostedDependency/02_reverse.py Tue Sep 30 05:25:04 2008 -0700 @@ -29,7 +29,7 @@ # Example cli command is # wbemcli ain -ac Xen_HostedDependency # 'http://localhost:5988/root/virt: -# Xen_HostSystem.CreationClassName="Xen_HostSystem",Name="mx3650b.in.ibm.com"' +# Xen_HostSystem.CreationClassName="Xen_HostSystem",Name="3650b"' # # For which we get the following output # localhost:5988/root/virt:Xen_ComputerSystem. @@ -48,41 +48,50 @@ from XenKvmLib.classes import get_class_ from XenKvmLib.classes import get_class_basename from CimTest.Globals import logger from XenKvmLib.const import do_main -from CimTest.ReturnCodes import PASS, FAIL +from CimTest.ReturnCodes import PASS, FAIL, XFAIL_RC +from XenKvmLib.common_util import get_host_info, call_request_state_change sup_types = ['Xen', 'KVM', 'XenFV', 'LXC'] test_dom = "hd_domain" test_mac = "00:11:22:33:44:55" +TIME = "00000000000000.000000:000" +bug_sblim = "00007" @do_main(sup_types) def main(): options = main.options + virt = options.virt + server = options.ip status = PASS - virtxml = vxml.get_class(options.virt) - if options.virt == "LXC": + virtxml = vxml.get_class(virt) + if virt == "LXC": cxml = virtxml(test_dom) else: cxml = virtxml(test_dom, mac = test_mac) - ret = cxml.create(options.ip) + ret = cxml.cim_define(server) if not ret: - logger.error("ERROR: Failed to Create the dom: %s" % test_dom) - status = FAIL - return status - keys = ['Name', 'CreationClassName'] + logger.error("Failed to define the dom: %s" % test_dom) + return FAIL + + rc = call_request_state_change(test_dom, server, 2, TIME, virt) + if rc != 0: + logger.error("Failed to start the dom: %s" % test_dom) + cxml.undefine(server) + return FAIL + try: - host_sys = enumclass.enumerate(options.ip, 'HostSystem', keys, options.virt) - if host_sys[0].Name == "": - raise Exception("HostName seems to be empty") - else: - # Instance of the HostSystem - host_sys = host_sys[0] + status, host_name, host_ccn = get_host_info(server, virt) + if status != PASS: + cxml.destroy(server) + cxml.undefine(server) + return status keys = ['Name', 'CreationClassName'] - cs = enumclass.enumerate(options.ip, 'ComputerSystem', keys, options.virt) - if options.virt == 'Xen' or options.virt == 'XenFV': + cs = enumclass.enumerate(server, 'ComputerSystem', keys, virt) + if virt == 'Xen' or options.virt == 'XenFV': # Xen honors additional domain-0 cs_list_len = 2 else: @@ -94,19 +103,27 @@ def main(): # ComputerSystem.EnumerateInstances() cs_names = [x.name for x in cs] + if host_ccn != 'Linux_ComputerSystem': + hs_ccn = get_class_basename(host_ccn) + else: + hs_ccn = host_ccn + # Get a list of ComputerSystem instances from the HostSystem instace - host_ccn = host_sys.CreationClassName - systems = assoc.AssociatorNames(options.ip, "HostedDependency", - get_class_basename(host_ccn), - options.virt, + systems = assoc.AssociatorNames(server, "HostedDependency", + hs_ccn, virt, CreationClassName=host_ccn, - Name=host_sys.Name) + Name=host_name) + # Compare each returned instance to make sure it's in the list # that ComputerSystem.EnumerateInstances() returned if len(systems) < 1: - raise Exception("HostedDependency returned %d, expected at least 1" % - len(systems)) + logger.error("HostedDependency returned %d, expected at least 1", + len(systems)) + cxml.destroy(server) + cxml.undefine(server) + return XFAIL_RC(bug_sblim) + ccn = cs[0].CreationClassName for guest in systems: @@ -119,7 +136,7 @@ def main(): # checking the CreationClassName returned is Xen_ComputerSystem if ccn != guest["CreationClassName"]: - logger.error("ERROR: CreationClassName does not match") + logger.error("CreationClassName does not match") status = FAIL # Go through anything remaining in the @@ -131,15 +148,12 @@ def main(): guest["Name"]) status = FAIL - except (UnboundLocalError, NameError), detail: - logger.error("Exception: %s" % detail) - except Exception, detail: - logger.error(detail) + logger.error("Exception: %s", detail) status = FAIL - cxml.destroy(options.ip) - cxml.undefine(options.ip) + cxml.destroy(server) + cxml.undefine(server) return status if __name__ == "__main__":

- virtxml = vxml.get_class(options.virt) - if options.virt == "LXC": + virtxml = vxml.get_class(virt) + if virt == "LXC": cxml = virtxml(test_dom) else: cxml = virtxml(test_dom, mac = test_mac) - ret = cxml.create(options.ip)
+ ret = cxml.cim_define(server) if not ret: - logger.error("ERROR: Failed to Create the dom: %s" % test_dom) - status = FAIL - return status - keys = ['Name', 'CreationClassName'] + logger.error("Failed to define the dom: %s" % test_dom) + return FAIL + + rc = call_request_state_change(test_dom, server, 2, TIME, virt) + if rc != 0: + logger.error("Failed to start the dom: %s" % test_dom) + cxml.undefine(server) + return FAIL
What we really want to do here is implement cim_start(). You're welcome to leave this as is, but eventually we'll need to replace this (and the cxml.start() calls) with a cim_start() call. This will be more uniform than using cim_define() to define a guest and then using a non-vxml related function to change the guest's state. But cim_start() (or cim_state_change(), whichever way you think is best) can be added at some later time. -- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com

Kaitlin Rupert wrote:
- virtxml = vxml.get_class(options.virt) - if options.virt == "LXC": + virtxml = vxml.get_class(virt) + if virt == "LXC": cxml = virtxml(test_dom) else: cxml = virtxml(test_dom, mac = test_mac) - ret = cxml.create(options.ip)
+ ret = cxml.cim_define(server) if not ret: - logger.error("ERROR: Failed to Create the dom: %s" % test_dom) - status = FAIL - return status - keys = ['Name', 'CreationClassName'] + logger.error("Failed to define the dom: %s" % test_dom) + return FAIL + + rc = call_request_state_change(test_dom, server, 2, TIME, virt) + if rc != 0: + logger.error("Failed to start the dom: %s" % test_dom) + cxml.undefine(server) + return FAIL
What we really want to do here is implement cim_start(). You're welcome to leave this as is, but eventually we'll need to replace this (and the cxml.start() calls) with a cim_start() call.
This will be more uniform than using cim_define() to define a guest and then using a non-vxml related function to change the guest's state. But cim_start() (or cim_state_change(), whichever way you think is best) can be added at some later time.
I will modify these to use the cim_start in the next iterations, as I would like to spend time in completing to support the tc to work with the SBLIM changes. Thanks and Regards, Deepti.

What we really want to do here is implement cim_start(). You're welcome to leave this as is, but eventually we'll need to replace this (and the cxml.start() calls) with a cim_start() call.
This will be more uniform than using cim_define() to define a guest and then using a non-vxml related function to change the guest's state. But cim_start() (or cim_state_change(), whichever way you think is best) can be added at some later time.
I will modify these to use the cim_start in the next iterations, as I would like to spend time in completing to support the tc to work with the SBLIM changes.
Yep, that's fine by me. =) -- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com
participants (3)
-
Deepti B Kalakeri
-
Deepti B. Kalakeri
-
Kaitlin Rupert