Ack from me.
Not tested.

/AndersBj

-----Original Message-----
From: Johan Mårtensson O 
Sent: den 10 juli 2015 15:33
To: Hans Nordebäck; Anders Björnerstedt; [email protected]; Hung Nguyen D
Cc: [email protected]
Subject: [PATCH 1 of 1] pyosaf: Fix broken marshalling in 
saImmOiRtObjectUpdate_2 in saImmOi.py [#1411]

 python/pyosaf/saImmOi.py |  6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)


Fix the broken marshalling of attribute modifications in 
saImmOiRtObjectUpdate_2 in saImmOi.py. This fix can be verified by copy-paste 
of the code below into a Python shell:

from pyosaf.saAis import SaVersionT
from pyosaf.saImmOi import SaImmOiImplementerNameT from pyosaf.saImmOi import 
saImmOiImplementerSet from pyosaf.saImm import SaImmClassNameT from 
pyosaf.saImm import eSaImmValueTypeT from pyosaf.saImm import 
SaImmAttrModificationT_2 from pyosaf.saImm import eSaImmAttrModificationTypeT 
from pyosaf.saImm import SaImmAttrValuesT_2 from pyosaf.saImm import 
SaImmAttrNameT from pyosaf.utils.immom.ccb import marshal_c_array from 
pyosaf.saImmOi import SaImmOiHandleT from pyosaf.saImmOi import 
saImmOiInitialize_2 from pyosaf.saImmOi import saImmOiRtObjectUpdate_2 from 
pyosaf.saAis import SaNameT

version = SaVersionT('A', 2, 11)
HANDLE = SaImmOiHandleT()

err = saImmOiInitialize_2(HANDLE, None, version) impl_name = 
SaImmOiImplementerNameT('some_impl')

err = saImmOiImplementerSet(HANDLE, impl_name)

c_class_name = SaImmClassNameT('AnyClass') attr_mods = []

attributes = {'a' : 'value'}

attr_type = eSaImmValueTypeT.SA_IMM_ATTR_SASTRINGT

c_attr_mod = SaImmAttrModificationT_2()
c_attr_mod.modType = eSaImmAttrModificationTypeT.SA_IMM_ATTR_VALUES_REPLACE
c_attr_mod.modAttr = SaImmAttrValuesT_2()

c_attr_mod.modAttr.attrName = SaImmAttrNameT('anyAttribute') 
c_attr_mod.modAttr.attrValueType = attr_type 
c_attr_mod.modAttr.attrValuesNumber = 1

c_attr_mod.modAttr.attrValues = marshal_c_array(attr_type, ['sdf'])

attr_mods.append(c_attr_mod)

err = saImmOiRtObjectUpdate_2(HANDLE, SaNameT('anyObject=2'), attr_mods)

diff --git a/python/pyosaf/saImmOi.py b/python/pyosaf/saImmOi.py
--- a/python/pyosaf/saImmOi.py
+++ b/python/pyosaf/saImmOi.py
@@ -338,16 +338,16 @@ def saImmOiRtObjectUpdate_2(immOiHandle,
                SaAisErrorT
 
        """
-       
+       c_attr_mods = marshalNullArray(attrMods)
        oidll.saImmOiRtObjectUpdate_2.argtypes = [SaImmOiHandleT,
                                                                                
          POINTER(SaNameT),
-                                                                               
          POINTER(SaImmAttrModificationT_2)]
+                                                                               
          POINTER(POINTER(SaImmAttrModificationT_2))]
        
        oidll.saImmOiRtObjectUpdate_2.restype = SaAisErrorT
        
        return oidll.saImmOiRtObjectUpdate_2(immOiHandle,
                        BYREF(objectName),
-                       BYREF(attrMods))
+                       c_attr_mods)
 
 def saImmOiAdminOperationResult(immOiHandle, invocation, result):
        """Respond to IMM with result of saImmOiAdminOperationCallback()

------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to