From 5269de1a9ffb8e8e4d195bce9f330be3b5420fee Mon Sep 17 00:00:00 2001 From: ishiguro Date: Fri, 7 Sep 2018 21:23:25 +0900 Subject: [PATCH 1/4] support any RTCmanager port num --- python/rtm.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/python/rtm.py b/python/rtm.py index ee78d4e987a..ce78000d152 100644 --- a/python/rtm.py +++ b/python/rtm.py @@ -18,6 +18,7 @@ rootnc = None nshost = None nsport = None +mgrport = None ## # \brief wrapper class of RT component @@ -311,7 +312,7 @@ def unbindObject(name, kind): # \brief initialize ORB # def initCORBA(): - global rootnc, orb, nshost, nsport + global rootnc, orb, nshost, nsport, mgrport # from omniorb's document # When CORBA::ORB_init() is called, the value for each configuration @@ -330,6 +331,15 @@ def initCORBA(): if not nsport: nsport = 15005 + try: + n = sys.argv.index('-RTCManagerPort') + mgrport = int(sys.argv[n + 1]) + print("\033[34m[rtm.py]-RTCManagerPort set as " + str(mgrport) + "\033[0m") + except: + if not mgrport: + mgrport = 2810 # default + print("\033[34m[rtm.py] No RTCManagerPort option set, use " + str(mgrport) + "\033[0m") + print("configuration ORB with %s:%s"%(nshost, nsport)) os.environ['ORBInitRef'] = 'NameService=corbaloc:iiop:%s:%s/NameService' % \ (nshost, nsport) @@ -420,10 +430,9 @@ def getManagerFromNS(hostname, mgr=None): return mgr def getManagerDirectly(hostname, mgr=None): - global orb - mgrport = int(nsport) + 1 # RTC manager port is set as name server port + 1 traditionally + global orb, mgrport corbaloc = "corbaloc:iiop:" + hostname + ":" + str(mgrport) + "/manager" - print("\033[34m[rtm.py] tring to findRTCManager on port" + str(mgrport) + "\033[0m") + print("\033[34m[rtm.py] trying to findRTCManager on port" + str(mgrport) + "\033[0m") try: obj = orb.string_to_object(corbaloc) mgr = RTCmanager(obj._narrow(RTM.Manager)) From 8063f021e8c02f968aab5689a9ca73a6e0879e98 Mon Sep 17 00:00:00 2001 From: ishiguro Date: Fri, 19 Oct 2018 19:07:27 +0900 Subject: [PATCH 2/4] use ManagerConfig class to parse args --- python/rtm.py | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/python/rtm.py b/python/rtm.py index ce78000d152..753fc8f8dca 100644 --- a/python/rtm.py +++ b/python/rtm.py @@ -313,6 +313,7 @@ def unbindObject(name, kind): # def initCORBA(): global rootnc, orb, nshost, nsport, mgrport + mgrhost = "" # will be unused # from omniorb's document # When CORBA::ORB_init() is called, the value for each configuration @@ -321,26 +322,30 @@ def initCORBA(): # Environment variables # so init_CORBA will follow this order # first check command line argument + + rtm_argv = [sys.argv[0]] # extract rtm related args only + for i in range(len(sys.argv)): + if sys.argv[i] == '-o': + rtm_argv.extend(['-o', sys.argv[i+1]]) + + mc = OpenRTM_aist.ManagerConfig(); + mc.parseArgs(rtm_argv) + try: - n = sys.argv.index('-ORBInitRef') - (nshost, nsport) = re.match( - 'NameService=corbaloc:iiop:(\w+):(\d+)/NameService', sys.argv[n + 1]).group(1, 2) - except: - if not nshost: - nshost = socket.gethostname() - if not nsport: - nsport = 15005 + nshost, nsport = mc._argprop.getProperty("corba.nameservers").split(":") + except: # default + nshost = socket.gethostname() + nsport = 15005 + print("\033[34m[rtm.py] No corba.nameservers set, use " + nshost + ":" + str(nsport) + "\033[0m") try: - n = sys.argv.index('-RTCManagerPort') - mgrport = int(sys.argv[n + 1]) - print("\033[34m[rtm.py]-RTCManagerPort set as " + str(mgrport) + "\033[0m") - except: - if not mgrport: - mgrport = 2810 # default - print("\033[34m[rtm.py] No RTCManagerPort option set, use " + str(mgrport) + "\033[0m") + mgrhost, mgrport = mc._argprop.getProperty("corba.master_manager").split(":") + except: # default + mgrport = 2810 + print("\033[34m[rtm.py] No corba.master_manager set, use " + nshost + ":" + str(mgrport) + "\033[0m") - print("configuration ORB with %s:%s"%(nshost, nsport)) + print("\033[34m[rtm.py] configuration ORB with %s:%s\033[0m"%(nshost, nsport)) + print("\033[34m[rtm.py] configuration RTCManager with %s:%s\033[0m"%(nshost, mgrport)) os.environ['ORBInitRef'] = 'NameService=corbaloc:iiop:%s:%s/NameService' % \ (nshost, nsport) From ffdfc69b6afd64ae079bf01dbbc980697fd0f6ae Mon Sep 17 00:00:00 2001 From: ishiguro Date: Sun, 21 Oct 2018 19:58:14 +0900 Subject: [PATCH 3/4] don't parse sys.args if nshost,nsport,mgrport are already set via other python script --- python/rtm.py | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/python/rtm.py b/python/rtm.py index 753fc8f8dca..178dbcd75fa 100644 --- a/python/rtm.py +++ b/python/rtm.py @@ -313,7 +313,7 @@ def unbindObject(name, kind): # def initCORBA(): global rootnc, orb, nshost, nsport, mgrport - mgrhost = "" # will be unused + mgrhost = None # will be unused # from omniorb's document # When CORBA::ORB_init() is called, the value for each configuration @@ -331,21 +331,28 @@ def initCORBA(): mc = OpenRTM_aist.ManagerConfig(); mc.parseArgs(rtm_argv) - try: - nshost, nsport = mc._argprop.getProperty("corba.nameservers").split(":") - except: # default - nshost = socket.gethostname() - nsport = 15005 - print("\033[34m[rtm.py] No corba.nameservers set, use " + nshost + ":" + str(nsport) + "\033[0m") + if nshost != None or nsport != None: # nshost and nsport can be set via other script like "import rtm; rtm.nshost=XXX" + print("\033[34m[rtm.py] nshost or nsport already set as " + str(nshost) + ":" + str(nsport) + "\033[0m") + else: + try: + nshost, nsport = mc._argprop.getProperty("corba.nameservers").split(":") + except: + nshost = socket.gethostname() + nsport = 15005 # default + print("\033[34m[rtm.py] No corba.nameservers set, use " + nshost + ":" + str(nsport) + "\033[0m") - try: - mgrhost, mgrport = mc._argprop.getProperty("corba.master_manager").split(":") - except: # default - mgrport = 2810 - print("\033[34m[rtm.py] No corba.master_manager set, use " + nshost + ":" + str(mgrport) + "\033[0m") + if mgrhost != None or mgrport != None: # + print("\033[34m[rtm.py] mgrhost or mgrport already set as " + str(mgrhost) + ":" + str(mgrport) + "\033[0m") + else: + try: + mgrhost, mgrport = mc._argprop.getProperty("corba.master_manager").split(":") + except: + mgrhost = socket.gethostname() + mgrport = 2810 # default + print("\033[34m[rtm.py] No corba.master_manager set, use " + mgrhost + ":" + str(mgrport) + "\033[0m") print("\033[34m[rtm.py] configuration ORB with %s:%s\033[0m"%(nshost, nsport)) - print("\033[34m[rtm.py] configuration RTCManager with %s:%s\033[0m"%(nshost, mgrport)) + print("\033[34m[rtm.py] configuration RTCManager with %s:%s\033[0m"%(mgrhost, mgrport)) os.environ['ORBInitRef'] = 'NameService=corbaloc:iiop:%s:%s/NameService' % \ (nshost, nsport) From b1b8ef3d6b10974875e40dd6d560eda2d00e2105 Mon Sep 17 00:00:00 2001 From: ishiguro Date: Mon, 22 Oct 2018 16:54:11 +0900 Subject: [PATCH 4/4] check nshost nsport mgrhost mgrport individually --- python/rtm.py | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/python/rtm.py b/python/rtm.py index 178dbcd75fa..2ac1a7fc175 100644 --- a/python/rtm.py +++ b/python/rtm.py @@ -18,6 +18,7 @@ rootnc = None nshost = None nsport = None +mgrhost = None mgrport = None ## @@ -312,8 +313,7 @@ def unbindObject(name, kind): # \brief initialize ORB # def initCORBA(): - global rootnc, orb, nshost, nsport, mgrport - mgrhost = None # will be unused + global rootnc, orb, nshost, nsport, mgrhost, mgrport # from omniorb's document # When CORBA::ORB_init() is called, the value for each configuration @@ -331,25 +331,43 @@ def initCORBA(): mc = OpenRTM_aist.ManagerConfig(); mc.parseArgs(rtm_argv) - if nshost != None or nsport != None: # nshost and nsport can be set via other script like "import rtm; rtm.nshost=XXX" - print("\033[34m[rtm.py] nshost or nsport already set as " + str(nshost) + ":" + str(nsport) + "\033[0m") + if nshost != None: # these values can be set via other script like "import rtm; rtm.nshost=XXX" + print("\033[34m[rtm.py] nshost already set as " + str(nshost) + "\033[0m") else: try: - nshost, nsport = mc._argprop.getProperty("corba.nameservers").split(":") + nshost = mc._argprop.getProperty("corba.nameservers").split(":")[0] + if not nshost: + raise + except: + nshost = socket.gethostname() # default + print("\033[34m[rtm.py] Failed to parse corba.nameservers, use " + str(nshost) + " as nshost \033[0m") + + if nsport != None: + print("\033[34m[rtm.py] nsport already set as " + str(nsport) + "\033[0m") + else: + try: + nsport = int(mc._argprop.getProperty("corba.nameservers").split(":")[1]) + if not nsport: + raise except: - nshost = socket.gethostname() nsport = 15005 # default - print("\033[34m[rtm.py] No corba.nameservers set, use " + nshost + ":" + str(nsport) + "\033[0m") + print("\033[34m[rtm.py] Failed to parse corba.nameservers, use " + str(nsport) + " as nsport \033[0m") + + if mgrhost != None: + print("\033[34m[rtm.py] mgrhost already set as " + str(mgrhost) + "\033[0m") + else: + mgrhost = nshost - if mgrhost != None or mgrport != None: # - print("\033[34m[rtm.py] mgrhost or mgrport already set as " + str(mgrhost) + ":" + str(mgrport) + "\033[0m") + if mgrport != None: + print("\033[34m[rtm.py] mgrport already set as " + str(mgrport) + "\033[0m") else: try: - mgrhost, mgrport = mc._argprop.getProperty("corba.master_manager").split(":") + mgrport = int(mc._argprop.getProperty("corba.master_manager").split(":")[1]) + if not mgrport: + raise except: - mgrhost = socket.gethostname() mgrport = 2810 # default - print("\033[34m[rtm.py] No corba.master_manager set, use " + mgrhost + ":" + str(mgrport) + "\033[0m") + print("\033[34m[rtm.py] Failed to parse corba.master_manager, use " + str(mgrport) + "\033[0m") print("\033[34m[rtm.py] configuration ORB with %s:%s\033[0m"%(nshost, nsport)) print("\033[34m[rtm.py] configuration RTCManager with %s:%s\033[0m"%(mgrhost, mgrport))