log line when terminating
authorThierry Parmentelat <thierry.parmentelat@inria.fr>
Sun, 12 Jan 2014 23:34:42 +0000 (00:34 +0100)
committerThierry Parmentelat <thierry.parmentelat@inria.fr>
Sun, 12 Jan 2014 23:34:42 +0000 (00:34 +0100)
nodemanager.py
tools.py

index 57c96c7..4b030d5 100755 (executable)
@@ -183,6 +183,7 @@ class NodeManager:
             # set log level
             if (self.options.verbose):
                 logger.set_level(logger.LOG_VERBOSE)
+            tools.init_signals()
 
             # Load /etc/planetlab/plc_config
             config = Config(self.options.config)
@@ -261,7 +262,10 @@ If this is not the case, please remove the pid file %s. -- exiting""" % (other_p
                 work_duration=int(work_end-work_beg)
                 logger.log('nodemanager: mainloop has worked for %s s - sleeping for %d s'%(work_duration,delay))
                 time.sleep(delay)
-        except: logger.log_exc("nodemanager: failed in run")
+        except SystemExit:
+            pass
+        except: 
+            logger.log_exc("nodemanager: failed in run")
 
 def run():
     logger.log("======================================== Entering nodemanager.py")
index dbfa55f..f081826 100644 (file)
--- a/tools.py
+++ b/tools.py
@@ -9,6 +9,7 @@ import threading
 import subprocess
 import shutil
 import sys
+import signal
 
 import logger
 
@@ -328,3 +329,12 @@ def command_in_slice (slicename, argv):
     logger.log("command_in_slice: WARNING: could not find a valid virt")
     return argv
 
+####################
+def init_signals ():
+    def handler (signum, frame):
+        logger.log("Received signal %d - exiting"%signum)
+        exit(1)
+    signal.signal(signal.SIGHUP,handler)
+    signal.signal(signal.SIGQUIT,handler)
+    signal.signal(signal.SIGINT,handler)
+    signal.signal(signal.SIGTERM,handler)