File 0001-Do-state-report-after-setting-start-flag-on-OVS-restart.patch of Package openstack-neutron
diff -crB --new-file neutron-9.4.2.dev21-backup/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py neutron-9.4.2.dev21/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py
*** neutron-9.4.2.dev21-backup/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py 2019-02-27 11:59:35.208834341 -0800
--- neutron-9.4.2.dev21/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py 2019-02-28 12:01:43.435280470 -0800
***************
*** 1995,2000 ****
--- 1995,2003 ----
self.setup_tunnel_br_flows()
self.agent_state['start_flag'] = True
tunnel_sync = True
+ # Force state report to avoid race condition
+ # with l2pop fdb entries update
+ self._report_state()
if self.enable_distributed_routing:
self.dvr_agent.reset_ovs_parameters(self.int_br,
self.tun_br,
diff -crB --new-file neutron-9.4.2.dev21-backup/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py neutron-9.4.2.dev21/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py
*** neutron-9.4.2.dev21-backup/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py 2019-02-27 11:59:35.208834341 -0800
--- neutron-9.4.2.dev21/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py 2019-02-28 12:05:45.451525095 -0800
***************
*** 1820,1826 ****
'setup_tunnel_br_flows') as setup_tunnel_br_flows,\
mock.patch.object(
self.mod_agent.OVSNeutronAgent,
! '_reset_tunnel_ofports') as reset_tunnel_ofports:
log_exception.side_effect = Exception(
'Fake exception to get out of the loop')
devices_not_ready = set()
--- 1820,1828 ----
'setup_tunnel_br_flows') as setup_tunnel_br_flows,\
mock.patch.object(
self.mod_agent.OVSNeutronAgent,
! '_reset_tunnel_ofports') as reset_tunnel_ofports,\
! mock.patch.object(self.agent.state_rpc,
! 'report_state') as report_st:
log_exception.side_effect = Exception(
'Fake exception to get out of the loop')
devices_not_ready = set()
***************
*** 1868,1874 ****
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,
--- 1870,1878 ----
self.assertTrue(setup_tunnel_br_flows.called)
self.assertTrue(setup_tunnel_br.called)
if self.agent.enable_tunneling:
! self.agent.agent_state['start_flag'] = True
! report_st.assert_called_once_with(
! self.agent.context, self.agent.agent_state, True)
def test_ovs_status(self):
self._test_ovs_status(constants.OVS_NORMAL,