[Libvirt-cim] [PATCH 1 of 3] [TEST] Add new enumerate infrastructure

Guo Lian Yun yunguol at cn.ibm.com
Tue Oct 7 03:10:56 UTC 2008


+1 from me for the patch set =)


libvirt-cim-bounces at redhat.com wrote on 2008-10-07 05:56:28:

> # HG changeset patch
> # User Kaitlin Rupert <karupert at us.ibm.com>
> # Date 1223330027 25200
> # Node ID 66508277e8139993c9fb8bcc0368a77f8f597052
> # Parent  311bf6eda3786eb8e47ede06c4da6dc1570aff61
> [TEST] Add new enumerate infrastructure...
> 
> CIM_CimtestClass, EnumNames, EnumInstances, and GetInstance will 
> replace the existing CIM_MyClass, enumerate, enumerate_inst, and 
> getInstance.  Since there are a lot of tests to change, the original
> infrastructure is left in place.  This should be removed once the 
> tests are updated to use the new infrastructure.
> 
> There's a few problems with the existing infrastructure.  These 
> replacesments aim to remove these issues:
> 
> -A new classes require an entry in enumclass.py for each virt type. 
> These changes remove the requirement.
> 
> -A key_list is a necessary parameter to the enumerate calls.  This 
> goes against the extrinsic API definitions - the CIM API does not 
> include an equivallent paremeter for the enumerate calls.
> 
> -The enumerate() call currently takes a base classname, and a virt 
> type.  Really, the just the classname (complete with prefix) should 
> be passed in.  This way, SBLIM classes are supported in a more natrual 
way.
> 
> Signed-off-by: Kaitlin Rupert <karupert at us.ibm.com>
> 
> diff -r 311bf6eda378 -r 66508277e813 suites/libvirt-
> cim/lib/XenKvmLib/enumclass.py
> --- a/suites/libvirt-cim/lib/XenKvmLib/enumclass.py   Sun Oct 05 23:
> 56:40 2008 -0700
> +++ b/suites/libvirt-cim/lib/XenKvmLib/enumclass.py   Mon Oct 06 14:
> 53:47 2008 -0700
> @@ -28,6 +28,8 @@
>  from XenKvmLib.devices import CIM_Instance
>  from XenKvmLib.classes import get_typed_class
>  from CimTest import Globals, CimExt
> +from VirtLib import utils
> +from CimTest.Globals import logger
> 
>  class CIM_MyClass(CIM_Instance):
>      def __init__(self, server, keys):
> @@ -405,3 +407,86 @@
>          return None 
> 
>      return inst
> +
> +class CIM_CimtestClass(CIM_Instance):
> +    def __init__(self, host, ref):
> +
> +        conn = pywbem.WBEMConnection('http://%s' % host,
> +                                     (Globals.CIM_USER, 
Globals.CIM_PASS),
> +                                     Globals.CIM_NS)
> +        try:
> +            inst = conn.GetInstance(ref)
> +        except pywbem.CIMError, arg:
> +            raise arg
> +
> +        self.conn = conn
> +        self.inst = inst
> +        self.ref = ref
> +
> +        CIM_Instance.__init__(self, inst)
> +
> +    def __invoke(self, method, params):
> +        try:
> +            return self.conn.InvokeMethod(method,
> +                                          self.ref,
> +                                          **params)
> +        except pywbem.CIMError, arg:
> +            print 'InvokeMethod(%s): %s' % (method, arg[1])
> +            raise
> +
> +    def __getattr__(self, attr):
> +        if self.inst.has_key(attr):
> +            return self.inst[attr]
> +        else:
> +            return CimExt._Method(self.__invoke, attr)
> +
> +def EnumNames(host, cn):
> +    '''Resolve the enumeration given the @cn.
> +    Return a list of CIMInstanceName objects.'''
> +
> +    conn = pywbem.WBEMConnection('http://%s' % host,
> +                                 (Globals.CIM_USER, Globals.CIM_PASS),
> +                                 Globals.CIM_NS)
> +
> +    names = []
> +
> +    try:
> +        names = conn.EnumerateInstanceNames(cn)
> +    except pywbem.CIMError, arg:
> +        print arg[1]
> +        return names
> +
> +    return names
> +
> +def EnumInstances(host, cn):
> +    '''Resolve the enumeration given the @cn.
> +    Return a list of CIMInstance objects.'''
> +
> +    refs = []
> +
> +    try:
> +        refs = EnumNames(host, cn)
> +    except pywbem.CIMError, arg:
> +        print arg[1]
> +
> +    list = []
> +
> +    for name in refs:
> +        list.append(CIM_CimtestClass(host, name))
> + 
> +    return list
> +
> +def GetInstance(host, cn, keys):
> +    '''Resolve the enumeration given the @cn.
> +    Return a list of CIMInstance objects.'''
> +
> +    ref = CIMInstanceName(cn, keybindings=keys)
> +    inst = None 
> +
> +    try:
> +        inst = CIM_CimtestClass(host, ref)
> +    except pywbem.CIMError, arg:
> +        print arg[1]
> +
> +    return inst 
> +
> 
> _______________________________________________
> 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/20081007/9a639d66/attachment.htm>


More information about the Libvirt-cim mailing list