help = "Print additional information to stdout.") args = parser.parse_args() # create HOMEDIR/.hq directory hqDir = "{home}/.hq".format( home=HOMEDIR ) if not os.path.exists( hqDir ): os.makedirs( hqDir ) #################################### # send requests to hq-user-server args.command = join(args.command,' ') hqUserServer = hQServerProxy( serverType = 'user-server', verboseMode = args.verboseMode ) hqUserServer.run() if not hqUserServer.running: sys.stderr.write("Could not start a hq-user-server!\n") sys.exit(-1) requests = [] # assembl requests if args.showStatus: requests = ['status'] else: if args.jobsFile: # send several jobs at once
def get_exec_server( self, host_id, host_name, do_not_invoke=False, logger=None, delay=0 ): """! @brief invoke exec server on given host if necessary """ if not logger: logger=self.logger.write if host_id not in self.not_invoking_exec_server: # create new event self.not_invoking_exec_server[ host_id ] = threading.Event() elif not self.not_invoking_exec_server[ host_id ].wait( 10 ): # wait until event has been set. maximal 10s logger("TIMEOUT",logCategory="debug") # clear event self.not_invoking_exec_server[host_id].set() return None # unset event which indicates that a exec server is currently invoking self.not_invoking_exec_server[host_id].clear() if host_id not in self.exec_servers or not self.exec_servers[ host_id ]: # create a server proxy for hq-exec-server for cnt,delay in enumerate([0,2,5]): if delay: logger( "sleep for {t}s".format(t=delay) ) sleep( delay ) logger( "{c}. attempt to get exec server proxy for host {h}".format( c=cnt+1, h=host_name ), logCategory="debug" ) ExecServer = hQServerProxy( host = host_name, serverType = "exec-server" ) if do_not_invoke: # just connect to server without invoking it ExecServer.connect() else: # connect ExecServer.run() if ExecServer.isRunning(): self.exec_servers[ host_id ] = ExecServer logger( "get exec server proxy for host {h}:{p}".format( h=ExecServer.host, p=ExecServer.port ) ) break else: self.exec_servers[ host_id ] = None logger( "getting exec server proxy for host {h} failed".format( h=host_name ) ) else: ExecServer = self.exec_servers[ host_id ] # check if server is responsive if not ExecServer.isRunning(): self.exec_servers[ host_id ] = None # clear event self.not_invoking_exec_server[host_id].set() return self.exec_servers[ host_id ]