def updatePandaServer(job_state, xmlstr=None, spaceReport=False, log=None, jr=False, stdout_tail="", **kwargs): """ Update the panda server with the latest job info """ from PandaServerClient import PandaServerClient client = PandaServerClient( pilot_version=DorE(kwargs, "version"), pilot_version_tag=DorE(kwargs, "pilot_version_tag"), pilot_initdir=DorE(kwargs, "pilot_initdir"), jobSchedulerId=DorE(kwargs, "jobSchedulerId"), pilotId=DorE(kwargs, "pilotId"), updateServer=DorE(kwargs, "updateServerFlag"), jobrec=DorE(kwargs, "jobrec"), pshttpurl=DorE(kwargs, "pshttpurl"), ) # update the panda server return client.updatePandaServer( job_state.job, job_state.site, DorE(kwargs, "workerNode"), DorE(kwargs, "psport"), xmlstr=xmlstr, spaceReport=spaceReport, log=log, ra=job_state.recoveryAttempt, jr=jr, useCoPilot=DorE(kwargs, "useCoPilot"), stdout_tail=stdout_tail, )
def updatePandaServer(self, job, site, workerNode, port, xmlstr=None, spaceReport=False, log=None, ra=0, jr=False, schedulerID=None, pilotID=None, updateServer=True): """ Update the PanDA server """ # create and instantiate the client object from PandaServerClient import PandaServerClient client = PandaServerClient(pilot_version=self.__pilot_version, \ pilot_version_tag=self.__pilot_version_tag, \ pilot_initdir=self.__pilot_initdir, \ jobSchedulerId=self.__jobSchedulerId, \ pilotId=self.__pilotId, \ updateServer=self.__updateServer, \ jobrec=True, \ pshttpurl=self.__pshttpurl) # update the panda server return client.updatePandaServer(job, site, workerNode, port, xmlstr=xmlstr, spaceReport=spaceReport, log=log, ra=ra, jr=jr)
def updatePandaServer(job_state, xmlstr=None, spaceReport=False, log=None, jr=False, stdout_tail="", **kwargs): """ Update the panda server with the latest job info """ from PandaServerClient import PandaServerClient client = PandaServerClient(pilot_version=DorE(kwargs, 'version'), pilot_version_tag=DorE(kwargs, 'pilot_version_tag'), pilot_initdir=DorE(kwargs, 'pilot_initdir'), jobSchedulerId=DorE(kwargs, 'jobSchedulerId'), pilotId=DorE(kwargs, 'pilotId'), updateServer=DorE(kwargs, 'updateServerFlag'), jobrec=DorE(kwargs, 'jobrec'), pshttpurl=DorE(kwargs, 'pshttpurl')) # update the panda server return client.updatePandaServer(job_state.job, job_state.site, DorE(kwargs, 'workerNode'), DorE(kwargs, 'psport'), xmlstr=xmlstr, spaceReport=spaceReport, log=log, ra=job_state.recoveryAttempt, jr=jr, useCoPilot=DorE(kwargs, 'useCoPilot'), stdout_tail=stdout_tail)
def __mk_gl_temp_dir(self): """Make the directory tree for glexec. See usage example in: http://wiki.nikhef.nl/grid/GLExec_TransientPilotJobs """ pUtil.tolog('sys path is %s' % sys.path) pUtil.tolog("folder is : %s" % self.__mkgltempdir_path) cmd = '%s -t 777 `pwd`' % self.__mkgltempdir_path attempts = 0 while attempts < 3: stdout, stderr, status = execute(cmd) pUtil.tolog('cmd: %s' % cmd) pUtil.tolog('output: %s' % stdout) pUtil.tolog('error: %s' % stderr) pUtil.tolog('status: %s' % status) if not (status or stderr): self.__target_path = stdout.rstrip('\n') os.environ['GLEXEC_TARGET_DIR'] = self.__target_path os.environ['GLEXEC_TARGET_PROXY'] = os.path.join(self.__target_path, 'user_proxy') pUtil.tolog("gltmpdir created and added to env: %s" % self.__target_path) pUtil.tolog("now adding sandbox to sys.path") sys.path.append(self.__target_path) pUtil.tolog("New sys.path is %s " %sys.path) return 0 else: pUtil.tolog('error! gltmpdir has failed') attempts += 1 #raise GlexecException("mkgltempdir failed: %s" % stderr) pUtil.tolog("mkgltempdir failed: %s" % stderr) if attempts == 3: pUtil.tolog('sys path is %s' % sys.path) pUtil.tolog('os environ is %s' % os.environ) ec = 1226 env = Configuration.Configuration() pUtil.tolog("Updating PanDA server for the failed job (error code %d)" % (ec)) env['job'].result[0] = 'failed' env['job'].currentState = env['job'].result[0] env['job'].result[2] = ec env['pilotErrorDiag'] = "gLExec related failure - %s" %stderr env['job'].pilotErrorDiag = env['pilotErrorDiag'] from pilot import getProperNodeName if 'https://' not in env['pshttpurl']: env['pshttpurl'] = 'https://' + env['pshttpurl'] import Node#, Site env['workerNode'] = Node.Node() env['workerNode'].setNodeName(getProperNodeName(os.uname()[1])) env['job'].workdir = os.getcwd() env['thisSite'].workdir = os.getcwd() from PandaServerClient import PandaServerClient strXML = pUtil.getMetadata(env['thisSite'].workdir, env['job'].jobId) client = PandaServerClient(pilot_version = env['version'], pilot_version_tag = env['pilot_version_tag'], pilot_initdir = env['pilot_initdir'], jobSchedulerId = env['jobSchedulerId'], pilotId = env['pilotId'], updateServer = env['updateServerFlag'], jobrec = env['jobrec'], pshttpurl = env['pshttpurl']) client.updatePandaServer(env['job'], env['thisSite'], env['workerNode'], env['psport'], log = env['pilotErrorDiag'], useCoPilot = env['useCoPilot'], xmlstr = strXML) return 1 else: pUtil.tolog('[Trial %s] Sleeping for 10 secs and retrying' % attempts) time.sleep(10)