<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Hi All,</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
I am trying get notifications from python, very new to CORBA, below is my first try. I am trying  to pull notifications from ECI Lightsoft NMS in python3.6, everything is going well however while pulling structured events, getting below error.</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
onmniORBpy 4.3.0</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
CentOS 7</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Python3.6</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Please help me</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
3157 4954 5f4e 6f74 6966 794e 616d 6564 1WIT_NotifyNamed
<div>526f 6f74 0049 545f 4e6f 7469 6679 4368 Root.IT_NotifyCh</div>
<div>616e 6e65 6c41 646d 696e 3a3a 4576 656e annelAdmin::Even</div>
<div>7443 6861 6e6e 656c 4661 6374 6f72 7900 tChannelFactory.</div>
<div>6368 616e 6e65 6c2d 3532 0063 6f6e 7375 channel-52.consu</div>
<div>6d65 722d 3532 2d30 0023 7374 7275 6374 mer-52-0.#struct</div>
<div>7572 6564 2d70 726f 7879 7075 6c6c 7375 ured-proxypullsu</div>
<div>7070 6c69 6572 2d35 322d 302d 306f 6e5f pplier-52-0-0on_</div>
<div>1600 0000 7075 6c6c 5f73 7472 7563 7475 ....pull_structu</div>
<div>7265 645f 6576 656e 7400 672e 0000 0000 red_event.g.....</div>
<div>omniORB: (2) 2020-08-07 17:58:57.857650: Scan for idle connections (1596803337,857523000)</div>
<div>omniORB: (2) 2020-08-07 17:58:57.857681: Scavenger reduce idle count for strand 0x1143b10 to 23</div>
<div>omniORB: (2) 2020-08-07 17:58:57.857692: Scavenger reduce idle count for strand 0x10b4550 to 23</div>
<div>omniORB: (2) 2020-08-07 17:58:57.857699: Scavenger reduce idle count for strand 0x111d2e0 to 23</div>
<div>omniORB: (2) 2020-08-07 17:58:57.857706: Scavenger reduce idle count for strand 0x11482d0 to 23</div>
<div>omniORB: (2) 2020-08-07 17:58:57.857713: Scavenger reduce idle count for strand 0x114cc20 to 23</div>
<div>omniORB: (2) 2020-08-07 17:58:57.857721: Scan for idle connections done (1596803337,857523000).</div>
<div>omniORB: (2) 2020-08-07 17:59:02.857869: Scan for idle connections (1596803342,857728000)</div>
<div>omniORB: (2) 2020-08-07 17:59:02.857904: Scavenger reduce idle count for strand 0x1143b10 to 22</div>
<div>omniORB: (2) 2020-08-07 17:59:02.857915: Scavenger reduce idle count for strand 0x10b4550 to 22</div>
<div>omniORB: (2) 2020-08-07 17:59:02.857923: Scavenger reduce idle count for strand 0x111d2e0 to 22</div>
<div>omniORB: (2) 2020-08-07 17:59:02.857930: Scavenger reduce idle count for strand 0x11482d0 to 22</div>
<div>omniORB: (2) 2020-08-07 17:59:02.857937: Scavenger reduce idle count for strand 0x114cc20 to 22</div>
<div>omniORB: (2) 2020-08-07 17:59:02.857944: Scan for idle connections done (1596803342,857728000).</div>
<div>omniORB: (2) 2020-08-07 17:59:07.858086: Scan for idle connections (1596803347,857952000)</div>
<div>omniORB: (2) 2020-08-07 17:59:07.858120: Scavenger reduce idle count for strand 0x1143b10 to 21</div>
<div>omniORB: (2) 2020-08-07 17:59:07.858132: Scavenger reduce idle count for strand 0x10b4550 to 21</div>
<div>omniORB: (2) 2020-08-07 17:59:07.858139: Scavenger reduce idle count for strand 0x111d2e0 to 21</div>
<div>omniORB: (2) 2020-08-07 17:59:07.858146: Scavenger reduce idle count for strand 0x11482d0 to 21</div>
<div>omniORB: (2) 2020-08-07 17:59:07.858153: Scavenger reduce idle count for strand 0x114cc20 to 21</div>
<div>omniORB: (2) 2020-08-07 17:59:07.858160: Scan for idle connections done (1596803347,857952000).</div>
omniORB: (2) 2020-08-07 17:59:12.858307: Scan for idle connections (1596803352,858167000)<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Python3.6 code</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
import sys
<div>import CORBA</div>
<div>import CosNaming</div>
<div>import CosLifeCycle</div>
<div>import CosEventChannelAdmin</div>
<div>import CosNotifyComm__POA</div>
<div>import CosNotifyComm</div>
<div>import CosEventComm</div>
<div>from naming import *</div>
<div>sys.path.insert(0, '/home/anna/ECI_nms/corba')</div>
<div>import EventChannelAdmin</div>
<div>import emsSessionFactory</div>
<div>import nmsSession, nmsSession__POA</div>
<div>import globaldefs</div>
<div>import CosEventComm__POA</div>
<div>import CosNotification</div>
<div>import CosNotifyChannelAdmin__POA</div>
<div>import CosNotifyChannelAdmin</div>
<div>class NmsSession_I(nmsSession__POA.NmsSession_I):</div>
<div>    pass</div>
<div><br>
</div>
<div><br>
</div>
<div>class psconsumer(CosEventComm__POA.PushConsumer):</div>
<div>      def __init__(self):</div>
<div>          pass</div>
<div>    #def __init__(self, parent):</div>
<div>    #    self.parent = parent</div>
<div>    #</div>
<div>    #def push(self, data):</div>
<div>    #    if data._v == "response device":</div>
<div>    #        self.parent.eventFlag = True</div>
<div>    #        self.parent.localEvent.set()</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>#class ConsumerDevice_i(CosEventComm__POA.PushConsumer):</div>
<div>#   pass</div>
<div>def main():</div>
<div>  argv = ["-ORBInitRef", "NameService=corbaloc:iiop:1.2@ABC-GJ-NMS:5075/NameService"]
</div>
<div>  #</div>
<div>  # Start orb.</div>
<div>  orb=CORBA.ORB_init(argv, CORBA.ORB_ID)</div>
<div><br>
</div>
<div>  # Process Options</div>
<div>  verbose=0</div>
<div>  needNameService=0</div>
<div>  channelName="EventChannel"</div>
<div>  factoryName="EventChannelFactory"</div>
<div>  criteria=[]</div>
<div><br>
</div>
<div>  action="start"</div>
<div>  try:</div>
<div><br>
</div>
<div>    #</div>
<div>    # Get Name Service root context.</div>
<div>       rootContext=None</div>
<div>       try:</div>
<div>           action="resolve initial reference 'NameService'"</div>
<div>           obj=orb.resolve_initial_references("NameService")</div>
<div>           rootContext=obj._narrow(CosNaming.NamingContext)</div>
<div>           if rootContext is None:</div>
<div>               raise CORBA.OBJECT_NOT_EXIST(0,CORBA.COMPLETED_NO)</div>
<div>       except CORBA.Exception as ex:</div>
<div>           if needNameService:</div>
<div>               raise ex</div>
<div>           else:</div>
<div>               sys.stderr.write("Warning - failed to %s\n"%action)</div>
<div><br>
</div>
<div>       name = [CosNaming.NameComponent("TMF_MTNM","Class"),</div>
<div>               CosNaming.NameComponent("ECI","Vendor"),</div>
<div>               CosNaming.NameComponent("ECI:LightSoft_1","EmsInstance"),</div>
<div>               CosNaming.NameComponent("3_5","Version"),</div>
<div>               CosNaming.NameComponent("ECI:LightSoft_1","EmsSessionFactory_I")]</div>
<div><br>
</div>
<div>       try:</div>
<div>             obj = rootContext.resolve(name)</div>
<div>       except CosNaming.NamingContext.NotFound as ex:</div>
<div>             print("Except->Name not found")</div>
<div>             print(ex)</div>
<div>       try:</div>
<div>           poa = orb.resolve_initial_references("RootPOA")</div>
<div>       except Exception as ex:</div>
<div>           print('POA initial References Error: {}'.format(ex))</div>
<div><br>
</div>
<div>       try:</div>
<div>           poaManager = poa._get_the_POAManager()</div>
<div>       except Exception as ex:</div>
<div>           print('POA get manager error : {}'.format(ex))</div>
<div>       try:</div>
<div>           poaManager.activate()</div>
<div>       except Exception as ex:</div>
<div>           print('POA manager Activation Error: {}'.format(ex))</div>
<div><br>
</div>
<div>       ### Narrow the object </div>
<div>       ems_session = obj._narrow(emsSessionFactory.EmsSessionFactory_I)</div>
<div>       if ems_session is None:</div>
<div>           print("Object reference is not an EmsSessionFactory_I")</div>
<div>       ### Get NMS session</div>
<div>       nms_session_i = NmsSession_I() </div>
<div>       nms_session_o = nms_session_i._this()               </div>
<div>       if nms_session_o is None:</div>
<div>           print("Object reference is not an NmsSession_I")</div>
<div>           sys.exit(1)</div>
<div><br>
</div>
<div>       ##Get ems Session ###</div>
<div>       try:</div>
<div>             session = ems_session.getEmsSession("usr", "Aug@2020", nms_session_o)</div>
<div>        #print(dir(session))</div>
<div>       except Exception as ex:</div>
<div>              print('System Error: {}'.format(ex))</div>
<div>              sys.exit(1)</div>
<div>       #print(dir(session))</div>
<div>       try:</div>
<div>              eventChannel = session.getEventChannel()</div>
<div>       except globaldefs.ProcessingFailureException as ex:</div>
<div>              print('System Error: {}'.format(ex))</div>
<div>              eventChannel.destroy()</div>
<div>              session.endSession()</div>
<div>              sys.exit(1)</div>
<div>       </div>
<div><br>
</div>
<div>       cadmin = eventChannel.default_consumer_admin</div>
<div><br>
</div>
<div>       try:</div>
<div>           psupp, prxID = cadmin.obtain_notification_pull_supplier(CosNotifyChannelAdmin.STRUCTURED_EVENT)</div>
<div>           </div>
<div>           pxsupp = psupp._narrow(CosNotifyChannelAdmin.StructuredProxyPullSupplier)</div>
<div>       except Exception as ex:</div>
<div>           print(ex)</div>
<div>       try:</div>
<div>           s_proxy_pull_supplier = pxsupp._narrow(psupp)</div>
<div>       except Exception as ex:</div>
<div>           print('Error: {}'.format(ex))</div>
<div>       try:</div>
<div>           events = s_proxy_pull_supplier.pull_structured_event()</div>
<div>       except Exception as ex:</div>
<div>           print('Events Error: {}'.format(ex))</div>
<div><br>
</div>
<div>  except CORBA.Exception as ex:</div>
<div>       sys.stderr.write("CORBA exception, unable to %s.\n"%action)</div>
<div>  session.endSession()</div>
<div>  orb.shutdown(1)</div>
<div>  sys.exit(1)</div>
<div><br>
</div>
<div>################################################################################</div>
<div># If this file is executed directly, then we start here.</div>
<div>if(__name__=="__main__"):</div>
<div>  main()</div>
<div>  orb.run()</div>
<br>
<br>
</div>
</body>
</html>