Browse Source

OVS agent: always send start flag during initial sync

In order to avoid inaccurate agent_boot_time setting,
this patch suggests to consider agent as "started" only
after completion of initial sync with server.

Change-Id: Icba05288889219e8a606c3809efd88b2c234bef3
Closes-Bug: #1799178
changes/66/634666/2
Oleg Bondarev 3 years ago
parent
commit
8f20963c5b
  1. 9
      neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py
  2. 3
      neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py

9
neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py

@ -344,11 +344,16 @@ class OVSNeutronAgent(l2population_rpc.L2populationRpcCallBackTunnelMixin,
self.fullsync = True
# we only want to update resource versions on startup
self.agent_state.pop('resource_versions', None)
if self.agent_state.pop('start_flag', None) and self.iter_num == 0:
if self.agent_state.pop('resource_versions', None):
# On initial start, we notify systemd after initialization
# is complete.
systemd.notify_once()
if self.iter_num > 0:
# agent is considered started after
# initial sync with server (iter 0) is done
self.agent_state.pop('start_flag', None)
except Exception:
LOG.exception("Failed reporting state!")

3
neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py

@ -1144,7 +1144,8 @@ class TestOvsNeutronAgent(object):
self.agent.agent_state, True)
self.systemd_notify.assert_called_once_with()
self.systemd_notify.reset_mock()
self.assertNotIn("start_flag", self.agent.agent_state)
# agent keeps sending "start_flag" while iter 0 not completed
self.assertIn("start_flag", self.agent.agent_state)
self.assertEqual(
self.agent.agent_state["configurations"]["devices"],
self.agent.int_br_device_count

Loading…
Cancel
Save