In response to a request on this mailing list from Zhao Jun, here’s a patch that: 1) Creates an EventSwitchReconnected class for ryu.topology 2) Sends said event at the appropriate time 3) Handles the case, for the DEAD_DISPATCHER state, where the _get_switch() method returns None.
Signed-off-by: Victor J. Orlikowski <[email protected]> diff --git a/ryu/topology/event.py b/ryu/topology/event.py index c54152b..e7b682c 100644 --- a/ryu/topology/event.py +++ b/ryu/topology/event.py @@ -41,6 +41,11 @@ class EventSwitchLeave(EventSwitchBase): super(EventSwitchLeave, self).__init__(switch) +class EventSwitchReconnected(EventSwitchBase): + def __init__(self, switch): + super(EventSwitchReconnected, self).__init__(switch) + + class EventPortBase(event.EventBase): def __init__(self, port): super(EventPortBase, self).__init__() diff --git a/ryu/topology/switches.py b/ryu/topology/switches.py index 5fe5d26..6e15afb 100644 --- a/ryu/topology/switches.py +++ b/ryu/topology/switches.py @@ -612,6 +612,8 @@ class Switches(app_manager.RyuApp): # Do not send event while dp has multiple connections. if not dp_multiple_conns: self.send_event_to_observers(event.EventSwitchEnter(switch)) + else: + self.send_event_to_observers(event.EventSwitchReconnected(switch)) if not self.link_discovery: return @@ -668,15 +670,17 @@ class Switches(app_manager.RyuApp): switch = self._get_switch(dp.id) self._unregister(dp) LOG.debug('unregister %s', switch) - self.send_event_to_observers(event.EventSwitchLeave(switch)) + if switch: + self.send_event_to_observers(event.EventSwitchLeave(switch)) if not self.link_discovery: return - for port in switch.ports: - if not port.is_reserved(): - self.ports.del_port(port) - self._link_down(port) + if switch: + for port in switch.ports: + if not port.is_reserved(): + self.ports.del_port(port) + self._link_down(port) self.lldp_event.set() @set_ev_cls(ofp_event.EventOFPPortStatus, MAIN_DISPATCHER) Best, Victor -- Victor J. Orlikowski <> vjo@[cs.]duke.edu ------------------------------------------------------------------------------ Site24x7 APM Insight: Get Deep Visibility into Application Performance APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month Monitor end-to-end web transactions and take corrective actions now Troubleshoot faster and improve end-user experience. Signup Now! http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140 _______________________________________________ Ryu-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ryu-devel
