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 nodenids(hosts): """ Return the set of nids from the host list. :param hosts: list of exec hosts from the job. :type hosts: str :returns: set of nids from node's resources_available[craynid]. """ nidset = set() craynid = "PBScraynid" for vnames in hosts: vnode = _svr_vnode(vnames) 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
def nodenids(hosts): """ Return the set of nids from the host list. :param hosts: list of exec hosts from the job. :type hosts: str :returns: set of nids from node's resources_available[craynid]. """ nidset = set() craynid = "PBScraynid" for vnames in hosts: vnode = _svr_vnode(vnames) 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
def _pmi_power_status(self, hosts): # Do a capmc node_status and return a list of ready nodes. pbs.logmsg(pbs.EVENT_DEBUG3, "Cray: status of the nodes") nidset = nodenids(hosts) nids, _ = nidlist(nidset=nidset) cmd = "node_status --nids " + nids func = "pmi_power_status" out = launch(func, cmd) ready = [] nodeset = set() if 'ready' in out: ready = out['ready'] else: return nodeset craynid = "PBScraynid" for vnames in hosts: vnode = _svr_vnode(vnames) if craynid in vnode.resources_available: nid = int(vnode.resources_available[craynid]) if nid in ready: nodeset.add(vnames) return nodeset
def _pmi_power_status(self, hosts): # Do a capmc node_status and return a list of ready nodes. pbs.logmsg(pbs.EVENT_DEBUG3, "Cray: status of the nodes") nidset = nodenids(hosts) nids, _ = nidlist(nidset=nidset) cmd = "node_status --nids " + nids func = "pmi_power_status" out = launch(func, cmd) ready = [] nodeset = set() if 'ready' in out: ready = out['ready'] else: return nodeset craynid = "PBScraynid" for vnames in hosts: vnode = _svr_vnode(vnames) if craynid in vnode.resources_available: nid = int(vnode.resources_available[craynid]) if nid in ready: nodeset.add(vnames) return nodeset
try: usage = power.get_usage(job) if usage is not None: job.resources_used["energy"] = usage except Exception as e: pbs.logmsg(pbs.LOG_ERROR, str(e)) power.disconnect() this_event.accept() # From this point on, the event will have a job. this_job = this_event.job if this_event.type == pbs.EXECJOB_BEGIN: me = pbs.get_local_nodename() try: if not _svr_vnode(me).power_provisioning: this_event.accept() except: # Try with different hostname vn = get_local_node(me) if not _svr_vnode(vn.name).power_provisioning: this_event.accept() requested_profile = str(this_job.schedselect).partition( 'eoe=')[2].partition('+')[0].partition(':')[0] if requested_profile != "": try: this_event.vnode_list[me].current_eoe = requested_profile except KeyError, ValueError: pass this_event.accept() if this_event.type == pbs.EXECJOB_END: