diff options
| -rw-r--r-- | rumba/prototypes/ouroboros.py | 3 | ||||
| -rw-r--r-- | rumba/ssh_support.py | 4 | ||||
| -rw-r--r-- | rumba/testbeds/emulab.py | 45 | ||||
| -rw-r--r-- | rumba/testbeds/jfed.py | 6 | 
4 files changed, 48 insertions, 10 deletions
diff --git a/rumba/prototypes/ouroboros.py b/rumba/prototypes/ouroboros.py index 49323c5..97cd05f 100644 --- a/rumba/prototypes/ouroboros.py +++ b/rumba/prototypes/ouroboros.py @@ -50,7 +50,8 @@ class Experiment(mod.Experiment):          cmds = list()          cmds.append("sudo apt-get update") -        cmds.append("sudo apt-get install cmake protobuf-c-compiler git --yes") +        cmds.append("sudo apt-get install cmake protobuf-c-compiler " + +                    "git libfuse-dev --yes")          cmds.append("sudo rm -r ~/ouroboros/build")          cmds.append("cd ~/ouroboros; sudo ./install_debug.sh /") diff --git a/rumba/ssh_support.py b/rumba/ssh_support.py index 64d17e6..8b07c13 100644 --- a/rumba/ssh_support.py +++ b/rumba/ssh_support.py @@ -163,9 +163,9 @@ def execute_commands(testbed, ssh_config, commands, time_out=3):              chan.exec_command(command)          except paramiko.ssh_exception.SSHException as e:              raise SSHException('Failed to execute command') -        if (chan.recv_exit_status() != 0): -            raise SSHException('A remote command returned an error')          o = _print_stream(stdout) +        if (chan.recv_exit_status() != 0): +            raise SSHException('A remote command returned an error.\n' + o)      ssh_client.close()      return o diff --git a/rumba/testbeds/emulab.py b/rumba/testbeds/emulab.py index 66c5b7f..7568815 100644 --- a/rumba/testbeds/emulab.py +++ b/rumba/testbeds/emulab.py @@ -102,6 +102,8 @@ class Testbed(mod.Testbed):          Swaps experiment in          @param self: testbed info + +        @return: Is the experiment newly swapped in          """          cmd = '/usr/testbed/bin/sslxmlrpc_client.py swapexp proj=' + \                self.proj_name + \ @@ -109,9 +111,17 @@ class Testbed(mod.Testbed):                self.exp_name + \                ' direction=in' -        output = ssh.execute_command(self, self.ops_ssh_config, cmd) +        try: +            ssh.execute_command(self, self.ops_ssh_config, cmd) +        except ssh.SSHException as e: +            line = re.findall(r'not swapped out', str(e)) +            if line: +                logger.info("Experiment is already swapped in.") +                return False +            else: +                raise e -        return output +        return True      def _create_experiment(self, experiment):          """ @@ -142,9 +152,14 @@ class Testbed(mod.Testbed):                '" exp="' + exp_name + '" noswapin=true ' + \                'nsfilepath="' + dest_file_name + '"' -        ssh.execute_command(self, self.ops_ssh_config, cmd, time_out=None) -        ssh.execute_command(self, self.ops_ssh_config, 'rm ' + dest_file_name) -        logger.info("New experiment succesfully created.") +        try: +            ssh.execute_command(self, self.ops_ssh_config, cmd, time_out=None) +            logger.info("New experiment succesfully created.") +        except: +            logger.info("Experiment already exists.") +        finally: +            ssh.execute_command(self, self.ops_ssh_config, +                                'rm ' + dest_file_name)      def generate_ns_script(self, experiment):          """ @@ -250,6 +265,22 @@ class Testbed(mod.Testbed):      def swap_in(self, experiment):          self._create_experiment(experiment) -        self.swap_exp_in() -        self.wait_until_nodes_up() +        wait = self.swap_exp_in() +        if wait: +            self.wait_until_nodes_up()          self.complete_experiment_graph(experiment) + + +    def swap_out(self, experiment): +        """ +        Swaps experiment out + +        @param self: testbed info +        """ +        cmd = '/usr/testbed/bin/sslxmlrpc_client.py swapexp proj=' + \ +              self.proj_name + \ +              ' exp=' + \ +              self.exp_name + \ +              ' direction=out' + +        ssh.execute_command(self, self.ops_ssh_config, cmd) diff --git a/rumba/testbeds/jfed.py b/rumba/testbeds/jfed.py index d938179..a99a077 100644 --- a/rumba/testbeds/jfed.py +++ b/rumba/testbeds/jfed.py @@ -156,6 +156,12 @@ class Testbed(mod.Testbed):          file.write(doc.toprettyxml())          file.close() +    def swap_out(self, experiment): +        subprocess.call(["java", "-jar", self.jfed_jar, "delete", "-S", +                         self.proj_name, "-s", +                         self.exp_name, "-p", self.cert_file, +                         "-P", self.password]) +      def swap_in(self, experiment):          self.create_rspec(experiment)  | 
