diff --git a/neutron/agent/l3/agent.py b/neutron/agent/l3/agent.py index 38741257d21..f7f5a712eaf 100644 --- a/neutron/agent/l3/agent.py +++ b/neutron/agent/l3/agent.py @@ -419,8 +419,9 @@ class L3NATAgent(ha.AgentMixin, except Exception: LOG.exception('Error while deleting router %s', router_id) return False - else: - return True + + self._resize_process_pool() + return True def _router_removed(self, ri, router_id): if ri is None: @@ -439,8 +440,6 @@ class L3NATAgent(ha.AgentMixin, registry.notify(resources.ROUTER, events.AFTER_DELETE, self, router=ri) - self._resize_process_pool() - def init_extension_manager(self, connection): l3_ext_manager.register_opts(self.conf) self.agent_api = l3_ext_api.L3AgentExtensionAPI(self.router_info) diff --git a/neutron/tests/functional/agent/l3/test_legacy_router.py b/neutron/tests/functional/agent/l3/test_legacy_router.py index 67a35d07091..cf5658752db 100644 --- a/neutron/tests/functional/agent/l3/test_legacy_router.py +++ b/neutron/tests/functional/agent/l3/test_legacy_router.py @@ -129,10 +129,19 @@ class L3AgentTestCase(framework.L3AgentTestFramework): self.agent._pool.size) for router in router_info_list: - self.agent._router_removed(router, router.router_id) + self.agent._safe_router_removed(router.router_id) - self.assertEqual(l3_agent.ROUTER_PROCESS_GREENLET_MIN, - self.agent._pool.size) + agent_router_info_len = len(self.agent.router_info) + if agent_router_info_len < l3_agent.ROUTER_PROCESS_GREENLET_MIN: + self.assertEqual(l3_agent.ROUTER_PROCESS_GREENLET_MIN, + self.agent._pool.size) + elif (l3_agent.ROUTER_PROCESS_GREENLET_MIN <= agent_router_info_len <= + l3_agent.ROUTER_PROCESS_GREENLET_MAX): + self.assertEqual(agent_router_info_len, + self.agent._pool.size) + else: + self.assertEqual(l3_agent.ROUTER_PROCESS_GREENLET_MAX, + self.agent._pool.size) def _make_bridge(self): bridge = framework.get_ovs_bridge(utils.get_rand_name())