]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Log caught exceptions while deleting a router
authorAssaf Muller <amuller@redhat.com>
Mon, 20 Apr 2015 19:15:34 +0000 (15:15 -0400)
committerAssaf Muller <amuller@redhat.com>
Mon, 20 Apr 2015 19:22:41 +0000 (15:22 -0400)
Change-Id: I2c270f1eebf4f3c0d2cecdef457efc626e503975
Closes-Bug: #1446349

neutron/agent/l3/agent.py

index 058b9a9d7ee9d677951c462181bdbd146e6827f7..2c1c1696ee834f850e3c3016f21b1c734681e32b 100644 (file)
@@ -317,6 +317,17 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback,
         # TODO(Carl) This is a hook in to fwaas.  It should be cleaned up.
         self.process_router_add(ri)
 
+    def _safe_router_removed(self, router_id):
+        """Try to delete a router and return True if successful."""
+
+        try:
+            self._router_removed(router_id)
+        except Exception:
+            LOG.exception(_LE('Error while deleting router %s'), router_id)
+            return False
+        else:
+            return True
+
     def _router_removed(self, router_id):
         ri = self.router_info.get(router_id)
         if ri is None:
@@ -439,9 +450,8 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback,
                     router = routers[0]
 
             if not router:
-                try:
-                    self._router_removed(update.id)
-                except Exception:
+                removed = self._safe_router_removed(update.id)
+                if not removed:
                     # TODO(Carl) Stop this fullsync non-sense.  Just retry this
                     # one router by sticking the update at the end of the queue
                     # at a lower priority.
@@ -456,7 +466,7 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback,
                 if router['id'] in self.router_info:
                     LOG.error(_LE("Removing incompatible router '%s'"),
                               router['id'])
-                    self._router_removed(router['id'])
+                    self._safe_router_removed(router['id'])
             except Exception:
                 msg = _LE("Failed to process compatible router '%s'")
                 LOG.exception(msg, update.id)