def __init__(self, serverFullName, workerPort, id, runner, runnerPackages, validationExpression, arguments): """Creates a new command watcher. :param serverFullName: Main server address :type serverFullName: string :param workerPort: Communication port opened on the worker :type serverFullName: int :param id: commandId :param runner: module name of the class that will be executed i.e. the 'runner' :param validationExpression: :param arguments: """ self.id = id self.requestManager = RequestManager("127.0.0.1", workerPort) self.workerPort = workerPort self.workerFullName = socket.gethostname() + ":" + self.workerPort self.serverFullName = serverFullName self.arguments = arguments self.runner = runner self.runnerPackages = runnerPackages self.completion = 0.0 self.message = "loading command script" self.stats = {} self.startDate = time.time() self.completionHasChanged = True self.messageHasChanged = True self.statsHasChanged = True self.finalState = CMD_DONE self.runnerErrorInExec = None self.runnerErrorInPostExec = None # check that the job type is a registered one runnerLabel = runner.rsplit('.', 1)[1:][0] logger.info("Loading class: \"%s\"" % runnerLabel) from puliclient.jobs import loadCommandRunner, JobTypeImportError try: runnerClass = loadCommandRunner(runner) except JobTypeImportError, e: logger.error("Command runner loading failed: %r" % e) self.updateCommandStatus(CMD_ERROR) sys.exit(1)
def __init__(self, framework): super(Worker, self).__init__(self) LOGGER.info("---") LOGGER.info("Initializing worker") LOGGER.info("---") self.framework = framework self.data = None self.requestManager = RequestManager(settings.DISPATCHER_ADDRESS, settings.DISPATCHER_PORT) self.commandWatchers = {} self.commands = {} self.port = settings.PORT self.computerName = COMPUTER_NAME_TEMPLATE % (settings.ADDRESS, settings.PORT) self.createDate = time.time() self.lastSysInfosMessageTime = 0 self.lastFullSysInfoUpdate = 0 self.registerDate = 0 self.httpconn = httplib.HTTPConnection(settings.DISPATCHER_ADDRESS, settings.DISPATCHER_PORT) self.PID_DIR = os.path.dirname(settings.PIDFILE) if not os.path.isdir(self.PID_DIR): LOGGER.warning( "Worker pid directory %s does not exist, creating..." % self.PID_DIR) try: os.makedirs(self.PID_DIR, 0777) LOGGER.info("Worker pid directory created.") except OSError: LOGGER.error("Failed to create pid directory.") sys.exit(1) elif not os.access(self.PID_DIR, os.R_OK | os.W_OK): LOGGER.error("Missing read or write access on %s", self.PID_DIR) sys.exit(1) self.status = rendernode.RN_BOOTING self.updateSys = False self.isPaused = False self.toberestarted = False self.speed = 1.0 self.cpuName = "undefined" self.distrib = "undefined" self.mikdistrib = "undefined" self.openglversion = ""
def __init__(self): self.requestManager = RequestManager(settings.WS_BACKEND_URL, settings.WS_BACKEND_PORT) self.defaultPool = PoolDescription(1, u'default', None) self.pools = [self.defaultPool] self.computers = []