Adjust some HA router log

In case router is concurrently deleted, so the HA
state change LOG is not necessary. It sometimes
makes us confusing.
Also print the log for the pid of router
keepalived-state-change child process.

Change-Id: Id57dd787c254994af967db17647a3a28925714da
Related-Bug: #1798475
This commit is contained in:
LIU Yulong 2019-05-22 22:38:40 +08:00
parent 771a2a191c
commit 426a5b2833
3 changed files with 13 additions and 5 deletions

View File

@ -113,14 +113,16 @@ class AgentMixin(object):
return self.conf.ha_vrrp_advert_int
def enqueue_state_change(self, router_id, state):
state_change_data = {"router_id": router_id, "state": state}
LOG.info('Router %(router_id)s transitioned to %(state)s',
state_change_data)
ri = self._get_router_info(router_id)
if ri is None:
return
state_change_data = {"router_id": router_id, "state": state,
"host": ri.agent.host}
LOG.info('Router %(router_id)s transitioned to %(state)s on '
'agent %(host)s',
state_change_data)
# TODO(dalvarez): Fix bug 1677279 by moving the IPv6 parameters
# configuration to keepalived-state-change in order to remove the
# dependency that currently exists on l3-agent running for the IPv6

View File

@ -394,6 +394,10 @@ class HaRouter(router.RouterInfo):
pm.enable()
process_monitor.register(
self.router_id, IP_MONITOR_PROCESS_SERVICE, pm)
LOG.debug("Router %(router_id)s %(process)s pid %(pid)d",
{"router_id": self.router_id,
"process": KEEPALIVED_STATE_CHANGE_MONITOR_SERVICE_NAME,
"pid": pm.pid})
def destroy_state_change_monitor(self, process_monitor):
if not self.ha_port:

View File

@ -243,12 +243,14 @@ class TestBasicRouterOperations(BasicRouterOperationsFramework):
agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
router = mock.Mock()
router_info = mock.MagicMock()
router_info.agent = agent
agent.router_info[router.id] = router_info
agent.l3_ext_manager.ha_state_change = mock.Mock()
agent.enqueue_state_change(router.id, 'master')
agent.l3_ext_manager.ha_state_change.assert_called_once_with(
agent.context,
{'router_id': router.id, 'state': 'master'})
{'router_id': router.id, 'state': 'master',
'host': agent.host})
def test_enqueue_state_change_router_active_ha(self):
agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)