X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=src%2Fnepi%2Fresources%2Flinux%2Fgretunnel.py;h=6ca021b105957514d4330f66eca8a3160f85b3a6;hb=e55924b6886bd7382a28e1ae235c4810f852e163;hp=62f94cff12f3ad5e56927ff0187e0851f701fc7f;hpb=731febb6e113ad858232827fd03f9a932dea16b5;p=nepi.git diff --git a/src/nepi/resources/linux/gretunnel.py b/src/nepi/resources/linux/gretunnel.py index 62f94cff..6ca021b1 100644 --- a/src/nepi/resources/linux/gretunnel.py +++ b/src/nepi/resources/linux/gretunnel.py @@ -3,9 +3,8 @@ # Copyright (C) 2013 INRIA # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation; # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -18,8 +17,7 @@ # Author: Alina Quereilhac from nepi.execution.attribute import Attribute, Flags, Types -from nepi.execution.resource import clsinit_copy, ResourceState, \ - reschedule_delay +from nepi.execution.resource import clsinit_copy, ResourceState from nepi.resources.linux.tunnel import LinuxTunnel from nepi.util.sshfuncs import ProcStatus from nepi.util.timefuncs import tnow, tdiffsec @@ -31,9 +29,8 @@ import os @clsinit_copy class LinuxGRETunnel(LinuxTunnel): - _rtype = "LinuxGRETunnel" + _rtype = "linux::GRETunnel" _help = "Constructs a tunnel between two Linux endpoints using a UDP connection " - _backend = "linux" def log_message(self, msg): return " guid %d - GRE tunnel %s - %s - %s " % (self.guid, @@ -47,7 +44,7 @@ class LinuxGRETunnel(LinuxTunnel): connected = [] for guid in self.connections: rm = self.ec.get_resource(guid) - if hasattr(rm, "gre_connect_command"): + if hasattr(rm, "gre_connect"): connected.append(rm) return connected @@ -55,48 +52,11 @@ class LinuxGRETunnel(LinuxTunnel): # Return the command to execute to initiate the connection to the # other endpoint connection_run_home = self.run_home(endpoint) - gre_connect_command = endpoint.gre_connect_command( - remote_endpoint, connection_run_home) - - # upload command to connect.sh script - shfile = os.path.join(self.app_home(endpoint), "gre-connect.sh") - endpoint.node.upload(gre_connect_command, - shfile, - text = True, - overwrite = False) - - # invoke connect script - cmd = "bash %s" % shfile - (out, err), proc = endpoint.node.run(cmd, self.run_home(endpoint)) - - # check if execution errors occurred - msg = " Failed to connect endpoints " - - if proc.poll() or err: - self.error(msg, out, err) - raise RuntimeError, msg - - # Wait for pid file to be generated - pid, ppid = endpoint.node.wait_pid(self.run_home(endpoint)) - - # If the process is not running, check for error information - # on the remote machine - if not pid or not ppid: - (out, err), proc = endpoint.node.check_errors(self.run_home(endpoint)) - # Out is what was written in the stderr file - if err: - msg = " Failed to start command '%s' " % command - self.error(msg, out, err) - raise RuntimeError, msg - - # After creating the TAP, the pl-vif-create.py script - # will write the name of the TAP to a file. We wait until - # we can read the interface name from the file. - vif_name = endpoint.wait_vif_name() - endpoint.set("deviceName", vif_name) - - # Wait if name - return True + connection_app_home = self.app_home(endpoint) + data = endpoint.gre_connect(remote_endpoint, + connection_app_home, + connection_run_home) + return data def establish_connection(self, endpoint, remote_endpoint, data): pass @@ -110,7 +70,7 @@ class LinuxGRETunnel(LinuxTunnel): m = re.search("(\d+)% packet loss", str(out)) if not m or int(m.groups()[0]) == 100: - msg = " Erroro establishing GRE Tunnel" + msg = " Error establishing GRE Tunnel" self.error(msg, out, err) raise RuntimeError, msg