X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=init%2Finit_script.py;fp=init%2Finit_script.py;h=1d6e501602f771762594f27167b82b3c77765e87;hb=6f5a7b69bb045ed82506e14cef9b0cdc6554a613;hp=f357f90f0f557a381b32a79a79d7b119d14f6a2b;hpb=69a830676cee9b8a37bea3b2e59261514551be23;p=ric-app%2Fadmin.git diff --git a/init/init_script.py b/init/init_script.py index f357f90..1d6e501 100644 --- a/init/init_script.py +++ b/init/init_script.py @@ -28,8 +28,19 @@ import json; import sys; import os; +import signal; +import time; +def signal_handler(signum, frame): + print("Received signal {0}\n".format(signum)); + if(xapp_subprocess == None or xapp_pid == None): + print("No xapp running. Quiting without sending signal to xapp\n"); + else: + print("Sending signal {0} to xapp ...".format(signum)); + xapp_subprocess.send_signal(signum); + + def parseConfigJson(config): for key in config: print("Processing ", key); @@ -113,6 +124,10 @@ def getEnvs(config): return True; + +# Global variables ... +xapp_subprocess = None; +xapp_pid = None; ParseSection = {}; xapp_port = 0; ParseSection["rmr"] = getRMRTable; @@ -137,7 +152,7 @@ if __name__ == "__main__": sys.exit(1); if len(sys.argv) > 2: - cmd = sys.argv[2]; + cmd[0] = sys.argv[2]; with open(config_file, 'r') as f: try: @@ -153,5 +168,22 @@ if __name__ == "__main__": sys.exit(1); else: - print("Executing xAPP ...."); - p = subprocess.check_call(cmd); + + # Register signal handlers + signal.signal(signal.SIGINT, signal_handler); + signal.signal(signal.SIGTERM, signal_handler); + + # Start the xAPP + #print("Executing xAPP ...."); + xapp_subprocess = subprocess.Popen(cmd, shell = False, stdin=None, stdout=None, stderr = None); + xapp_pid = xapp_subprocess.pid; + + # Periodically poll the process every 5 seconds to check if still alive + while(1): + xapp_status = xapp_subprocess.poll(); + if xapp_status == None: + time.sleep(5); + else: + print("XaPP terminated via signal {0}\n".format(-1 * xapp_status)); + break; +