Hi Johan,

We can use unmarshalNullArray from saAis.


def get_error_strings(ccb_handle):
     ''' Returns the current error strings '''

     c_strings = POINTER(saAis.SaStringT)()

     saImmOmCcbGetErrorStrings(ccb_handle, c_strings)

     return unmarshalNullArray(c_strings)


Best Regards,

Hung Nguyen - DEK Technologies


--------------------------------------------------------------------------------
From: Johan Martensson [email protected]
Sent: Tuesday, September 29, 2015 8:23PM
To: Hans Nordeback, Mathivanan Naickan, Hung Nguyen, Srikanth Revanuru
     [email protected], [email protected], 
[email protected], [email protected]
Cc: Opensaf-devel
     [email protected]
Subject: [PATCH 1 of 1] pyosaf: Add function to immom utils to get error 
strings [#1506]


  python/pyosaf/utils/immom/__init__.py |  24 +++++++++++++++++++++++-
  1 files changed, 23 insertions(+), 1 deletions(-)


Add convenience function to immom utils to get error strings without handling 
marshalling of ctypes.

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
@@ -21,7 +21,7 @@
  
  import os
  import time
-from ctypes import pointer
+from ctypes import pointer, POINTER, cast, c_char_p
  
  from pyosaf import saAis
  from pyosaf.saAis import eSaAisErrorT, SaVersionT, SaNameT, unmarshalNullArray
@@ -65,6 +65,7 @@ saImmOmCcbObjectDelete    = decorate(saI
  saImmOmCcbObjectModify_2  = decorate(saImmOm.saImmOmCcbObjectModify_2)
  saImmOmCcbApply           = decorate(saImmOm.saImmOmCcbApply)
  saImmOmCcbFinalize        = decorate(saImmOm.saImmOmCcbFinalize)
+saImmOmCcbGetErrorStrings = decorate(saImmOm.saImmOmCcbGetErrorStrings)
  saImmOmAdminOperationInvoke_2 = 
decorate(saImmOm.saImmOmAdminOperationInvoke_2)
  saImmOmAdminOperationInvokeAsync_2 = 
decorate(saImmOm.saImmOmAdminOperationInvokeAsync_2)
  saImmOmAdminOperationContinue = 
decorate(saImmOm.saImmOmAdminOperationContinue)
@@ -174,3 +175,24 @@ def admin_op_invoke(dn, op_id, params=No
          raise SafException(retval.value)
  
      error = saImmOmAdminOwnerFinalize(owner_handle)
+
+
+def get_error_strings(ccb_handle):
+    ''' Returns the current error strings '''
+
+    c_strings = POINTER(saAis.SaStringT)()
+
+    saImmOmCcbGetErrorStrings(ccb_handle, c_strings)
+
+    strings = []
+
+    if c_strings:
+
+        for c_string in c_strings:
+
+            if c_string:
+                strings.append(cast(c_string, c_char_p).value)
+            else:
+                break
+
+    return strings



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

Reply via email to