Skip to content
Snippets Groups Projects

[Webservice] Create correction reports in MyMdC when jobs have finished

Merged Thomas Kluyver requested to merge mymdc-correction-reports into master
2 files
+ 10
8
Compare changes
  • Side-by-side
  • Inline
Files
2
+ 7
5
@@ -234,7 +234,8 @@ class JobsMonitor:
).fetchall()]
success = set(statuses) == {'COMPLETED'}
r = self.job_db.execute(
"SELECT det_type, karabo_id, command, req_id, proposal, run, action, mymdc_id "
"SELECT det_type, karabo_id, command, "
"req_id, proposal, run, action, mymdc_id, timestamp "
"FROM executions JOIN requests USING (req_id)"
"WHERE exec_id = ?",
(exec_id,)
@@ -262,7 +263,7 @@ class JobsMonitor:
exc_info=True)
self.record_correction_report(
r['mymdc_id'], r['command'], r['karabo_id'], success
r['mymdc_id'], r['command'], r['karabo_id'], success, r['timestamp']
)
return r['req_id']
@@ -337,7 +338,9 @@ class JobsMonitor:
log.error("Failed to update MDC dark run id %s", dark_run_id)
log.error(Errors.MDC_RESPONSE.format(response))
def record_correction_report(self, mymdc_run_id, command, karabo_id, success):
def record_correction_report(
self, mymdc_run_id, command, karabo_id, success, request_time: str
):
"""Add report to MyMdC when a correction execution has finished"""
args = shlex.split(command)
try:
@@ -350,7 +353,6 @@ class JobsMonitor:
log.error("Jobs finished, but report file %s missing", report_path)
return
ts = datetime.fromtimestamp(os.stat(report_path).st_mtime, tz=timezone.utc)
desc = f"{karabo_id} detector corrections"
if not success:
desc += " (errors occurred)"
@@ -361,7 +363,7 @@ class JobsMonitor:
response = self.mdc.create_report_api({
"name": os.path.basename(report_path),
"cal_report_path": os.path.dirname(report_path).rstrip('/') + '/',
"cal_report_at": ts.isoformat(),
"cal_report_at": request_time,
"run_id": mymdc_run_id,
"description": desc,
})
Loading