Linux/Ns-3/Dce cross experiments
[nepi.git] / src / nepi / resources / linux / node.py
index e63a92e..ff19bbb 100644 (file)
@@ -844,17 +844,18 @@ class LinuxNode(ResourceManager):
         return self.execute(cmd, with_lock = True)
         
     def run_and_wait(self, command, home, 
-            shfile = "cmd.sh",
-            env = None,
-            overwrite = True,
-            pidfile = "pidfile", 
-            ecodefile = "exitcode", 
-            stdin = None, 
-            stdout = "stdout", 
-            stderr = "stderr", 
-            sudo = False,
-            tty = False,
-            raise_on_error = True):
+            shfile="cmd.sh",
+            env=None,
+            overwrite=True,
+            wait_run=True,
+            pidfile="pidfile", 
+            ecodefile="exitcode", 
+            stdin=None, 
+            stdout="stdout", 
+            stderr="stderr", 
+            sudo=False,
+            tty=False,
+            raise_on_error=True):
         """
         Uploads the 'command' to a bash script in the host.
         Then runs the script detached in background in the host, and
@@ -893,25 +894,26 @@ class LinuxNode(ResourceManager):
                 pidfile = pidfile, 
                 raise_on_error = raise_on_error)
 
-        # wait until command finishes to execute
-        self.wait_run(pid, ppid)
-      
-        (eout, err), proc = self.check_errors(home,
-            ecodefile = ecodefile,
-            stderr = stderr)
+        if wait_run:
+            # wait until command finishes to execute
+            self.wait_run(pid, ppid)
+          
+            (eout, err), proc = self.check_errors(home,
+                ecodefile = ecodefile,
+                stderr = stderr)
 
-        # Out is what was written in the stderr file
-        if err:
-            msg = " Failed to run command '%s' " % command
-            self.error(msg, eout, err)
+            # Out is what was written in the stderr file
+            if err:
+                msg = " Failed to run command '%s' " % command
+                self.error(msg, eout, err)
 
-            if raise_on_error:
-                raise RuntimeError, msg
+                if raise_on_error:
+                    raise RuntimeError, msg
 
         (out, oerr), proc = self.check_output(home, stdout)
         
         return (out, err), proc
-
+        
     def exitcode(self, home, ecodefile = "exitcode"):
         """
         Get the exit code of an application.
@@ -935,10 +937,10 @@ class LinuxNode(ResourceManager):
         return ExitCode.ERROR
 
     def upload_command(self, command, 
-            shfile = "cmd.sh",
-            ecodefile = "exitcode",
-            overwrite = True,
-            env = None):
+            shfile="cmd.sh",
+            ecodefile="exitcode",
+            overwrite=True,
+            env=None):
         """ Saves the command as a bash script file in the remote host, and
         forces to save the exit code of the command execution to the ecodefile
         """
@@ -958,9 +960,9 @@ class LinuxNode(ResourceManager):
         # Add environ to command
         command = environ + command
 
-        return self.upload(command, shfile, text = True, overwrite = overwrite)
+        return self.upload(command, shfile, text=True, overwrite=overwrite)
 
-    def format_environment(self, env, inline = False):
+    def format_environment(self, env, inline=False):
         """ Formats the environment variables for a command to be executed
         either as an inline command
         (i.e. export PYTHONPATH=src/..; export LALAL= ..;python script.py) or