python/pyosaf/utils/immom/__init__.py |   4 ++
 python/samples/immadm                 |  54 +++++++++++-----------------------
 python/samples/immlist                |  47 +++++++++++------------------
 3 files changed, 39 insertions(+), 66 deletions(-)


Update the python sample applications to use immom utils instead of the direct 
IMM OM bindings.

Also fix immom.get() because the updates uncovered a fault when it's used to 
request only specific attributes. If the attributes requested don't include 
SaImmAttrClassName the function will fail since it's used to determine the 
class of the object.

diff --git a/python/pyosaf/utils/immom/__init__.py 
b/python/pyosaf/utils/immom/__init__.py
--- a/python/pyosaf/utils/immom/__init__.py
+++ b/python/pyosaf/utils/immom/__init__.py
@@ -83,6 +83,10 @@ def _initialize():
 def get(object_name, attr_name_list=None):
     ''' obtain values of some attributes of the specified object '''
 
+    # Always request the SaImmAttrClassName attribute
+    if attr_name_list and not 'SaImmAttrClassName' in attr_name_list:
+        attr_name_list.append('SaImmAttrClassName')
+
     attrib_names = [SaImmAttrNameT(a) for a in attr_name_list]\
         if attr_name_list else None
 
diff --git a/python/samples/immadm b/python/samples/immadm
--- a/python/samples/immadm
+++ b/python/samples/immadm
@@ -18,10 +18,10 @@
 
 from optparse import OptionParser
 from pyosaf import saImm
-from pyosaf.saImmOm import *
+from pyosaf.utils import immom
 from socket import gethostname
 from os import getpid
-from immbase import *
+from pyosaf.saAis import eSaAisErrorT, SaAisErrorT
 import json
 import sys
 
@@ -46,66 +46,46 @@ def parseArgs(cmd=sys.argv[1:]):
                        help='turn off pretty printing.',
                        action='store_true', default=False)
        (options, args) = parser.parse_args(cmd)
+
        if len(args) < 2:
                parser.print_help()
                sys.exit()
+
        return options, args
 
 def immadm(options, args):
+
        if len(args) < 2:
                raise SafException(eSaAisErrorT.SA_AIS_ERR_INIT)
-       opId = SaImmAdminOperationIdT(int(args[0]))
-       dn = SaNameT(args[1])
-       retVal = SaAisErrorT(eSaAisErrorT.SA_AIS_ERR_NOT_EXIST)
+
+        op_id  = int(args[0])
+        dn     = args[1]
+        retVal = SaAisErrorT(eSaAisErrorT.SA_AIS_OK)
 
        try:
-               immHandle = SaImmHandleT()
-               rc = saImmOmInitialize(immHandle, None, IMM_VERSION)
-               if rc != eSaAisErrorT.SA_AIS_OK:
-                       raise SafException(rc)
-
-               ownerName = SaImmAdminOwnerNameT(options.adminOwner)
-               ownerHandle = SaImmAdminOwnerHandleT()
-               rc = saImmOmAdminOwnerInitialize(immHandle,
-                               ownerName, eSaBoolT.SA_TRUE, ownerHandle) 
-               if rc != eSaAisErrorT.SA_AIS_OK:
-                       raise SafException(rc)
-
-               rc = saImmOmAdminOwnerSet(ownerHandle,
-                               [dn], saImm.eSaImmScopeT.SA_IMM_ONE)
-               if rc != eSaAisErrorT.SA_AIS_OK:
-                       raise SafException(rc)
-
                params = []
                for p in options.params:
                        (name, type, val) = p.split(':', 2)
                        ptype = eSaImmValueTypeT.lookup[type]
                        params.append(
                                SaImmAdminOperationParamsT_2(name, ptype, val))
-               contId = SaImmContinuationIdT()
-               rc = saImmOmAdminOperationInvoke_2(ownerHandle,
-                               dn, contId, opId, params, retVal,
-                               saAis.SA_TIME_ONE_SECOND*5)
-               if rc != eSaAisErrorT.SA_AIS_OK:
-                       raise SafException(rc)
+
+                immom.admin_op_invoke(dn, op_id, params=params)
+
        except SafException, e:
                if e.value != eSaAisErrorT.SA_AIS_ERR_NOT_EXIST:
                        raise e
-       finally:
-               saImmOmAdminOwnerRelease(ownerHandle,
-                               [dn], saImm.eSaImmScopeT.SA_IMM_ONE)
-               saImmOmAdminOwnerFinalize(ownerHandle)
-               saImmOmFinalize(immHandle)
 
-       return {'opId': opId.value,
-               'dname': args[1],
-               'owner': options.adminOwner,
+       return {'opId':   op_id,
+               'dname':  args[1],
+               'owner':  options.adminOwner,
                'params': options.params,
-               'rc': eSaAisErrorT.whatis(retVal.value)}
+               'rc':     eSaAisErrorT.whatis(retVal.value)}
 
 if __name__ == '__main__':
        (options, args) = parseArgs()
        result = immadm(options, args)
        logger = SafLogger(result['owner'])
        logger.log('ADMIN_CMD: OP_ID %(opId)s %(dname)s: %(rc)s' % result)
+
        print json.dumps(result, indent=None if options.ugly else 4)
diff --git a/python/samples/immlist b/python/samples/immlist
--- a/python/samples/immlist
+++ b/python/samples/immlist
@@ -16,8 +16,9 @@
 #
 ############################################################################
 
+from pyosaf import saImm
+from pyosaf.utils import immom
 from optparse import OptionParser
-from immbase import *
 import json
 import sys
 
@@ -42,36 +43,24 @@ class ListOptions(object):
                self.ugly = False
 
 def immlist(options, args):
-       try:
-               immHandle = SaImmHandleT()
-               rc = saImmOmInitialize(immHandle, None, IMM_VERSION)
-               if rc != eSaAisErrorT.SA_AIS_OK:
-                       raise SafException(rc)
+        objects = {}
 
-               accessorHandle = SaImmAccessorHandleT()
-               rc = saImmOmAccessorInitialize(immHandle, accessorHandle)
-               if rc != eSaAisErrorT.SA_AIS_OK:
-                       raise SafException(rc)
+        for dn in args:
+                obj = immom.get(dn, attr_name_list=options.attr)
 
-               objects = {}
-               attribNames = [SaImmAttrNameT(a) for a in options.attr]\
-                               if options.attr else None
-               attribs = pointer(pointer(SaImmAttrValuesT_2()))
-               for dn in args:
-                       rc = saImmOmAccessorGet_2(accessorHandle,
-                                       SaNameT(dn), attribNames, attribs)
-                       if rc == eSaAisErrorT.SA_AIS_ERR_NOT_EXIST:
-                               continue;
-                       if rc != eSaAisErrorT.SA_AIS_OK:
-                               raise SafException(rc)
-                       objects[dn] = SafObject(dn, attribs, options.numeric)
-       finally:
-               saImmOmAccessorFinalize(accessorHandle)
-               saImmOmFinalize(immHandle)
-       return objects
+                if obj:
+                        attributes = {}
+                        for name, value_pair in obj.attrs.iteritems():
+                                type_str = 
saImm.eSaImmValueTypeT.whatis(value_pair[0])
+                                value    = value_pair[1]
+
+                                attributes[name] = [type_str, value]
+
+                        objects[dn] = attributes
+
+        return objects
 
 if __name__ == '__main__':
        (options, args) = parseArgs()
-       print json.dumps(immlist(options, args),
-                       default=SafObject.serialize,
-                       indent=None if options.ugly else 4)
+        print json.dumps(immlist(options, args), 
+                         indent=None if options.ugly else 4)

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to