def run_cmd(cmd_set): success = True for _, name, cmd, workdir, stdout, stderr, depend in cmd_set: logging.info(cmd) success = run_cmd( cmd, workdir=workdir, stdout=stdout, stderr=stderr) and success return success
def view(job_id): if not HpcJobManager.check_env(): return False # State : Running text = run_cmd(f"job view {job_id}", fetch_console=True) state = "UNKNOWN" for line in text.split("\n"): line = line.strip() m = re.match(r"State\s+:\s*(\w+)", line) if m: state = m.group(1) return HpcJobState(state)
def new(**kwargs): if not HpcJobManager.check_env(): return False def _parse_job_id(text: str) -> int: """ parse the job id from the job new command's output, eg: Created job, ID: 190707 :param text: the output of `job new` command :return: the job id """ try: return int(text.split()[3]) except ValueError as _: return 0 cmd = f"job new {HpcJobManager.__filter_params(HpcJobManager.JOB_NEW_ARGS, kwargs)}" out_text = run_cmd(cmd, fetch_console=True) return _parse_job_id(out_text)
def modify(job_id, **kwargs): if not HpcJobManager.check_env(): return False cmd = f"job modify {job_id} {HpcJobManager.__filter_params(HpcJobManager.JOB_MODIFY_ARGS, kwargs)}" run_cmd(cmd)
def submit(job_id, **kwargs): if not HpcJobManager.check_env(): return False cmd = f"job submit /id:{job_id} {HpcJobManager.__filter_params(HpcJobManager.JOB_SUBMIT_ARGS, kwargs)}" run_cmd(cmd)
def add(job_id, command, **kwargs): if not HpcJobManager.check_env() or command is None or job_id is None: return False cmd = f"job add {job_id} {HpcJobManager.__filter_params(HpcJobManager.JOB_ADD_ARGS, kwargs)} {command}" run_cmd(cmd) return True