def activate_profile(self, profile_name=None, job=None): self._check_pmi() if job is None: job = pbs.event().job try: ret = self.__pmi._activate_profile(profile_name, job) if profile_name is not None: hosts = _get_vnode_names(job) for h in hosts: try: pbs.event().vnode_list[h].current_eoe = profile_name except: pass return ret except BackendError as e: # get fresh set of profile names, ignore errors mynode = pbs.event().vnode_list[pbs.get_local_nodename()] if mynode.power_provisioning: try: profiles = self.__pmi._query(pbs.Power.QUERY_PROFILE) names = self._map_profile_names(profiles) mynode.resources_available["eoe"] = names pbs.logmsg(pbs.LOG_WARNING, "PMI:activate: set eoe: %s" % names) except: pass raise BackendError(e) except InternalError as e: # couldn't do activation so set vnode offline me = pbs.get_local_nodename() pbs.event().vnode_list[me].state += pbs.ND_OFFLINE pbs.logmsg(pbs.LOG_WARNING, "PMI:activate: set vnode offline") raise InternalError(e)
def activate_profile(self, profile_name=None, job=None): self._check_pmi() if job is None: job = pbs.event().job try: ret = self.__pmi._activate_profile(profile_name, job) if profile_name is not None: hosts = _get_vnode_names(job) for h in hosts: try: pbs.event().vnode_list[h].current_eoe = profile_name except: pass return ret except BackendError as e: # get fresh set of profile names, ignore errors mynode = pbs.event().vnode_list[pbs.get_local_nodename()] if mynode.power_provisioning: try: profiles = self.__pmi._query( pbs.Power.QUERY_PROFILE) names = self._map_profile_names(profiles) mynode.resources_available["eoe"] = names pbs.logmsg(pbs.LOG_WARNING, "PMI:activate: set eoe: %s" % names) except: pass raise BackendError(e) except InternalError as e: # couldn't do activation so set vnode offline me = pbs.get_local_nodename() pbs.event().vnode_list[me].state += pbs.ND_OFFLINE pbs.logmsg(pbs.LOG_WARNING, "PMI:activate: set vnode offline") raise InternalError(e)
def vnodes_enabled(job): # see if power operations are allowed on all job vnodes for vn in _get_vnode_names(job): if not _svr_vnode(vn).power_provisioning: pbs.logjobmsg(job.id, "power functionality is disabled on vnode %s" % vn) return False return True
def deactivate_profile(self, job=None): self._check_pmi() if job is None: job = pbs.event().job if _running_excl(job): pbs.logjobmsg(job.id, "PMI: reset current_eoe") for h in _get_vnode_names(job): try: pbs.event().vnode_list[h].current_eoe = None except: pass return self.__pmi._deactivate_profile(job)
def deactivate_profile(self, job=None): self._check_pmi() if job is None: job = pbs.event().job if _running_excl(job): pbs.logjobmsg(job.id, "PMI: reset current_eoe") for h in _get_vnode_names(job): try: pbs.event().vnode_list[h].current_eoe = None except: pass return self.__pmi._deactivate_profile(job)
def jobnids(job): """ Return the set of nids belonging to a job. :param job: job id :type job: str :returns: set of nids from node's resources_available[craynid]. """ nidset = set() craynid = "PBScraynid" for vname in _get_vnode_names(job): vnode = _svr_vnode(vname) try: nidset.add(int(vnode.resources_available[craynid])) except Exception: pass return nidset
def jobnids(job): """ Return the set of nids belonging to a job. :param job: job id :type job: str :returns: set of nids from node's resources_available[craynid]. """ nidset = set() craynid = "PBScraynid" for vname in _get_vnode_names(job): vnode = _svr_vnode(vname) try: nidset.add(int(vnode.resources_available[craynid])) except Exception: pass return nidset