[Solved] Script / modifyObject mapgroup / NullPointerException

Started by Fred, June 13, 2018, 09:58:36 AM

Previous topic - Next topic

Fred

Hello,
i have a problem to change  "Status Calculation Method" on mapgroup with a script,  mapgr is a NetworkMapGroup :


        print "mapgr.getObjectClassName(): %s " % ( mapgr.getObjectClassName())
        print "mapgr.getStatusCalculationMethod(): %s " % ( mapgr.getStatusCalculationMethod())
        md = NXCObjectModificationData(mapgr.getObjectId())
        print "md.getStatusCalculationMethod() : %s" % (md.getStatusCalculationMethod())
        md.setStatusCalculationMethod(3)
        print "md.getStatusCalculationMethod() : %s" % (md.getStatusCalculationMethod())
        session.modifyObject(md)


result :


mapgr.getObjectClassName(): NetworkMapGroup
mapgr.getStatusCalculationMethod(): 1
md.getStatusCalculationMethod() : 0
md.getStatusCalculationMethod() : 3
Traceback (most recent call last):
  File "Creation-de-map_3.py", line 12, in <module>
    session.modifyObject(md)
at org.netxms.client.NXCSession.modifyObject(NXCSession.java:4953)
at org.netxms.client.NXCSession.modifyObject(NXCSession.java:5111)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
java.lang.NullPointerException: java.lang.NullPointerException


Why md status calculation is different from mapgr status calculation  ?

Any ideas?
Thanks

NetXMS Server Version 2.2.6 Build 9513 (2.2.6) (UNICODE)
NXCP: 4.48.1.13 (AES-256, Blowfish-256, 3DES, AES-128, Blowfish-128)
Built with: g++ (Debian 4.9.2-10) 4.9.2

Victor Kirhenshtein

Hi,

that's an inconsistency in API - you should set all status calculation and propagation properties when modifying any of them. So in your case you have to call on md object: setStatusPropagationMethod, setFixedPropagatedStatus, setStatusShift, setStatusTransformation, setStatusSingleThreshold, setStatusThresholds. You can just pass values from appropriate getters on mdgr object.

Best regards,
Victor

Fred