From 6503ca2369a5cc876f33bcbc41b10972602571ea Mon Sep 17 00:00:00 2001 From: Sander Vrijders Date: Wed, 25 Oct 2017 18:35:42 +0200 Subject: prototypes, testbeds, ssh_support: Add several fixes This adds several fixes in order for rlite to function on the exogeni testbed. --- rumba/testbeds/jfed.py | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) (limited to 'rumba/testbeds/jfed.py') diff --git a/rumba/testbeds/jfed.py b/rumba/testbeds/jfed.py index c79b1aa..8973335 100644 --- a/rumba/testbeds/jfed.py +++ b/rumba/testbeds/jfed.py @@ -231,23 +231,19 @@ class Testbed(mod.Testbed): rspec = xml.parse(self.manifest) xml_nodes = rspec.getElementsByTagName("node") - # Complete details of the nodes after swapin - logger.info("Sleeping for two seconds to avoid contacting jfed nodes " - "too soon.") - time.sleep(2) for xml_node in xml_nodes: n_name = xml_node.getAttribute("client_id") intfs = xml_node.getElementsByTagName("interface") - got = False + node_n = None for node in experiment.nodes: if node.name == n_name: node_n = node - got = True - if not got: - logger.error("Not found node %s", n_name) + break + if node_n is None: + logger.error("Didn't find node %s", n_name) - hostname=None + hostname = None if "wall" in self.auth_name: hostname = node_n.name + "." + self.exp_name + "." + \ auth_name_r + "." + self.auth_name @@ -258,29 +254,28 @@ class Testbed(mod.Testbed): auth_name_r + "." + self.auth_name if "exogeni" in self.auth_name: - for services_node in xml_node.getElementsByTagName("services"): - for login_node in services_node.getElementsByTagName("login"): - hostname = login_node.getAttribute("hostname") - break + s_node = xml_node.getElementsByTagName("services")[0] + l_node = s_node.getElementsByTagName("login")[0] + hostname = l_node.getAttribute("hostname") node_n.ssh_config.hostname = hostname for intf in intfs: aux_mac_address = intf.getAttribute("mac_address") - mac = ":".join( - [aux_mac_address[i:i+2] for i in range(0, 12, 2)] - ) + + if "wall" in self.auth_name: + mac = ":".join( + [aux_mac_address[i:i+2] for i in range(0, 12, 2)] + ) + else: + mac = aux_mac_address + command = ( 'echo "mac=\\"\$1\\"; cd / && ./sbin/ifconfig -a | ' 'awk \'/^[a-z]/ { if ( \\"\'\\"\$mac\\"\'\\" == \$5 )' ' print \$1}\'" > mac2ifname.sh') ssh_support.execute_command(self, node_n.ssh_config, command) - # ssh_support.copy_path_to_testbed( - # self, - # node_n.ssh_config, - # os.path.join(dir_path, 'mac2ifname.sh'), - # '') ssh_support.execute_command( self, node_n.ssh_config, -- cgit v1.2.3