aboutsummaryrefslogtreecommitdiff
path: root/rumba/prototypes/ouroboros.py
diff options
context:
space:
mode:
Diffstat (limited to 'rumba/prototypes/ouroboros.py')
-rw-r--r--rumba/prototypes/ouroboros.py49
1 files changed, 17 insertions, 32 deletions
diff --git a/rumba/prototypes/ouroboros.py b/rumba/prototypes/ouroboros.py
index 33ecd0b..97f6e1a 100644
--- a/rumba/prototypes/ouroboros.py
+++ b/rumba/prototypes/ouroboros.py
@@ -31,7 +31,8 @@ import rumba.ssh_support as ssh
import rumba.model as mod
import rumba.multiprocess as m_processing
import rumba.log as log
-import rumba.testbeds.faketestbed as fake
+import rumba.testbeds.local as local
+import rumba.testbeds.dockertb as docker
logger = log.get_logger(__name__)
@@ -45,6 +46,8 @@ class Experiment(mod.Experiment):
mod.Experiment.__init__(self, testbed, nodes, git_repo, git_branch)
self.r_ipcps = dict()
+ self.set_startup_command("irmd")
+
@staticmethod
def make_executor(node, packages, testbed):
def executor(commands):
@@ -68,19 +71,20 @@ class Experiment(mod.Experiment):
self.exec_local_cmd(cmd)
def setup_ouroboros(self):
- if isinstance(self.testbed, fake.Testbed):
+ if isinstance(self.testbed, docker.Testbed):
+ return
+
+ if isinstance(self.testbed, local.Testbed):
subprocess.check_call('sudo -v'.split())
self.irmd = subprocess.Popen(["sudo", "irmd"])
logger.info("Started IRMd, sleeping 2 seconds...")
time.sleep(2)
else:
for node in self.nodes:
- ssh.execute_command(self.testbed, node.ssh_config,
- "sudo nohup irmd > /dev/null &",
- time_out=None)
+ node.execute_command("sudo nohup irmd > /dev/null &", time_out=None)
def install_ouroboros(self):
- if isinstance(self.testbed, fake.Testbed):
+ if isinstance(self.testbed, local.Testbed):
return
packages = ["cmake", "protobuf-c-compiler", "git", "libfuse-dev",
@@ -120,7 +124,7 @@ class Experiment(mod.Experiment):
cmd = "irm i c n " + ipcp.name
if isinstance(ipcp.dif, mod.ShimEthDIF):
- if isinstance(self.testbed, fake.Testbed):
+ if isinstance(self.testbed, local.Testbed):
cmd += " type local layer " + ipcp.dif.name
else:
cmd += " type eth-llc dev " + ipcp.ifname
@@ -154,11 +158,7 @@ class Experiment(mod.Experiment):
# Postpone registrations
self.r_ipcps[ipcp] = cmds2
- if isinstance(self.testbed, fake.Testbed):
- self.exec_local_cmds(cmds)
- else:
- ssh.execute_commands(self.testbed, node.ssh_config, cmds,
- time_out=None)
+ node.execute_commands(cmds, time_out=None)
def enroll_dif(self, el):
for e in el:
@@ -167,13 +167,8 @@ class Experiment(mod.Experiment):
# Execute postponed registration
if e['enroller'] in self.r_ipcps:
- if isinstance(self.testbed, fake.Testbed):
- self.exec_local_cmds(self.r_ipcps[e['enroller']])
- else:
- ssh.execute_commands(self.testbed,
- e['enroller'].node.ssh_config,
- self.r_ipcps[e['enroller']],
- time_out=None)
+ e['enroller'].node.execute_commands(self.r_ipcps[e['enroller']],
+ time_out=None)
self.r_ipcps.pop(e['enroller'], None)
cmd = "irm r n " + ipcp.name
@@ -188,12 +183,7 @@ class Experiment(mod.Experiment):
cmd += " layer " + dif_b.name
cmds.append(cmd)
- if isinstance(self.testbed, fake.Testbed):
- self.exec_local_cmds(cmds)
- else:
- ssh.execute_commands(self.testbed,
- e['enrollee'].node.ssh_config,
- cmds, time_out=None)
+ e['enrollee'].node.execute_commands(cmds, time_out=None)
def setup_flows(self, el, comp):
for e in el:
@@ -201,12 +191,7 @@ class Experiment(mod.Experiment):
cmd = "irm i conn n " + ipcp.name + " comp " + \
comp + " dst " + e['dst'].name
- if isinstance(self.testbed, fake.Testbed):
- self.exec_local_cmd(cmd)
- else:
- ssh.execute_command(self.testbed,
- ipcp.node.ssh_config,
- cmd, time_out=None)
+ ipcp.node.execute_command(cmd, time_out=None)
def _install_prototype(self):
logger.info("Installing Ouroboros...")
@@ -230,6 +215,6 @@ class Experiment(mod.Experiment):
logger.info("All done, have fun!")
def _terminate_prototype(self):
- if isinstance(self.testbed, fake.Testbed):
+ if isinstance(self.testbed, local.Testbed):
logger.info("Killing IRMd...")
subprocess.check_call('sudo killall -15 irmd'.split())