Source code for cloudmesh_client.cloud.hpc.provider.slurm.squeue

import json
from cloudmesh_client.cloud.hpc.BatchProvider import BatchProvider


# TODO: is this outdated and superseded by hpc.py?
[docs]class Squeue(object):
[docs] @staticmethod def squeue_to_json(input_str): d = {} for i, line in enumerate(input_str.splitlines()): if not line.startswith('Warning:') and not line.__contains__( 'NODELIST(REASON)'): d[i] = {} # noinspection PyPep8 d[i]['jobid'], \ d[i]['partition'], \ d[i]['name'], \ d[i]['user'], \ d[i]['st'], \ d[i]['time'], \ d[i]['nodes'], \ d[i]['nodelist(reason)'] = line.split() json_str = json.dumps(d, indent=4, separators=(',', ': ')) # assert returned value is string assert isinstance(json_str, str) # convert to json obj return json.loads(json_str)
[docs] @staticmethod def get(user=None, name=None): squeue_json = Squeue.read_squeue() # assert returned value is string assert isinstance(squeue_json, str) # convert to json obj json_obj = json.loads(squeue_json) d = {} for i, key in enumerate(json_obj.keys()): # both user, name parameters are specified if user and name: if user == json_obj[key]["user"] and name == json_obj[key]["name"]: d[i] = json_obj[key] # only user parameter is specified elif user: if user == json_obj[key]["user"]: d[i] = json_obj[key] # only name parameter is specified elif name: if name == json_obj[key]["name"]: d[i] = json_obj[key] # no parameters specified, return all else: d[i] = json_obj[key] # return json dump return json.dumps(d, indent=4, separators=(',', ': '))
[docs] @staticmethod def read_squeue(): # read squeue from comet # TODO: check this function name = None provider = BatchProvider(name) return provider.read_squeue(format="json")
if __name__ == "__main__": # TODO: user should be read from yaml file print(Squeue.read_squeue()) print(Squeue.get(name="NGBW-JOB", user="cipres")) # print(Squeue.get(name="NGBW-JOB")) # print(Squeue.get(user="cipres")) # print(Squeue.get())