aboutsummaryrefslogtreecommitdiff
path: root/rumba/testbeds
diff options
context:
space:
mode:
authorSander Vrijders <sander.vrijders@ugent.be>2017-04-11 19:12:53 +0200
committerSander Vrijders <sander.vrijders@ugent.be>2017-04-11 19:12:53 +0200
commitf5f9fba3d6b657fd5daa31e4981c055a05c596e8 (patch)
treedef87ce8de8656f07cf9f79b209d794f5414b0c1 /rumba/testbeds
parent662c33bf7ce9ddf3bcc77f7d5f51c958d2b837ad (diff)
downloadrumba-f5f9fba3d6b657fd5daa31e4981c055a05c596e8.tar.gz
rumba-f5f9fba3d6b657fd5daa31e4981c055a05c596e8.zip
ssh_support: Pass SSHConfig instead of only hostname
Only the hostname was passed to the ssh_support component. This passes an object that can also hold the port number. It can be extended to take other things as well, such as a proxy.
Diffstat (limited to 'rumba/testbeds')
-rw-r--r--rumba/testbeds/emulab.py23
-rw-r--r--rumba/testbeds/jfed.py4
-rw-r--r--rumba/testbeds/qemu.py4
3 files changed, 17 insertions, 14 deletions
diff --git a/rumba/testbeds/emulab.py b/rumba/testbeds/emulab.py
index c4dbe36..aee438e 100644
--- a/rumba/testbeds/emulab.py
+++ b/rumba/testbeds/emulab.py
@@ -43,6 +43,7 @@ class Testbed(mod.Testbed):
self.url = url
self.image = image
self.ip = dict()
+ self.ops_ssh_config = mod.SSHConfig(self.ops_server())
def ops_server(self):
'''
@@ -76,7 +77,7 @@ class Testbed(mod.Testbed):
@return: list of created experiments (strings)
'''
cmd = '/usr/testbed/bin/sslxmlrpc_client.py -m experiment getlist'
- out = ssh.execute_command(self, self.ops_server(), cmd)
+ out = ssh.execute_command(self, self.ops_ssh_config, cmd)
try:
if project_name != None:
@@ -98,7 +99,7 @@ class Testbed(mod.Testbed):
self.exp_name + \
' direction=in'
- output = ssh.execute_command(self, self.ops_server(), cmd)
+ output = ssh.execute_command(self, self.ops_ssh_config, cmd)
return output
@@ -131,8 +132,8 @@ class Testbed(mod.Testbed):
'" exp="' + exp_name + '" noswapin=true ' + \
'nsfilepath="' + dest_file_name + '"'
- ssh.execute_command(self, self.ops_server(), cmd, time_out=None)
- ssh.execute_command(self, self.ops_server(), 'rm ' + 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)
print("New experiment succesfully created.")
def generate_ns_script(self, experiment):
@@ -182,12 +183,12 @@ class Testbed(mod.Testbed):
self.exp_name + \
' -a | grep State | cut -f2,2 -d " "'
- res = ssh.execute_command(self, self.ops_server(), cmd)
+ res = ssh.execute_command(self, self.ops_ssh_config, cmd)
active = False
if res == "active":
active = True
while active != True:
- res = ssh.execute_command(self, self.ops_server(), cmd)
+ res = ssh.execute_command(self, self.ops_ssh_config, cmd)
if res == "active":
active = True
print("Still waiting")
@@ -201,9 +202,11 @@ class Testbed(mod.Testbed):
@param experiment: the experiment
'''
- node_full_name = self.full_name(experiment.nodes[0].name)
+ for node in experiment.nodes:
+ node.ssh_config.hostname = self.full_name(experiment.nodes[0].name)
+
cmd = 'cat /var/emulab/boot/topomap'
- topomap = ssh.execute_command(self, node_full_name, cmd)
+ topomap = ssh.execute_command(self, experiment.nodes[0].ssh_config, cmd)
# Almost as ugly as yo momma
index = topomap.rfind("# lans")
topo_array = topomap[:index].split('\\n')[1:-1]
@@ -224,8 +227,7 @@ class Testbed(mod.Testbed):
for node in experiment.nodes:
cmd = 'cat /var/emulab/boot/ifmap'
- node_full_name = self.full_name(node.name)
- output = ssh.execute_command(self, node_full_name, cmd)
+ output = ssh.execute_command(self, node.ssh_config, cmd)
output = re.split('\\\\n', output)
for item in output:
item = item.split()
@@ -233,7 +235,6 @@ class Testbed(mod.Testbed):
if isinstance(ipcp, mod.ShimEthIPCP):
if self.ip[ipcp] == item[1]:
ipcp.ifname = item[0]
- node.full_name = self.full_name(node.name)
def swap_in(self, experiment):
self._create_experiment(experiment)
diff --git a/rumba/testbeds/jfed.py b/rumba/testbeds/jfed.py
index f56e5ba..0dfc904 100644
--- a/rumba/testbeds/jfed.py
+++ b/rumba/testbeds/jfed.py
@@ -111,8 +111,8 @@ class Testbed(mod.Testbed):
for node in experiment.nodes:
auth_name_r = self.auth_name.replace(".", "-")
- node.full_name = node.name + "." + self.exp_name + "." + \
- auth_name_r + "." + self.auth_name
+ node.ssh_config.hostname = node.name + "." + self.exp_name + "." + \
+ auth_name_r + "." + self.auth_name
subprocess.call(["java", "-jar", self.jfed_jar, "create", "-S", \
self.proj_name, "--rspec", \
diff --git a/rumba/testbeds/qemu.py b/rumba/testbeds/qemu.py
index 1c5d486..b42cf5d 100644
--- a/rumba/testbeds/qemu.py
+++ b/rumba/testbeds/qemu.py
@@ -165,13 +165,15 @@ class Testbed(mod.Testbed):
vmid = 1
for node in experiment.nodes:
- name = node.full_name
+ name = node.name
vm = self.vms.setdefault(name, {'vm': node, 'ports': []})
fwdp = base_port + vmid
fwdc = fwdp + 10000
mac = '00:0a:0a:0a:%02x:%02x' % (vmid, 99)
vm['ssh'] = fwdp
vm['id'] = vmid
+ node.ssh_config.hostname = "localhost"
+ node.ssh_config.port = fwdp
vars_dict = {'fwdp': fwdp, 'id': vmid, 'mac': mac,
'bzimage': self.bzimage,