
+1 for me. Kaitlin Rupert wrote:
# HG changeset patch # User Kaitlin Rupert <karupert@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@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 +
_______________________________________________ Libvirt-cim mailing list Libvirt-cim@redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim