def main(): global host global jobmanname nshost = '172.30.0.1' nsport = 9090 hkey = 'mupif-secret-key' jobmanname = None debug = False #nshost=None ssh = False #ssh flag (set to True if ssh tunnel need to be established) log = logging.getLogger() try: opts, args = getopt.getopt(sys.argv[1:], "h:j:p:k:u:n:r:t") # print(opts, args) except getopt.GetoptError as err: # print help information and exit: print(str(err)) # will print something like "option -a not recognized" usage() sys.exit(2) for o, a in opts: # if o in ("-p"): # port = int(a) # elif o in ("-h"): # host = a if o in ("-j"): jobmanname = a elif o in ("-k"): hkey = a elif o in ("-t"): ssh = True elif o in ("-u"): username = a elif o in ("-n"): nshost = a elif o in ("-r"): nsport = int(a) else: assert False, "unhandled option" # print("huhu:"+host+str(port)) if (not jobmanname): usage() sys.exit(2) #locate nameserver ns = PyroUtil.connectNameServer(nshost, nsport, hkey) # locate remote jobManager application, request remote proxy jobManUri = ns.lookup(jobmanname) #get local port of jobmanager (from uri) jobmannatport = int(re.search('(\d+)$', str(jobManUri)).group(0)) host = PyroUtil.getIPfromUri(jobManUri) #extablish secure ssh tunnel connection if ssh: (host, jobmannatport, jobManNatHost, port) = PyroUtil.getNSConnectionInfo(ns, jobmanname) tunnel = PyroUtil.sshTunnel(remoteHost=host, userName=username, localPort=jobmannatport, remotePort=port, sshClient='ssh') jobMan = PyroUtil.connectJobManager(ns, jobmanname, hkey=hkey) curses.wrapper(processor, jobMan) if ssh: tunnel.terminate()