X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=init%2Finit_script.py;h=1d6e501602f771762594f27167b82b3c77765e87;hb=refs%2Fchanges%2F72%2F2072%2F1;hp=3073b17d666ebe8b0c731831c79e2bee4fea3386;hpb=b9d7e9c232a4371ddfed51c58e5a57f87b057229;p=ric-app%2Fadmin.git diff --git a/init/init_script.py b/init/init_script.py index 3073b17..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; @@ -136,6 +151,8 @@ if __name__ == "__main__": print("Error! No configuration file specified\n"); sys.exit(1); + if len(sys.argv) > 2: + cmd[0] = sys.argv[2]; with open(config_file, 'r') as f: try: @@ -151,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; +