+1 from me for the patch set =)
libvirt-cim-bounces(a)redhat.com wrote on 2008-10-07 05:56:28:
# HG changeset patch
# User Kaitlin Rupert <karupert(a)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(a)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(a)redhat.com
https://www.redhat.com/mailman/listinfo/libvirt-cim