示例#1
0
                       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
示例#2
0
    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 ]