X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=src%2Fnepi%2Fresources%2Flinux%2Ftunnel.py;h=1bb587d2334d6aa00c7f8b55e0624677e110c03f;hb=6285ca51026efb69642eea9dfc7c480e722d84a9;hp=c0e4a7324082faa1c9ef9082b40f9aa300e52baf;hpb=47bfadde39e0d22c3df7e2bd1cd4d52f07ad8c0a;p=nepi.git diff --git a/src/nepi/resources/linux/tunnel.py b/src/nepi/resources/linux/tunnel.py index c0e4a732..1bb587d2 100644 --- a/src/nepi/resources/linux/tunnel.py +++ b/src/nepi/resources/linux/tunnel.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 @@ -17,8 +16,7 @@ # # Author: Alina Quereilhac -from nepi.execution.resource import clsinit_copy, ResourceState, \ - reschedule_delay +from nepi.execution.resource import clsinit_copy, ResourceState from nepi.resources.linux.application import LinuxApplication from nepi.util.timefuncs import tnow, tdiffsec @@ -29,9 +27,8 @@ state_check_delay = 0.5 @clsinit_copy class LinuxTunnel(LinuxApplication): - _rtype = "abstract::LinuxTunnel" + _rtype = "abstract::linux::Tunnel" _help = "Constructs a tunnel between two Linux endpoints" - _backend = "linux" def __init__(self, ec, guid): super(LinuxTunnel, self).__init__(ec, guid) @@ -66,6 +63,9 @@ class LinuxTunnel(LinuxApplication): def run_home(self, endpoint): return os.path.join(self.app_home(endpoint), self.ec.run_id) + def endpoint_mkdir(self, endpoint): + endpoint.node.mkdir(self.run_home(endpoint)) + def initiate_connection(self, endpoint, remote_endpoint): raise NotImplementedError @@ -83,9 +83,10 @@ class LinuxTunnel(LinuxApplication): def do_provision(self): # create run dir for tunnel on each node - self.endpoint1.node.mkdir(self.run_home(self.endpoint1)) - self.endpoint2.node.mkdir(self.run_home(self.endpoint2)) + self.endpoint_mkdir(self.endpoint1) + self.endpoint_mkdir(self.endpoint2) + self.debug("Initiate the connection") # Start 2 step connection # Initiate connection from endpoint 1 to endpoint 2 data1 = self.initiate_connection(self.endpoint1, self.endpoint2) @@ -93,12 +94,14 @@ class LinuxTunnel(LinuxApplication): # Initiate connection from endpoint 2 to endpoint 1 data2 = self.initiate_connection(self.endpoint2, self.endpoint1) + self.debug("Establish the connection") # Establish connection from endpoint 1 to endpoint 2 self.establish_connection(self.endpoint1, self.endpoint2, data2) # Establish connection from endpoint 2 to endpoint 1 self.establish_connection(self.endpoint2, self.endpoint1, data1) + self.debug("Verify the connection") # check if connection was successful on both sides self.verify_connection(self.endpoint1, self.endpoint2) self.verify_connection(self.endpoint2, self.endpoint1) @@ -110,7 +113,7 @@ class LinuxTunnel(LinuxApplication): def do_deploy(self): if (not self.endpoint1 or self.endpoint1.state < ResourceState.READY) or \ (not self.endpoint2 or self.endpoint2.state < ResourceState.READY): - self.ec.schedule(reschedule_delay, self.deploy) + self.ec.schedule(self.reschedule_delay, self.deploy) else: self.do_discover() self.do_provision() @@ -126,11 +129,12 @@ class LinuxTunnel(LinuxApplication): else: msg = " Failed to execute command '%s'" % command self.error(msg, out, err) - raise RuntimeError, msg + raise RuntimeError(msg) def do_stop(self): """ Stops application execution """ + if self.state == ResourceState.STARTED: self.info("Stopping tunnel") @@ -155,7 +159,6 @@ class LinuxTunnel(LinuxApplication): return self._state - def valid_connection(self, guid): # TODO: Validate! return True