HA-non-DVR router don't need manually add static route
When a router set as HA mode, The keepalived process will take over the route entry's generation. So, the codes that add static route is redundant. But, for DVR-HA router, in dvr_snat node the keepalived process run in snat-namespace and don't take over qrouter-namespace, so the manually add static route codes still need be called. Closes-Bug: #1927849 Change-Id: Id09de6c43c0fab4009336e253c88f54219398053
This commit is contained in:
parent
2c192b78a2
commit
f192153b44
|
@ -271,7 +271,9 @@ class HaRouter(router.RouterInfo):
|
||||||
keepalived.KeepalivedVirtualRoute(
|
keepalived.KeepalivedVirtualRoute(
|
||||||
route['destination'], route['nexthop'])
|
route['destination'], route['nexthop'])
|
||||||
for route in new_routes]
|
for route in new_routes]
|
||||||
super(HaRouter, self).routes_updated(old_routes, new_routes)
|
if self.router.get('distributed', False):
|
||||||
|
super(HaRouter, self).routes_updated(old_routes, new_routes)
|
||||||
|
self.keepalived_manager.get_process().reload_cfg()
|
||||||
|
|
||||||
def _add_default_gw_virtual_route(self, ex_gw_port, interface_name):
|
def _add_default_gw_virtual_route(self, ex_gw_port, interface_name):
|
||||||
gateway_ips = self._get_external_gw_ips(ex_gw_port)
|
gateway_ips = self._get_external_gw_ips(ex_gw_port)
|
||||||
|
|
|
@ -55,6 +55,31 @@ class TestBasicRouterOperations(base.BaseTestCase):
|
||||||
ri._get_cidrs_from_keepalived = mock.MagicMock(return_value=addresses)
|
ri._get_cidrs_from_keepalived = mock.MagicMock(return_value=addresses)
|
||||||
self.assertEqual(set(addresses), ri.get_router_cidrs(device))
|
self.assertEqual(set(addresses), ri.get_router_cidrs(device))
|
||||||
|
|
||||||
|
def test_routes_updated_with_dvr(self):
|
||||||
|
ri = self._create_router(router={'distributed': True})
|
||||||
|
ri.keepalived_manager = mock.Mock()
|
||||||
|
base_routes_updated = mock.patch(
|
||||||
|
'neutron.agent.l3.router_info.'
|
||||||
|
'RouterInfo.routes_updated').start()
|
||||||
|
mock_instance = mock.Mock()
|
||||||
|
mock_instance.virtual_routes.gateway_routes = []
|
||||||
|
ri._get_keepalived_instance = mock.Mock(
|
||||||
|
return_value=mock_instance)
|
||||||
|
ri.routes_updated([], [])
|
||||||
|
self.assertTrue(base_routes_updated.called)
|
||||||
|
|
||||||
|
def test_routes_updated_with_non_dvr(self):
|
||||||
|
ri = self._create_router(router={'distributed': False})
|
||||||
|
ri.keepalived_manager = mock.Mock()
|
||||||
|
base_routes_updated = mock.patch(
|
||||||
|
'neutron.agent.l3.router_info.'
|
||||||
|
'RouterInfo.routes_updated').start()
|
||||||
|
mock_instance = mock.Mock()
|
||||||
|
mock_instance.virtual_routes.gateway_routes = []
|
||||||
|
ri._get_keepalived_instance = mock.Mock(return_value=mock_instance)
|
||||||
|
ri.routes_updated([], [])
|
||||||
|
self.assertFalse(base_routes_updated.called)
|
||||||
|
|
||||||
def test__add_default_gw_virtual_route(self):
|
def test__add_default_gw_virtual_route(self):
|
||||||
ri = self._create_router()
|
ri = self._create_router()
|
||||||
mock_instance = mock.Mock()
|
mock_instance = mock.Mock()
|
||||||
|
|
Loading…
Reference in New Issue