[Libvirt-cim] [PATCH] [TEST] Add tc to verify VSMS.RemoveResourceSettings() with correct resource
Guo Lian Yun
yunguol at cn.ibm.com
Fri Mar 13 07:38:19 UTC 2009
libvirt-cim-bounces at redhat.com wrote on 2009-03-12 06:07:19:
> yunguol at cn.ibm.com wrote:
> > # HG changeset patch
> > # User Guolian Yun <yunguol at cn.ibm.com>
> > # Date 1236759196 25200
> > # Node ID 0e350cf7bbab15c07d948976435ff4fe1b4ab597
> > # Parent a78b6f23ebaa8a38fa591e420d742aa03cd9e515
> > [TEST] Add tc to verify VSMS.RemoveResourceSettings() with correct
resource
> >
> >
> > This tc verify disk and network devices now, follow up patch will
> verify input and graphics devices
> >
> > Tested for KVM/Xen/XenFV with current sources and rpm
> >
> > Signed-off-by: Guolian Yun<yunguol at cn.ibm.com>
> >
> > diff -r a78b6f23ebaa -r 0e350cf7bbab suites/libvirt-
> cim/cimtest/VirtualSystemManagementService/16_removeresource.py
> > --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> > +++ b/suites/libvirt-
> cim/cimtest/VirtualSystemManagementService/16_removeresource.py
> Wed Mar 11 01:13:16 2009 -0700
> > @@ -0,0 +1,109 @@
> > +#!/usr/bin/python
> > +#
> > +# Copyright 2008 IBM Corp.
>
> Change date to 2009.
>
> > +
> > +import sys
> > +import pywbem
>
> Redundant import - this can be removed.
>
> > +import random
> > +from pywbem.cim_obj import CIMInstanceName
> > +from XenKvmLib import vsms
>
> Instead of importing the whole module, just import get_vsms_class().
>
> > +from XenKvmLib import vxml
>
> Instead of importing the whole module, just import get_class().
>
> > +from XenKvmLib.classes import get_typed_class
> > +from CimTest.Globals import logger
> > +from XenKvmLib.const import do_main, get_provider_version,
> default_network_name
> > +from CimTest.ReturnCodes import FAIL, PASS
> > +from XenKvmLib.common_util import create_netpool_conf,
destroy_netpool
> > +from XenKvmLib.xm_virt_util import get_bridge_from_network_xml
> > +
> > +sup_types = ['Xen', 'KVM', 'XenFV']
> > +default_dom = 'domain'
> > +libvirt_cim_dev_xml = 828
>
> This variable is a bit oddly named. Can you use something like
> rem_res_err_rev? Or something that is more descriptive of the actual
> changeset?
>
> > +ntype = 'network'
> > +nmac = '00:11:22:33:44:55'
> > +npool_name = default_network_name + str(random.randint(1, 100))
> > +
> > + at do_main(sup_types)
> > +def main():
> > + options = main.options
> > +
> > + if options.virt == 'KVM':
> > + nddev = 'hdb'
> > + else:
> > + nddev = 'xvdb'
> > +
> > + cxml = vxml.get_class(options.virt)(default_dom, disk=nddev,
mac=nmac)
> > + ret = cxml.cim_define(options.ip)
> > + if not ret:
> > + logger.error("Failed to define the dom: %s", default_dom)
> > + return FAIL
> > +
> > + drasd = get_typed_class(options.virt,
> 'DiskResourceAllocationSettingData')
> > + drasd_id = '%s/%s' % (default_dom, nddev)
> > + dkeys = {'InstanceID' : drasd_id}
> > +
> > + nrasd = get_typed_class(options.virt,
> 'NetResourceAllocationSettingData')
> > + nrasd_id = '%s/%s' % (default_dom, nmac)
> > + nkeys = {'InstanceID' : nrasd_id}
>
> Instead of hand building the instances for the resources, use the proper
> association calls to get the RASD instances. You know the guest, so
> you can use SystemDevice to get the resource instance, and then
> SettingsDefineState to get the RASD instances.
I'm working on a new patch to get the RASD instances by association.
But I can't remove "KVM_InputResourceAllocationSettingData" which output
the device "mouse:ps2" can not be found. Actually, I get it by
SettingsDefineState.
If I remove this device from the ResourceSettings, this method works for
me.
>
> > +
> > + status, net_name = create_netpool_conf(options.ip, options.virt,
> > + use_existing=False,
> > + net_name=npool_name)
>
> Why are you creating a network? The guest is created using the default
> network that already exists.
>
> > + if status != PASS:
> > + logger.error('Unable to create network pool')
> > + return FAIL
> > +
> > + dresource = CIMInstanceName(drasd, keybindings = dkeys)
> > + nresource = CIMInstanceName(nrasd, keybindings = nkeys)
> > +
> > + service = vsms.get_vsms_class(options.virt)(options.ip)
> > + try:
> > + service.
> RemoveResourceSettings(ResourceSettings=[dresource, nresource])
> > + except Exception, details:
> > + logger.error('Failed to remove % or %s', dresource,
nresource)
> > + logger.error(details)
> > + cxml.undefine(options.ip)
> > + destroy_netpool(options.ip, options.virt, net_name)
> > + return FAIL
> > +
> > + cxml.dumpxml(options.ip)
> > + disk = cxml.
> get_value_xpath('/domain/devices/disk/target/@dev[. = "%s"]'
> > + % nddev)
> > + if options.virt == 'KVM':
> > + net = cxml.get_value_xpath(
> > + '/domain/devices/interface/source/@network[. = "%s"]' %
nmac)
> > + else:
> > + br = get_bridge_from_network_xml(net_name, options.ip,
> options.virt)
> > + net = cxml.get_value_xpath(
> > + '/domain/devices/interface/source/@bridge[. = "%s"]' %
br)
>
> You are checking for the name of the pool you created - this isn't the
> same pool that was used to define the guest.
>
> > +
> > + curr_cim_rev, changeset = get_provider_version(options.virt,
> options.ip)
> > + if disk != None and net != None and curr_cim_rev >=
> libvirt_cim_dev_xml:
>
> This is actually a regression - the RemoveResources() call did work
> prior to changeset 779.
>
> So, you'll want to return an XFAIL if the revision is: 779 <= rev <=
828.
>
> Instead of checking disk and net in one if, break it up so that you can
> return an error message for each resource that fails:
>
> if disk != None:
> logger.error('The disk device was not removed successfully')
> if net != None:
> logger.error('The network device was not removed successfully')
>
> > + logger.error('The resource is not removerd successfully')
> > + cxml.undefine(options.ip)
> > + destroy_netpool(options.ip, options.virt, net_name)
> > + return FAIL
> > +
> > + cxml.undefine(options.ip)
> > + destroy_netpool(options.ip, options.virt, net_name)
> > + return PASS
> > +
>
> I would use exceptions so that you only need to call undefine() once.
>
> --
> Kaitlin Rupert
> IBM Linux Technology Center
> kaitlin at linux.vnet.ibm.com
>
> _______________________________________________
> Libvirt-cim mailing list
> Libvirt-cim at redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-cim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvirt-cim/attachments/20090313/d887b3b4/attachment.htm>
More information about the Libvirt-cim
mailing list