1+ import signal
2+
13from demo_helper import Config
2- from observability_demo import run_obs_demo , delete_obs_demo
4+ from observability_demo import run_obs_demo , delete_obs_demo
35from heartbeat_demo import run_heartbeat_demo
4- from testgen_demo import run_tg_demo , delete_tg_demo
6+ from testgen_demo import run_tg_demo , delete_tg_demo
57from argparse import ArgumentParser
68
79
8- def init_args () -> ArgumentParser :
9- parser = ArgumentParser (
10- description = """
11- This is a tool to create a demo of DataOps Observability & TestGen.
12- """ ,
13- )
14- subparsers = parser .add_subparsers (title = "subcommands" )
10+ def init_parser () -> ArgumentParser :
11+ parser = ArgumentParser (description = "This is a tool to create a demo of DataOps Observability & TestGen." )
12+ subparsers = parser .add_subparsers (title = "subcommands" , required = True )
1513
16- obs_run_parser = subparsers .add_parser (
17- "obs-run-demo" ,
18- description = "Run the Observability demo" ,
19- )
20- obs_run_parser .set_defaults (action = "obs-run-demo" )
21-
22- obs_delete_parser = subparsers .add_parser (
23- "obs-delete-demo" ,
24- description = "Delete data created by the Observability demo" ,
14+ commands = (
15+ ("obs-run-demo" , "Run the Observability demo" , run_obs_demo ),
16+ ("obs-delete-demo" , "Delete data created by the Observability demo" , delete_obs_demo ),
17+ ("obs-heartbeat-demo" , "Run the Observability Heartbeat demo" , run_heartbeat_demo ),
18+ ("tg-run-demo" , "Run the TestGen demo" , run_tg_demo ),
19+ ("tg-delete-demo" , "Delete data created by the TestGen demo" , delete_tg_demo ),
2520 )
26- obs_delete_parser .set_defaults (action = "obs-delete-demo" )
2721
28- obs_heartbeat_parser = subparsers .add_parser (
29- "obs-heartbeat-demo" ,
30- description = "Run the Observability Heartbeat demo" ,
31- )
32- obs_heartbeat_parser .set_defaults (action = "obs-heartbeat-demo" )
22+ for cmd , desc , func in commands :
23+ sub_parser = subparsers .add_parser (cmd , description = desc )
24+ sub_parser .set_defaults (func = func )
3325
34- tg_run_parser = subparsers .add_parser (
35- "tg-run-demo" ,
36- description = "Run the TestGen demo" ,
37- )
38- tg_run_parser .set_defaults (action = "tg-run-demo" )
39-
40- tg_delete_parser = subparsers .add_parser (
41- "tg-delete-demo" ,
42- description = "Delete data created by the TestGen demo" ,
43- )
44- tg_delete_parser .set_defaults (action = "tg-delete-demo" )
26+ return parser
27+
28+
29+ def init_signal_handler ():
30+ def _keyboard_interrupt (_signum , _frame ):
31+ raise KeyboardInterrupt
32+
33+ # Docker sends SIGTERM on Ctrl-C, so we raise a KeyboardInterrupt
34+ signal .signal (signal .SIGTERM , _keyboard_interrupt )
4535
46- return parser .parse_args ()
4736
4837def main ():
49- args = init_args ()
38+ init_signal_handler ()
39+ args = init_parser ().parse_args ()
5040 config = Config ()
51-
52- if args .action == "obs-run-demo" :
53- run_obs_demo (config )
54- elif args .action == "obs-delete-demo" :
55- delete_obs_demo (config )
56- elif args .action == "obs-heartbeat-demo" :
57- run_heartbeat_demo (config )
58- elif args .action == "tg-run-demo" :
59- run_tg_demo (config )
60- elif args .action == "tg-delete-demo" :
61- delete_tg_demo (config )
62- else :
63- print (f"Command [{ args .action } ] not recognized." )
41+ args .func (config )
6442
6543
6644if __name__ == "__main__" :
67- main ()
45+ main ()
0 commit comments