added a cleanProcessesAfter attribute to the linux::Node class, which defaults to...
[nepi.git] / src / nepi / resources / linux / node.py
index 8c5a6c5..b0d63c9 100644 (file)
@@ -3,9 +3,8 @@
 #    Copyright (C) 2013 INRIA
 #
 #    This program is free software: you can redistribute it and/or modify
-#    it under the terms of the GNU General Public License as published by
-#    the Free Software Foundation, either version 3 of the License, or
-#    (at your option) any later version.
+#    it under the terms of the GNU General Public License version 2 as
+#    published by the Free Software Foundation;
 #
 #    This program is distributed in the hope that it will be useful,
 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -184,6 +183,13 @@ class LinuxNode(ResourceManager):
                 default = False,
                 flags = Flags.Design)
         
+        clean_processes_after = Attribute("cleanProcessesAfter", 
+                """Kill all running processes after starting experiment
+This might be dangerous when using user root""",
+                type = Types.Bool,
+                default = True,
+                flags = Flags.Design)
+        
         tear_down = Attribute("tearDown", "Bash script to be executed before " + \
                 "releasing the resource",
                 flags = Flags.Design)
@@ -207,6 +213,7 @@ class LinuxNode(ResourceManager):
         cls._register_attribute(clean_home)
         cls._register_attribute(clean_experiment)
         cls._register_attribute(clean_processes)
+        cls._register_attribute(clean_processes_after)
         cls._register_attribute(tear_down)
         cls._register_attribute(gateway_user)
         cls._register_attribute(gateway)
@@ -371,9 +378,9 @@ class LinuxNode(ResourceManager):
                 ip = sshfuncs.gethostbyname(self.get("hostname"))
                 self.set("ip", ip)
             except:
-                msg = "Local DNS can not resolve hostname %s" % self.get("hostname") 
-                self.error(msg)
-
+                if self.get("gateway") is None:
+                    msg = "Local DNS can not resolve hostname %s" % self.get("hostname") 
+                    self.error(msg)
 
         super(LinuxNode, self).do_provision()
 
@@ -407,7 +414,8 @@ class LinuxNode(ResourceManager):
         if tear_down:
             self.execute(tear_down)
 
-        self.clean_processes()
+        if self.get("cleanProcessesAfter"):
+            self.clean_processes()
 
         super(LinuxNode, self).do_release()