Пример #1
0
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()