[Libvirt-cim] [PATCH 1 of 3] [TEST] #2 Add get_default_rasds() and get_rasd_templates() to rasd.py

Kaitlin Rupert kaitlin at linux.vnet.ibm.com
Thu Oct 16 03:59:22 UTC 2008


# HG changeset patch
# User Kaitlin Rupert <karupert at us.ibm.com>
# Date 1223515128 25200
# Node ID bbd83da2f0f6bc96ec47025dda3f4f42c095ab86
# Parent  cfc2c9d1212d80b4ee2ddf37c5e9398b4e349b26
[TEST] #2 Add get_default_rasds() and get_rasd_templates() to rasd.py

NOTE:  This patch only works with recent versions of pywbem (svn checkout of 09/04/2008 or later).

These functions can be used to get the template RASD instances.  Instead of building instances by hand (see default_vssd_rasd_str()), the test cases should be using the template RASDs provided by the SettingsDefineCapabilities association.

get_rasd_templates() - returns the min, max, increment, and default template RASD instances for a given AllocationCapabilities instance.

get_default_rasds() - returns just the default template RASD instances for the resource pools.

Add inst_to_mof() to convert instances to mof format.  This is only needed for libcmpiutil version 0.4 and older.

Add get_default_rasd_mofs() - returns default template RASDs in mof format.

Updates:
  -Change if/elif in inst_to_mof() to a single if.

Signed-off-by: Kaitlin Rupert <karupert at us.ibm.com>

diff -r cfc2c9d1212d -r bbd83da2f0f6 suites/libvirt-cim/lib/XenKvmLib/classes.py
--- a/suites/libvirt-cim/lib/XenKvmLib/classes.py	Wed Oct 15 05:57:17 2008 -0700
+++ b/suites/libvirt-cim/lib/XenKvmLib/classes.py	Wed Oct 08 18:18:48 2008 -0700
@@ -44,3 +44,16 @@
 
     return cn[dash_index+1:]
 
+#FIXME This function is only needed for libcmpiutil versions 0.4 and later.
+#Once version 0.4 is obsolete, this function should be removed.
+def inst_to_mof(inst):
+    mof_str = inst.tomof()
+
+    mof_inst = ""
+
+    for str in mof_str.splitlines():
+        if str.endswith('{') or str.endswith('};') or not str.endswith('NULL;'):
+            mof_inst += "%s\n" % str
+
+    return mof_inst
+
diff -r cfc2c9d1212d -r bbd83da2f0f6 suites/libvirt-cim/lib/XenKvmLib/rasd.py
--- a/suites/libvirt-cim/lib/XenKvmLib/rasd.py	Wed Oct 15 05:57:17 2008 -0700
+++ b/suites/libvirt-cim/lib/XenKvmLib/rasd.py	Wed Oct 08 18:18:48 2008 -0700
@@ -24,8 +24,11 @@
 from CimTest.Globals import logger
 from CimTest.ReturnCodes import FAIL, PASS
 from XenKvmLib import vxml
-from XenKvmLib.classes import get_typed_class
-
+from XenKvmLib import const
+from XenKvmLib.classes import get_typed_class, get_class_type
+from XenKvmLib.enumclass import GetInstance
+from XenKvmLib.assoc import Associators 
+from XenKvmLib.const import default_pool_name, default_network_name 
 
 pasd_cn = 'ProcResourceAllocationSettingData'
 nasd_cn = 'NetResourceAllocationSettingData'
@@ -165,3 +168,63 @@
                       memrasd_list['VirtualQuantity'])
         status = FAIL 
     return status
+
+def get_rasd_templates(host_ip, type, pool_id):
+    ac_cn = get_typed_class(type, "AllocationCapabilities")
+    an_cn = get_typed_class(type, "SettingsDefineCapabilities")
+
+    templates = []
+
+    try:
+        key_list = {"InstanceID" : pool_id }
+
+        inst = GetInstance(host_ip, ac_cn, key_list)
+
+        temps = Associators(host_ip, an_cn, ac_cn, InstanceID=inst.InstanceID)
+
+        for temp in temps:
+            templates.append(temp)
+
+    except Exception, detail:
+        logger.error("Exception: %s", detail)
+
+    return templates
+
+def get_default_rasds(host_ip, type):
+    ac_id_list = [ "MemoryPool/0", 
+                   "DiskPool/%s" % default_pool_name, 
+                 ]
+
+    if type == "LXC":
+        if const.LXC_netns_support is True:
+            ac_id_list.append("NetworkPool/%s" % default_network_name)
+    else:
+            ac_id_list.append("NetworkPool/%s" % default_network_name)
+            ac_id_list.append("ProcessorPool/0")
+
+    templates = [] 
+    
+    for id in ac_id_list:
+        rasd_list = get_rasd_templates(host_ip, type, id)
+        if len(rasd_list) < 1:
+            logger.info("No RASD templates returned for %s", id)
+            return []
+
+        for rasd in rasd_list:
+            if rasd['InstanceID'] == "Default": 
+                templates.append(rasd)
+
+    return templates
+
+def get_default_rasd_mofs(host_ip, type):
+    rasds = get_default_rasds(ip, virt)
+
+    rasd_mofs = []
+
+    #FIXME for libcmpiutil versions 0.4 and later, inst_to_mof() is needed.
+    #This should be changed to rasd.tomof() once version 0.4 is obsolete.
+    for rasd in rasds:
+        rasd_mofs.append(inst_to_mof(rasd))
+
+    return rasd_mofs
+




More information about the Libvirt-cim mailing list