And make Network.remove_network more robust.

Signed-off-by: Isaku Yamahata <yamah...@valinux.co.jp>
---
Changes v2 -> v3:
- new patch
---
 ryu/controller/network.py |   16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/ryu/controller/network.py b/ryu/controller/network.py
index b029507..cf0772f 100644
--- a/ryu/controller/network.py
+++ b/ryu/controller/network.py
@@ -79,14 +79,15 @@ class Networks(dict):
 
     def remove_network(self, network_id):
         try:
-            network = self[network_id]
+            ports = self[network_id]
         except KeyError:
             raise NetworkNotFound(network_id=network_id)
 
-        for (dpid, port_no) in network:
-            self.send_event(EventNetworkPort(network_id, dpid, port_no, False))
-        self.send_event(EventNetworkDel(network_id))
-        del self[network_id]
+        while ports:
+            (dpid, port_no) = ports.pop()
+            self._remove_event(network_id, dpid, port_no)
+        if self.pop(network_id, None) is not None:
+            self.send_event(EventNetworkDel(network_id))
 
     def list_ports(self, network_id):
         try:
@@ -107,11 +108,14 @@ class Networks(dict):
     #     self.add_raw(network_id, dpid, port_no)
     #     self.add_event(network_id, dpid, port_no)
 
+    def _remove_event(self, network_id, dpid, port_no):
+        self.send_event(EventNetworkPort(network_id, dpid, port_no, False))
+
     def remove_raw(self, network_id, dpid, port_no):
         ports = self[network_id]
         if (dpid, port_no) in ports:
             ports.remove((dpid, port_no))
-            self.send_event(EventNetworkPort(network_id, dpid, port_no, False))
+            self._remove_event(network_id, dpid, port_no)
 
     def remove(self, network_id, dpid, port_no):
         try:
-- 
1.7.10.4


------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to