def get_jobs_by_node_ids(): if mocking: jobs = mock('jobs.json') else: jobs = pyslurm.job().get() print "Post datas : %s" % request.data nodes = json.loads(request.data).get('nodes', []) print "Nodelist : %s" % nodes returned_jobs = {} # filter jobs by node for jobid, job in jobs.iteritems(): nodes_list = job['cpus_allocated'].keys() print "Nodelist for %s : %s" % (jobid, nodes_list) for node_id in nodes: if node_id in nodes_list: returned_jobs[jobid] = job print "Node %s added to jobs : %s" % (node_id, returned_jobs) if not mocking: for jobid, job in returned_jobs.iteritems(): fill_job_user(job) return returned_jobs
def get_topology(): if mocking: return mock('topology.json') try: topology = pyslurm.topology().get() except Exception as e: topology = {'error': str(e)} return topology
def get_qos(): if mocking: return mock('qos.json') try: qos = pyslurm.qos().get() except Exception as e: qos = {'error': str(e)} return qos
def get_jobs(): if mocking: return mock('jobs.json') jobs = pyslurm.job().get() # add login and username (additionally to UID) for each job for jobid, job in jobs.iteritems(): fill_job_user(job) return jobs
def get_jobs_by_qos(): if mocking: jobs = mock('jobs.json') qos = mock('qos.json') else: jobs = pyslurm.job().get() qos = pyslurm.qos().get() returned_qos = {} for qos_id, q in qos.iteritems(): returned_jobs = {} # filter jobs by node for jobid, job in jobs.iteritems(): if qos_id == job['qos']: returned_jobs[jobid] = job returned_qos[qos_id] = returned_jobs return returned_qos
def get_jobs_by_nodes(): if mocking: jobs = mock('jobs.json') nodes = mock('nodes.json') else: jobs = pyslurm.job().get() nodes = pyslurm.node().get() returned_nodes = {} for node_id, node in nodes.iteritems(): returned_jobs = {} # filter jobs by node for jobid, job in jobs.iteritems(): nodes_list = job['cpus_allocated'].keys() if node_id in nodes_list: returned_jobs[jobid] = job returned_nodes[node_id] = returned_jobs return returned_nodes
def get_cluster(): if mocking: return mock('cluster.json') nodes = pyslurm.node().get() cluster = {} cluster['name'] = pyslurm.config().get()['cluster_name'] cluster['nodes'] = len(nodes.keys()) cluster['cores'] = 0 for nodename, node in nodes.iteritems(): cluster['cores'] += node['cpus'] return cluster
def get_jobs(): if mocking: jobs = mock('jobs.json') else: jobs = pyslurm.job().get() for jobid, job in jobs.iteritems(): # add login and username (additionally to UID) for each job try: fill_job_user(job) except (KeyError): pass # convert nodeset in array of nodes if job["nodes"] is not None: jobs[jobid]["nodeset"] = list( NodeSet(job["nodes"].encode('ascii', 'ignore')) ) return jobs
def get_jobs_by_node_id(node_id): if mocking: jobs = mock('jobs.json') else: jobs = pyslurm.job().get() returned_jobs = {} # filter jobs by node for jobid, job in jobs.iteritems(): nodes_list = job['cpus_allocated'].keys() print "Nodelist for %s : %s" % (node_id, nodes_list) if node_id in nodes_list: returned_jobs[jobid] = job print "Node %s added to jobs : %s" % (node_id, returned_jobs) if not mocking: for jobid, job in returned_jobs.iteritems(): fill_job_user(job) return returned_jobs
def get_reservations(): if mocking: return mock('reservations.json') reservations = pyslurm.reservation().get() return reservations
def get_partitions(): if mocking: return mock('partitions.json') partitions = pyslurm.partition().get() return partitions
def get_nodes(): if mocking: return mock('nodes.json') nodes = pyslurm.node().get() return nodes