[Libvirt-cim] [PATCH] #2 [TEST] 31_unset_netrasd.py: new test for VirtualSystemManagementService
Chip Vincent
cvincent at linux.vnet.ibm.com
Thu Oct 13 12:19:48 UTC 2011
Sound reasonable. THanks,
Pushed.
On 10/12/2011 01:01 PM, Gareth S Bestor wrote:
>
> This fix is in tog-pegasus-2.12, so yes you probably have this bug in
> your version (unless its been patched)
>
> Ideally, the cimom type (sfcb vs pegasus) and version shouldn't matter
> in most instances, with the excpetion of perhaps actual *new* features,
> like reliable indications, embeeded instance support, etc... I think
> having a cimom check in the cimtest suites would be OK for such things.
> But I dont think adding explicit checks for what are ostensibly
> occasional bugs in a particular version of a particular packages is a
> path we really want to go down... (eg this bug popped up only in pegasus
> 2.10/2.11; this worked back in 2.9 days). Eduardo's testcase is valid;
> this is just a test that will fail when run against a particular version
> of (unpatched) pegasus. That should be noted somewhere, but I dont think
> we necessarily need to 'work around it'...
>
> just my $0.02
>
> - G
>
> Dr. Gareth S. Bestor
> IBM Senior Software Engineer
> Systems & Technology Group - Systems Management Standards
> 971-285-6375 (mobile)
> bestor at us.ibm.com
>
>
>
> *Re: [Libvirt-cim] [PATCH] #2 [TEST] 31_unset_netrasd.py: new test for
> VirtualSystemManagementService*
>
>
> *Chip Vincent * to: libvirt-cim
> 10/12/11 08:04 AM
>
>
> Sent by: *libvirt-cim-bounces at redhat.com*
>
>
> *Please respond to cvincent, List for discussion and development of
> libvirt CIM *
>
>
>
>
> ------------------------------------------------------------------------
>
>
>
> Using tog-pegasus-2.11.0-1, I see the following:
>
> --------------------------------------------------------------------
> VirtualSystemManagementService - 31_unset_netrasd.py: FAIL
> ERROR - Current 'virtio' and expected '' ResourceSubType differ
> --------------------------------------------------------------------
>
> Does this mean my pegasus version has the bug? If so, should we check
> the CIMOM version as part of this test?
>
> On 09/28/2011 09:41 AM, Eduardo Lima (Etrunko) wrote:
> >
> suites/libvirt-cim/cimtest/VirtualSystemManagementService/31_unset_netrasd.py
> | 193 ++++++++++
> > 1 files changed, 193 insertions(+), 0 deletions(-)
> >
> >
> > # HG changeset patch
> > # User Eduardo Lima (Etrunko)<eblima at br.ibm.com>
> > # Date 1317153134 10800
> > # Node ID eac4909ac68adc28cad9cb6389ea93a053b23aec
> > # Parent 83921669cae17a4f0a18bb440ebec01de1a3e691
> > [TEST] 31_unset_netrasd.py: new test for VirtualSystemManagementService
> >
> > This test case covers a recent bug found in Pegasus which makes
> impossible for
> > libvirt-cim to set a property values if the value is an empty string
> via a
> > ModifyResourceSettings call.
> >
> > Link to Pegasus bug follows:
> > http://bugzilla.openpegasus.org/show_bug.cgi?id=9053
> >
> > Signed-off-by: Eduardo Lima (Etrunko)<eblima at br.ibm.com>
> >
> > diff --git
> a/suites/libvirt-cim/cimtest/VirtualSystemManagementService/31_unset_netrasd.py
> b/suites/libvirt-cim/cimtest/VirtualSystemManagementService/31_unset_netrasd.py
> > new file mode 100755
> > --- /dev/null
> > +++
> b/suites/libvirt-cim/cimtest/VirtualSystemManagementService/31_unset_netrasd.py
> > @@ -0,0 +1,193 @@
> > +#!/usr/bin/env python
> > +
> > +#
> > +# Copyright 2011 IBM Corp.
> > +#
> > +# Authors:
> > +# Eduardo Lima (Etrunko)<eblima at br.ibm.com>
> > +#
> > +# This library is free software; you can redistribute it and/or
> > +# modify it under the terms of the GNU General Public
> > +# License as published by the Free Software Foundation; either
> > +# version 2.1 of the License, or (at your option) any later version.
> > +#
> > +# This library is distributed in the hope that it will be useful,
> > +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> > +# General Public License for more details.
> > +#
> > +# You should have received a copy of the GNU General Public
> > +# License along with this library; if not, write to the Free Software
> > +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
> 02111-1307 USA
> > +#
> > +
> > +#
> > +# ModifyResourceSettings call to set/unset NetRASD ResourceType property
> > +#
> > +
> > +import sys
> > +import pywbem
> > +
> > +from CimTest.ReturnCodes import PASS, FAIL
> > +from CimTest.Globals import logger, CIM_USER, CIM_PASS, CIM_NS
> > +from XenKvmLib.const import do_main
> > +from XenKvmLib.classes import get_typed_class
> > +from XenKvmLib.vxml import get_class
> > +
> > +supported = ['Xen', 'KVM', 'XenFV', 'LXC']
> > +domain = None
> > +
> > +class CIMDomain(object):
> > +
> > + def __init__(self, name, virt, server):
> > + self.name = name
> > + self.server = server
> > + self._domain = get_class(virt)(name)
> > + #__init__
> > +
> > + def define(self):
> > + return self._domain.cim_define(self.server)
> > + # define
> > +
> > + def undefine(self):
> > + return self._domain.undefine(self.server)
> > + # undefine
> > +
> > + def destroy(self):
> > + return self._domain.cim_destroy(self.server)
> > + #destroy
> > +# CIMDomain
> > +
> > +
> > +def resource_settings(inst, virt, resource_subtype):
> > + return """
> > +instance of %s {
> > + InstanceID="%s";
> > + ResourceType=%d;
> > + Address="%s";
> > + VirtualQuantityUnits="%s";
> > + NetworkType="%s";
> > + NetworkName="%s";
> > + ResourceSubType="%s";
> > +};""" % (get_typed_class(virt, "NetResourceAllocationSettingData"),
> > + inst["InstanceID"],
> > + inst["ResourceType"],
> > + inst["Address"],
> > + inst["VirtualQuantityUnits"],
> > + inst["NetworkType"],
> > + inst["NetworkName"],
> > + resource_subtype)
> > +# resource_settings()
> > +
> > +
> > + at do_main(supported)
> > +def main():
> > + # init
> > + options = main.options
> > + server = options.ip
> > + virt = options.virt
> > +
> > + server_url = "http://%s" % server
> > + cim = pywbem.WBEMConnection(server_url, (CIM_USER, CIM_PASS), CIM_NS)
> > +
> > + _class = get_typed_class(virt, "VirtualSystemManagementService")
> > + sys_mgmt_service = cim.EnumerateInstanceNames(_class)[0]
> > +
> > + # Create new domain
> > + global domain
> > + domain = CIMDomain("cimtest_unset_netrasd", virt, server)
> > + if not domain.define():
> > + logger.error("Error defining test domain")
> > + return FAIL
> > +
> > + # ein KVM_ComputerSystem
> > + _class = get_typed_class(virt, "ComputerSystem")
> > + computer_system_names = [i for i in
> cim.EnumerateInstanceNames(_class) if i["Name"] == domain.name]
> > +
> > + logger.info("ComputerSystem Names\n%s", computer_system_names)
> > +
> > + if not computer_system_names:
> > + logger.info("Host has no domains defined")
> > + return SKIP
> > +
> > + # ain -ac KVM_SystemDevice -arc KVM_NetworkPort<KVM_ComputerSytem Name>
> > + a_class = get_typed_class(virt, "SystemDevice")
> > + r_class = get_typed_class(virt, "NetworkPort")
> > + network_port_names = []
> > +
> > + for inst_name in computer_system_names:
> > + assoc_names = cim.AssociatorNames(inst_name, AssocClass=a_class,
> ResultClass=r_class)
> > + network_port_names.extend(assoc_names)
> > +
> > + logger.info("NetworkPort Names\n%s", network_port_names)
> > +
> > + if not network_port_names:
> > + logger.info("No NetworkPort instances returned")
> > + return XFAIL
> > +
> > + # ai -arc KVM_NetResourceAllocationSettingData<KVM_NetworkPort Name>
> > + r_class = get_typed_class(virt, "NetResourceAllocationSettingData")
> > + net_rasd_names = []
> > +
> > + for inst_name in network_port_names:
> > + assoc_names = cim.AssociatorNames(inst_name, ResultClass=r_class)
> > + net_rasd_names.extend(assoc_names)
> > +
> > + logger.info("NetRASD names\n%s", net_rasd_names)
> > +
> > + if not net_rasd_names:
> > + logger.info("No NetRASD instances returned")
> > + return XFAIL
> > +
> > + for subtype in ["virtio", "",]:
> > + logger.info("Setting ResourceSubType to '%s'", subtype)
> > +
> > + modified_net_rasd_names = []
> > +
> > + for inst_name in net_rasd_names:
> > + # Get current instance data
> > + inst = cim.GetInstance(inst_name)
> > + cur_id = inst["InstanceID"]
> > + cur_subtype = inst["ResourceSubType"]
> > + logger.info("Current ResourceSubType of %s: '%s'", cur_id, cur_subtype)
> > +
> > + # Invoke ModifyResourceSettings
> > + val = resource_settings(inst, virt, subtype)
> > + ret = cim.InvokeMethod("ModifyResourceSettings", sys_mgmt_service,
> **{"ResourceSettings": [val,],})
> > +
> > + if ret[0]:
> > + logger.error("ERROR Setting ResourceSubtype to '%s': %s", subtype, ret)
> > + return FAIL
> > +
> > + modified_net_rasd_names.extend(ret[1]["ResultingResourceSettings"])
> > +
> > + # Get modified instance data
> > + inst = cim.GetInstance(ret[1]["ResultingResourceSettings"][0])
> > + new_id = inst["InstanceID"]
> > + new_subtype = inst["ResourceSubType"]
> > +
> > + logger.info("Modified ResourceSubType of %s: '%s'", new_id,
> new_subtype)
> > +
> > + if cur_id != new_id:
> > + logger.error("Current '%s' and new '%s' InstanceID differ", cur_id,
> new_id)
> > + return FAIL
> > +
> > + if new_subtype != subtype:
> > + logger.error("Current '%s' and expected '%s' ResourceSubType
> differ", new_subtype, subtype)
> > + return FAIL
> > + # for inst_name...
> > +
> > + net_rasd_names = modified_net_rasd_names
> > + #for subtype...
> > +
> > + return PASS
> > +#main()
> > +
> > +if __name__ == "__main__":
> > + ret = main()
> > +
> > + if domain:
> > + domain.destroy()
> > + domain.undefine()
> > +
> > + sys.exit(ret)
> >
> > _______________________________________________
> > Libvirt-cim mailing list
> > Libvirt-cim at redhat.com
> > <http://%s/>https://www.redhat.com/mailman/listinfo/libvirt-cim
> >
>
> --
> Chip Vincent
> Open Virtualization
> IBM Linux Technology Center
> cvincent at linux.vnet.ibm.com
>
> _______________________________________________
> Libvirt-cim mailing list
> Libvirt-cim at redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-cim
>
--
Chip Vincent
Open Virtualization
IBM Linux Technology Center
cvincent at linux.vnet.ibm.com
More information about the Libvirt-cim
mailing list