Merge "Spawn metadata proxy on dvr ha standby routers" into stable/pike

This commit is contained in:
Zuul 2019-03-17 17:55:05 +00:00 committed by Gerrit Code Review
commit e71e4b3ea8
2 changed files with 43 additions and 1 deletions

View File

@ -149,7 +149,10 @@ class AgentMixin(object):
interface_name, enable)
def _update_metadata_proxy(self, ri, router_id, state):
if state == 'master':
# NOTE(slaweq): Since the metadata proxy is spawned in the qrouter
# namespace and not in the snat namespace, even standby DVR-HA
# routers needs to serve metadata requests to local ports.
if state == 'master' or ri.router.get('distributed', False):
LOG.debug('Spawning metadata proxy for router %s', router_id)
self.metadata_driver.spawn_monitored_metadata_proxy(
self.process_monitor, ri.ns_name, self.conf.metadata_port,

View File

@ -214,6 +214,45 @@ class TestBasicRouterOperations(BasicRouterOperationsFramework):
agent.enqueue_state_change(router.id, 'master')
self.assertFalse(agent._update_metadata_proxy.call_count)
def test_enqueue_state_change_router_active_ha(self):
agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
router = {'distributed': False}
router_info = mock.MagicMock(router=router)
with mock.patch.object(
agent.metadata_driver, 'spawn_monitored_metadata_proxy'
) as spawn_metadata_proxy, mock.patch.object(
agent.metadata_driver, 'destroy_monitored_metadata_proxy'
) as destroy_metadata_proxy:
agent._update_metadata_proxy(router_info, "router_id", "master")
spawn_metadata_proxy.assert_called()
destroy_metadata_proxy.assert_not_called()
def test_enqueue_state_change_router_standby_ha(self):
agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
router = {'distributed': False}
router_info = mock.MagicMock(router=router)
with mock.patch.object(
agent.metadata_driver, 'spawn_monitored_metadata_proxy'
) as spawn_metadata_proxy, mock.patch.object(
agent.metadata_driver, 'destroy_monitored_metadata_proxy'
) as destroy_metadata_proxy:
agent._update_metadata_proxy(router_info, "router_id", "standby")
spawn_metadata_proxy.assert_not_called()
destroy_metadata_proxy.assert_called()
def test_enqueue_state_change_router_standby_ha_dvr(self):
agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
router = {'distributed': True}
router_info = mock.MagicMock(router=router)
with mock.patch.object(
agent.metadata_driver, 'spawn_monitored_metadata_proxy'
) as spawn_metadata_proxy, mock.patch.object(
agent.metadata_driver, 'destroy_monitored_metadata_proxy'
) as destroy_metadata_proxy:
agent._update_metadata_proxy(router_info, "router_id", "standby")
spawn_metadata_proxy.assert_called()
destroy_metadata_proxy.assert_not_called()
def _test__configure_ipv6_params_on_ext_gw_port_if_necessary_helper(
self, state, enable_expected):
agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)