X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=src%2Fnepi%2Fresources%2Fplanetlab%2Fopenvswitch%2Fovsport.py;h=a7155fb08fae2bc9d5661ef1bad741ab987d3c3e;hb=99d8b2a4431d8fafd0385e189375106d46f1abd9;hp=d3e9d799f9ef0f3c9b0c536b956149887c39de43;hpb=c0cf4d2c1021bf3c0fda14f093f1a4e536b4b95d;p=nepi.git diff --git a/src/nepi/resources/planetlab/openvswitch/ovsport.py b/src/nepi/resources/planetlab/openvswitch/ovsport.py index d3e9d799..a7155fb0 100644 --- a/src/nepi/resources/planetlab/openvswitch/ovsport.py +++ b/src/nepi/resources/planetlab/openvswitch/ovsport.py @@ -19,7 +19,8 @@ # Alexandros Kouvakas from nepi.execution.attribute import Attribute, Flags, Types -from nepi.execution.resource import ResourceManager, clsinit_copy, ResourceState +from nepi.execution.resource import ResourceManager, clsinit_copy, \ + ResourceState, failtrap from nepi.resources.planetlab.openvswitch.ovs import OVSWitch from nepi.resources.planetlab.node import PlanetlabNode from nepi.resources.linux.application import LinuxApplication @@ -178,16 +179,7 @@ class OVSPort(LinuxApplication): command = self.replace_paths(command) return command - def provision(self): - """ Provision the ports.No meaning. - """ - pass - - def discover(self): - """ Discover the ports.No meaning - """ - pass - + @failtrap def deploy(self): """ Wait until ovswitch is started """ @@ -197,50 +189,39 @@ class OVSPort(LinuxApplication): self.ec.schedule(reschedule_delay, self.deploy) else: - try: - self.discover() - self.provision() - self.get_host_ip() - self.create_port() - self.get_local_end() - self.ovswitch.ovs_status() - self._state = ResourceState.READY - except: - self._state = ResourceState.FAILED - raise - - def start(self): - """ Start the RM. It means nothing special for - ovsport for now. - """ - pass - - def stop(self): - """ Stop the RM. It means nothing special for - ovsport for now. - """ - pass - + self.discover() + self.provision() + self.get_host_ip() + self.create_port() + self.get_local_end() + self.ovswitch.ovs_status() + super(OVSPort, self).deploy() + def release(self): """ Release the port RM means delete the ports """ # OVS needs to wait until all associated RMs are released # to be released - from nepi.resources.planetlab.openvswitch.tunnel import Tunnel - rm = self.get_connected(Tunnel.rtype()) - if rm and rm[0].state < ResourceState.FINISHED: - self.ec.schedule(reschedule_delay, self.release) - return - - msg = "Deleting the port %s" % self.get('port_name') - self.info(msg) - cmd = "sliver-ovs del_port %s" % self.get('port_name') - (out, err), proc = self.node.run(cmd, self.ovswitch.ovs_checks, - sudo = True) - - if proc.poll(): - self.fail() - self.error(msg, out, err) - raise RuntimeError, msg - - self._state = ResourceState.RELEASED + try: + from nepi.resources.planetlab.openvswitch.tunnel import Tunnel + rm = self.get_connected(Tunnel.rtype()) + if rm and rm[0].state < ResourceState.FINISHED: + self.ec.schedule(reschedule_delay, self.release) + return + + msg = "Deleting the port %s" % self.get('port_name') + self.info(msg) + cmd = "sliver-ovs del_port %s" % self.get('port_name') + (out, err), proc = self.node.run(cmd, self.ovswitch.ovs_checks, + sudo = True) + + if proc.poll(): + self.fail() + self.error(msg, out, err) + raise RuntimeError, msg + except: + import traceback + err = traceback.format_exc() + self.error(err) + + super(OVSPort, self).release()