[Libvirt-cim] [PATCH 2 of 2] [TEST] Created reverse test (KVMRedirectionSAP -> HostSystem) test
Kaitlin Rupert
kaitlin at linux.vnet.ibm.com
Wed Jan 28 23:10:04 UTC 2009
> +from XenKvmLib.const import do_main, get_provider_version
You don't use get_provider_version, however - you probably should (and
on the other HAP test as well). Because these tests won't work with
older versions of the providers.
> +from XenKvmLib.rasd import enum_rasds
> +from XenKvmLib.common_util import parse_instance_id
> +from XenKvmLib.vsms import enumerate_instances
> +from XenKvmLib.test_doms import virdomid_list
These aren't used; they should be removed.
> +from XenKvmLib.common_util import get_host_info
> +from XenKvmLib.enumclass import EnumInstances
> +
> +sup_types = ['Xen', 'KVM', 'XenFV', 'LXC']
> +
> +test_dom = "domu1"
> +
> +def setup_env(server, virt):
> + if virt == 'Xen':
> + test_disk = 'xvda'
> + else:
> + test_disk = 'hda'
> + virt_xml = get_class(virt)
> + if virt == 'LXC':
> + cxml = virt_xml(test_dom)
> + else:
> + cxml = virt_xml(test_dom, disk = test_disk)
> +
> + ret = cxml.cim_define(server)
> + if not ret:
> + logger.error("Failed to Create the dom: %s", test_dom)
This should be "define" instead of "create" - there's a slight
difference between libvirt's notion of define and create, so it'd be
good to use "define" here.
> + return FAIL, cmxl
This should be cxml, not cmxl.
> +
> + status = cxml.cim_start(server)
> + if status != PASS:
> + logger.error("Unable start dom '%s'", test_dom)
> + cxml.undefine(server)
> + return status, cxml
> +
> + return PASS, cxml
> +
> +def enum_kvmrsaps(virt, ip):
> + kvmrsap_insts = {}
> +
> + try:
> + kvmrsap_cn = get_typed_class(virt, 'KVMRedirectionSAP')
> + enum_list = EnumInstances(ip, kvmrsap_cn)
> +
> + if enum_list < 1:
> + logger.error("No KVM Redirection SAP instances returned")
> + return kvmrsap_insts, FAIL
> +
> + for kvmrsap in enum_list:
> + if kvmrsap.Classname not in kvmrsap_insts.keys():
> + kvmrsap_insts[kvmrsap.Classname] = []
> + kvmrsap_insts[kvmrsap.Classname].append(kvmrsap)
All of the instances returned by EnunmInstances will have the same
classname. There's no need to build a dictionary.
This function isn't really necessary. Just call the EnumInstances()
call in get_kvmrsap_inst(). Then loop through the list returned by
EnumInstances() to kind the instance that corresponds to your guest.
> +
> + except Exception, details:
> + logger.error(details)
> + return kvmrsap_insts, FAIL
> +
> + return kvmrsap_insts, PASS
> +
> +def get_kvmrsap_inst(virt, ip, guest_name):
> + kvmrsap_inst = None
> +
> + kvmrsaps, status = enum_kvmrsaps(virt, ip)
> + if status != PASS:
> + logger.error("Get KVMRSAPs failed")
> + return kvmrsap_inst, status
> +
> + for kvmrsap_cn, kvmrsap_list in kvmrsaps.iteritems():
> + for kvmrsap in kvmrsap_list:
> + guest = kvmrsap.SystemName
> +
> + if guest == guest_name:
> + kvmrsap_inst = kvmrsap
You don't use the guest param for anything else, so you can just do:
if kvmrsap.SystemName == guest_name
> +
> + return kvmrsap_inst, PASS
You want to make sure the expected number of KVMRedirectionSAPs are
returned before returning from the function. If kvmrsap_inst is None,
return an error.
> +
> +def verify_host(enum_list, host_inst):
> + status = FAIL
> +
> + for item in enum_list:
> + if item.classname != host_inst.Classname:
> + print "Returned class name (%s) is not correct", item.classname
> + return status
> +
> + host = item.keybindings['Name']
> +
> + print "Iteration host name: ", host_inst.Name
Remove print statement.
> +
> + if host == host_inst.Name:
> + status = PASS
> + break
>
This function should verify all the properties of the instance. Take a
look at compare_all_prop() for this.
> +
> + return status
> +
> +
> + at do_main(sup_types)
> +def main():
> + options = main.options
> + status = FAIL
> + server = options.ip
> + virt = options.virt
> +
> + status, cxml = setup_env(options.ip, options.virt)
> + if status != PASS:
> + cxml.undefine(options.ip)
> + return status
> +
> + try:
> + status, host_inst = get_host_info(server, virt)
> + if status != PASS:
> + raise Exception("Failed to get host info.")
> +
> + kvmrsap_inst, status = get_kvmrsap_inst(options.virt, options.ip, test_dom)
This line needs to be 80 characters.
> + if status != PASS:
> + raise Exception("Unable to fetch kvmrsap instance (domain: %s)", test_dom)
This line needs to be 80 characters. Also, the format for Exception is
to use a % for args, not a comma:
raise Exception("Unable to fetch kvmrsap instance (domain: %s)" % test_dom)
--
Kaitlin Rupert
IBM Linux Technology Center
kaitlin at linux.vnet.ibm.com
More information about the Libvirt-cim
mailing list