diff options
author | MCapitani <m.capitani@nextworks.it> | 2017-09-18 13:34:11 +0000 |
---|---|---|
committer | MCapitani <m.capitani@nextworks.it> | 2017-09-18 13:34:11 +0000 |
commit | c14f1a95ff9691fc970c9af4988eb8a4d1d5a9ef (patch) | |
tree | c93c663be034a7ff58935c0f263f0eff132175af | |
parent | 943cfb97dabe94c5db4efbe33892adcc071c3bd1 (diff) | |
parent | fd32fd1d2e417b1abafb9ac780e900bde19af46a (diff) | |
download | rumba-c14f1a95ff9691fc970c9af4988eb8a4d1d5a9ef.tar.gz rumba-c14f1a95ff9691fc970c9af4988eb8a4d1d5a9ef.zip |
Merge branch 'emulab-fix' into 'master'
testbeds: emulab: Continue if experiment is swapped in
See merge request arcfire/rumba!68
-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) |