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 fc2b3ff50d8..d4ba19bfac7 100644 --- a/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py +++ b/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py @@ -321,7 +321,7 @@ class OVSNeutronAgent(l2population_rpc.L2populationRpcCallBackTunnelMixin, # we only want to update resource versions on startup self.agent_state.pop('resource_versions', None) - if self.agent_state.pop('start_flag', None): + if self.agent_state.pop('start_flag', None) and self.iter_num == 0: # On initial start, we notify systemd after initialization # is complete. systemd.notify_once() @@ -2025,6 +2025,7 @@ class OVSNeutronAgent(l2population_rpc.L2populationRpcCallBackTunnelMixin, self._reset_tunnel_ofports() self.setup_tunnel_br() self.setup_tunnel_br_flows() + self.agent_state['start_flag'] = True tunnel_sync = True if self.enable_distributed_routing: self.dvr_agent.reset_ovs_parameters(self.int_br, 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 3445e83b352..e8847d141c8 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 @@ -1963,6 +1963,10 @@ class TestOvsNeutronAgent(object): failed_devices, Exception('Fake exception to get out of the loop')] check_ovs_status.side_effect = args + + if self.agent.enable_tunneling: + self.agent.agent_state.pop("start_flag") + try: self.agent.daemon_loop() except Exception: @@ -1992,6 +1996,8 @@ class TestOvsNeutronAgent(object): self.assertTrue(reset_tunnel_ofports.called) self.assertTrue(setup_tunnel_br_flows.called) self.assertTrue(setup_tunnel_br.called) + if self.agent.enable_tunneling: + self.assertTrue(self.agent.agent_state.get('start_flag')) def test_ovs_status(self): self._test_ovs_status(constants.OVS_NORMAL,