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

Deepti B Kalakeri deeptik at linux.vnet.ibm.com
Fri Oct 17 12:06:47 UTC 2008


+1 for me.

Kaitlin Rupert wrote:
> # 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
> +
>
> _______________________________________________
> Libvirt-cim mailing list
> Libvirt-cim at redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-cim
>   




More information about the Libvirt-cim mailing list