From 4e35c6b445d0cfbad9cf15a48f2d341e29dbd806 Mon Sep 17 00:00:00 2001 From: Thijs Paelman Date: Sun, 18 Jan 2026 21:07:29 +0100 Subject: rumba: Add exit status to ExperimentManager Record if the body of the ExperimentManager ran without any errors. --- examples/scalingtime.py | 4 +++- rumba/utils.py | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/examples/scalingtime.py b/examples/scalingtime.py index 547622f..920553c 100755 --- a/examples/scalingtime.py +++ b/examples/scalingtime.py @@ -243,10 +243,12 @@ exp = exp_class(testbed, nodes=nodes) if __name__ == "__main__": draw_experiment(exp) - with ExperimentManager(exp, swap_out_strategy=args.swapout): + with ExperimentManager(exp, swap_out_strategy=args.swapout) as expM: exp.swap_in() if not isinstance(testbed, docker.Testbed) \ and not isinstance(testbed, qemu.Testbed) \ and not isinstance(testbed, local.Testbed): exp.install_prototype() exp.bootstrap_prototype() + + exit(expM.exit_status) diff --git a/rumba/utils.py b/rumba/utils.py index aa06415..3a3b837 100644 --- a/rumba/utils.py +++ b/rumba/utils.py @@ -129,9 +129,10 @@ class ExperimentManager(object): self.syslogs_strategy = syslogs_strategy self.syslogs = [syslogs] if isinstance(syslogs, str) else syslogs self.use_sudo = self.experiment.testbed.username != 'root' + self.exit_status = 1 # Default: failed def __enter__(self): - pass + return self def fetch_dmesg_syslog(self, node, node_dir): node.execute_command('dmesg > /tmp/dmesg') @@ -225,6 +226,8 @@ class ExperimentManager(object): 'Got %s: %s', type(exc_val).__name__, str(exc_val)) logger.debug('Exception details:', exc_info=exc_val) + else: + self.exit_status = 0 finally: log.flush_and_kill_logging() # Make sure to print all logs before execution terminates, -- cgit v1.2.3