libvirt-cim-bounces(a)redhat.com wrote on 2009-05-07 13:41:59:
> - logger.error("The execution should not have reached here!!")
> - return FAIL
> +
> + status = destroy_netpool(options.ip, options.virt,
test_pool[i])
> + if status != PASS:
> + logger.error("Unable to destroy networkpool %s",
test_pool[i])
> + status = FAIL
Should return here. Otherwise, if you're able to clean up the 2nd and
3rd pool, but not the first, the test will return PASS instead of FAIL.
> +
> + status = undefine_netpool(options.ip, options.virt,
test_pool[i])
> + if status != PASS:
> + logger.error("Unable to undefine networkpool %s",
test_pool[i])
> + status = FAIL
Same issue here.
> +
> + return status
> +
> if __name__ == "__main__":
> sys.exit(main())
> -
> diff -r 92caf252c2fa -r af273b2ad41c suites/libvirt-
cim/lib/XenKvmLib/pool.py
> --- a/suites/libvirt-cim/lib/XenKvmLib/pool.py Mon May 04 03:49:
32 2009 -0700
> +++ b/suites/libvirt-cim/lib/XenKvmLib/pool.py Wed May 06 21:48:
09 2009 -0700
> @@ -21,15 +21,21 @@
> #
>
> import sys
> -from CimTest.Globals import logger
> +from CimTest.Globals import logger, CIM_NS
> from CimTest.ReturnCodes import PASS, FAIL
> from XenKvmLib.classes import get_typed_class
> from XenKvmLib.const import get_provider_version, default_pool_name
> from XenKvmLib.enumclass import EnumInstances
> from VirtLib.utils import run_remote
> -from XenKvmLib.xm_virt_util import virt2uri
> +from XenKvmLib.xm_virt_util import virt2uri, net_list
> +from XenKvmLib import rpcs_service
> +from pywbem.cim_obj import CIMInstance, CIMInstanceName
> +import pywbem
>
> +cim_errno = pywbem.CIM_ERR_NOT_SUPPORTED
> +cim_mname = "CreateChildResourcePool"
> input_graphics_pool_rev = 757
> +libvirt_cim_child_pool_rev = 837
>
> def pool_cn_to_rasd_cn(pool_cn, virt):
> if pool_cn.find('ProcessorPool') >= 0:
> @@ -97,3 +103,94 @@
>
> return volume
>
> +def net_undefine(network, server, virt="Xen"):
> + """Function undefine a given virtual network"""
> +
> + cmd = "virsh -c %s net-undefine %s" % (virt2uri(virt), network)
> + ret, out = run_remote(server, cmd)
> +
> + return ret
> +
> +def undefine_netpool(server, virt, net_name):
> + if net_name == None:
> + return FAIL
> +
> + ret = net_undefine(net_name, server, virt)
> + if ret != 0:
> + logger.error("Failed to undefine Virtual Network '%s'",
net_name)
> + return FAIL
> +
> + return PASS
> +
> +def create_verify_netpool(server, virt, test_pool):
This is a long function. I would break this up so there is a function
for creating the network pool and different function for verifying.
> + elif curr_cim_rev >= libvirt_cim_child_pool_rev:
> + nprasd = get_typed_class(virt,
> + 'NetPoolResourceAllocationSettingData')
> + addr = "192.168.0.9"
> + n_list = net_list(server, virt)
> + for _net_name in n_list:
> + cmd = "virsh net-dumpxml %s | awk '/ip address/ {print}'
| \
> + cut -d ' ' -f 4 | sed
's/address=//'" % _net_name
> + s, in_use_addr = run_remote(server, cmd)
> + in_use_addr = in_use_addr.strip("'")
> + if in_use_addr == addr:
> + logger.error("IP address is in use by a
differentnetwork")
> + return FAIL
> + np_prop = {
> + "Address" : addr,
> + "Netmask" : "255.255.255.0",
> + "IPRangeStart" : "192.168.0.31",
> + "IPRangeEnd" : "192.168.0.57",
> + }
> + np_id = 'NetworkPool/%s' % test_pool
> + iname = CIMInstanceName(nprasd,
> + namespace = CIM_NS,
> + keybindings = {'InstanceID':np_id})
> + if test_pool == "routedpool":
> + np_prop["ForwardMode"] = "route eth1"
> + elif test_pool == "natpool":
> + np_prop["ForwardMode"] = "nat"
The template NetPoolRASDs are now available in the providers. It's
probably better to use those than to hand build the instances.
Kaitlin - I'm not sure if I quite understand you. Due to the network
break down,
all your response to this question on IRC is lost. I tried to send a new
patch
for these general functions. I have to log the discussion messages on
IRC next time=)
> +
> + nrasd = CIMInstance(nprasd, path = iname, properties =
np_prop)
> + try:
> + rpcs_conn.CreateChildResourcePool(ElementName=test_pool,
> + Settings=[nrasd.tomof()])
> + except Exception, details:
> + logger.error("Error in childpool creation")
> + logger.error(details)
> + return FAIL
> +
> + networkpool = get_typed_class(virt, 'NetworkPool')
> + pool_list = EnumInstances(server, networkpool)
> + if len(pool_list) < 1:
> + logger.error("Return %i instances, expected at least
one instance",
> + len(pool_list))
> + return FAIL
> +
> + for i in range(0, len(pool_list)):
> + ret_pool = pool_list[i].InstanceID
> + if ret_pool == np_id:
> + status = PASS
> + break
> + elif ret_pool != poolname and i == len(pool_list)-1:
> + logger.error("Can not find expected pool")
> + return FAIL
You only verify the InstanceID - you don't verify that the pool was
created as expected.
Ideally, this would also verify the NetPoolRASD that represents the
current configuration of the NetworkPool. But I haven't implemented
that piece yet.
> +
> + return status
>
--
Kaitlin Rupert
IBM Linux Technology Center
kaitlin(a)linux.vnet.ibm.com
_______________________________________________
Libvirt-cim mailing list
Libvirt-cim(a)redhat.com
https://www.redhat.com/mailman/listinfo/libvirt-cim