diff --git a/SAS/TMSS/backend/services/lobster/lib/message_handler.py b/SAS/TMSS/backend/services/lobster/lib/message_handler.py index b00986ad5326de6376a0d635bd35b1ede99509ae..9ba0381219a23c7ece3466562d480092d85bcc53 100644 --- a/SAS/TMSS/backend/services/lobster/lib/message_handler.py +++ b/SAS/TMSS/backend/services/lobster/lib/message_handler.py @@ -49,6 +49,14 @@ LOOK_AHEAD_WINDOW = timedelta(minutes=3) POLL_INTERVAL = timedelta(seconds=15) +def _system(cmdline: str): + """Wraps os.system to raise a RuntimeError on failure.""" + + exit_status = system(cmdline) + if exit_status != 0: + raise RuntimeError(f"Execution failed, got exit status {exit_status} when executing: {cmdline}") + + class L2TMSSObservationControlMessageHandler(TMSSEventMessageHandler): def __init__(self, tmss_client_credentials_id: str=None): @@ -146,12 +154,12 @@ class L2TMSSObservationControlMessageHandler(TMSSEventMessageHandler): parset.write(l2parset) # copy it to COBALT - system(f"scp {tmpdir}/{PARSET_FILENAME} {COBALT_HEADNODE}:{COBALT_PARSET_DIR}/{PARSET_FILENAME}") + _system(f"scp {tmpdir}/{PARSET_FILENAME} {COBALT_HEADNODE}:{COBALT_PARSET_DIR}/{PARSET_FILENAME}") # kickstart the observation on COBALT to start and stop at the # times as provided in the parset. # first 3 parameters are historical and ignored - system(f"ssh {COBALT_HEADNODE} {COBALT_START_SCRIPT} 1 2 3 {COBALT_PARSET_DIR}/{PARSET_FILENAME} {subtask_id}") + _system(f"ssh {COBALT_HEADNODE} {COBALT_START_SCRIPT} 1 2 3 {COBALT_PARSET_DIR}/{PARSET_FILENAME} {subtask_id}") def enqueue_scheduled_observation_subtask(self, subtask: dict):