diff --git a/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py b/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py index 14806ac545f..c30356905aa 100644 --- a/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py +++ b/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py @@ -329,11 +329,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!") diff --git a/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py b/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py index 62f567538ff..03ee744dd0b 100644 --- a/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py +++ b/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py @@ -1137,7 +1137,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