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 f30aed0722e..860e908b42a 100644 --- a/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py +++ b/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py @@ -2541,6 +2541,7 @@ class OVSNeutronAgent(l2population_rpc.L2populationRpcCallBackTunnelMixin, LOG.info("Agent rpc_loop - iteration:%d started", self.iter_num) ovs_status = self.check_ovs_status() + bridges_recreated = False if ovs_status == constants.OVS_RESTARTED: self._handle_ovs_restart(polling_manager) tunnel_sync = self.enable_tunneling or tunnel_sync @@ -2551,15 +2552,17 @@ class OVSNeutronAgent(l2population_rpc.L2populationRpcCallBackTunnelMixin, port_stats = self.get_port_stats({}, {}) self.loop_count_and_wait(start, port_stats) continue - # Check if any physical bridge wasn't recreated recently - added_bridges = idl_monitor.bridges_added + self.added_bridges - bridges_recreated = self._reconfigure_physical_bridges( - added_bridges) - if bridges_recreated: - # In case when any bridge was "re-created", we need to ensure - # that there is no any stale flows in bridges left - need_clean_stale_flow = True - sync |= bridges_recreated + else: + # Check if any physical bridge wasn't recreated recently, + # in case when openvswitch was restarted, it's not needed + added_bridges = idl_monitor.bridges_added + self.added_bridges + bridges_recreated = self._reconfigure_physical_bridges( + added_bridges) + if bridges_recreated: + # In case when any bridge was "re-created", we need to + # ensure that there is no any stale flows in bridges left + need_clean_stale_flow = True + sync |= bridges_recreated # Notify the plugin of tunnel IP if self.enable_tunneling and tunnel_sync: try: