python/samples/immadm | 78 +++++++++++++++++++------------------------------
python/samples/immlist | 51 ++++++++++++-------------------
2 files changed, 50 insertions(+), 79 deletions(-)
Update the Python IMM sample applications to use the immom utils bindings
instead of the direct C mappings.
diff --git a/python/samples/immadm b/python/samples/immadm
--- a/python/samples/immadm
+++ b/python/samples/immadm
@@ -18,19 +18,19 @@
from optparse import OptionParser
from pyosaf import saImm
-from pyosaf.saImmOm import *
+from pyosaf.utils import immom, SafException
from socket import gethostname
from os import getpid
-from immbase import *
+from pyosaf.saAis import eSaAisErrorT, SaAisErrorT
import json
import sys
from pyosaf.utils.log.logger import SafLogger
-def getExecName():
+def get_exec_name():
return ':'.join((gethostname(), sys.argv[0], str(getpid())))
-def parseArgs(cmd=sys.argv[1:]):
+def parse_args(cmd=sys.argv[1:]):
usage = 'usage: %prog [options] OP_ID object_dn'
epilog = '\nOP_ID: an integer, dependent on the class of object.\n'\
'\nTYPE: one of:\n%s\n' %
'\n'.join(saImm.eSaImmValueTypeT.lookup.keys())
@@ -38,7 +38,7 @@ def parseArgs(cmd=sys.argv[1:]):
parser = OptionParser(usage=usage, epilog=epilog)
parser.add_option('-a', '--admin-owner', dest='adminOwner',
help='Name denoting owner of the operation.',
- metavar='OWNERNAME', default=getExecName())
+ metavar='OWNERNAME', default=get_exec_name())
parser.add_option('-p', '--param', dest='params',
help='parameters to admin operation.',
metavar='NAME:TYPE:VAL', action='append', default=[])
@@ -46,66 +46,48 @@ 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]
+ ret_val = SaAisErrorT(eSaAisErrorT.SA_AIS_OK)
try:
- immHandle = SaImmHandleT()
- rc = saImmOmInitialize(immHandle, None, IMM_VERSION)
- if rc != eSaAisErrorT.SA_AIS_OK:
- raise SafException(rc)
+ params = []
+ for param in options.params:
+ (name, type, val) = param.split(':', 2)
+ ptype = saImm.eSaImmValueTypeT.lookup[type]
+ params.append(
+ saImm.SaImmAdminOperationParamsT_2(name,
+ ptype,
+ val))
- ownerName = SaImmAdminOwnerNameT(options.adminOwner)
- ownerHandle = SaImmAdminOwnerHandleT()
- rc = saImmOmAdminOwnerInitialize(immHandle,
- ownerName, eSaBoolT.SA_TRUE, ownerHandle)
- if rc != eSaAisErrorT.SA_AIS_OK:
- raise SafException(rc)
+ immom.admin_op_invoke(dn, op_id, params=params)
- rc = saImmOmAdminOwnerSet(ownerHandle,
- [dn], saImm.eSaImmScopeT.SA_IMM_ONE)
- if rc != eSaAisErrorT.SA_AIS_OK:
- raise SafException(rc)
+ except SafException as err:
+ if err.value != eSaAisErrorT.SA_AIS_ERR_NOT_EXIST:
+ raise err
- 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)
- 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(ret_val.value)}
if __name__ == '__main__':
- (options, args) = parseArgs()
+ (options, args) = parse_args()
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,12 +16,13 @@
#
############################################################################
+from pyosaf import saImm
+from pyosaf.utils import immom
from optparse import OptionParser
-from immbase import *
import json
import sys
-def parseArgs(cmd=sys.argv[1:]):
+def parse_args(cmd=sys.argv[1:]):
usage = 'usage: %prog [options] object_dn [object_dn ..]'
parser = OptionParser(usage)
parser.add_option('-a', '--attr', dest='attr',
@@ -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)
+ (options, args) = parse_args()
+ 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