Skip to content
Snippets Groups Projects
Commit f78c6a9f authored by Cyril Danilevski's avatar Cyril Danilevski
Browse files

Clean webservice.run_action returns

This change is motivated by wanting to log sim mode job "submissions"
parent d1a70621
No related branches found
No related tags found
1 merge request!495Show clearer messages when running webservice in sim mode
......@@ -452,7 +452,7 @@ async def copy_untouched_files(file_list, out_folder, run):
async def run_action(job_db, cmd, mode, proposal, run, rid) -> str:
""" Run action command (CORRECT OR DARK)
"""Run action command (CORRECT or DARK).
:param job_db: jobs database
:param cmd: to run, should be a in list for as expected by subprocess.run
......@@ -465,48 +465,41 @@ async def run_action(job_db, cmd, mode, proposal, run, rid) -> str:
Returns a formatted Success or Error message indicating outcome of the
execution.
"""
# FIXME: this coro has too many returns that can be simplified
if mode == "prod":
logging.info(" ".join(cmd))
retcode, stdout = await run_proc_async(cmd)
if retcode == 0:
if "DARK" in cmd:
logging.info(Success.START_CHAR.format(proposal, run))
else:
logging.info(Success.START_CORRECTION.format(proposal, run))
# enter jobs in job db
c = job_db.cursor() # FIXME: asyncio
rstr = stdout.decode()
for r in rstr.split("\n"):
if "Submitted job:" in r:
_, jobid = r.split(":")
c.execute(
"INSERT INTO jobs VALUES (?, ?, ?, ?, 'PD', ?, ?, ?)",
(rid, jobid.strip(), proposal, run,
datetime.now().isoformat(), cmd[3], cmd[4])
)
job_db.commit()
logging.debug((" ".join(cmd)).replace(',', '').replace("'", ""))
if "DARK" in cmd:
return Success.START_CHAR.format(proposal, run)
else:
return Success.START_CORRECTION.format(proposal, run)
else:
if retcode != 0:
logging.error(Errors.JOB_LAUNCH_FAILED.format(cmd, retcode))
return Errors.JOB_LAUNCH_FAILED.format(cmd, retcode)
else:
if "DARK" in cmd:
logging.debug(Success.START_CHAR_SIM.format(proposal, run))
message = Success.START_CHAR.format(proposal, run)
else:
logging.debug(Success.START_CORRECTION_SIM.format(proposal, run))
message = Success.START_CORRECTION.format(proposal, run)
# Save submitted jobs to persistent database.
c = job_db.cursor() # FIXME: asyncio
rstr = stdout.decode()
for r in rstr.split("\n"):
if "Submitted job:" in r:
_, jobid = r.split(":")
c.execute(
"INSERT INTO jobs VALUES (?, ?, ?, ?, 'PD', ?, ?, ?)",
(rid, jobid.strip(), proposal, run,
datetime.now().isoformat(), cmd[3], cmd[4])
)
job_db.commit()
logging.debug((" ".join(cmd)).replace(',', '').replace("'", ""))
else: # mode == "sim"
if "DARK" in cmd:
return Success.START_CHAR_SIM.format(proposal, run)
message = Success.START_CHAR_SIM.format(proposal, run)
else:
return Success.START_CORRECTION_SIM.format(proposal, run)
message = Success.START_CORRECTION_SIM.format(proposal, run)
logging.info(message)
logging.info((" ".join(cmd)).replace(',', '').replace("'", ""))
return message
async def wait_on_transfer(rpath, max_tries=300) -> bool:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment