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 0c0dbf7f6d1..462d9daf02e 100644 --- a/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py +++ b/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py @@ -179,7 +179,6 @@ class OVSNeutronAgent(l2population_rpc.L2populationRpcCallBackTunnelMixin, self.network_ports = collections.defaultdict(set) # keeps association between ports and ofports to detect ofport change self.vifname_to_ofport_map = {} - self.setup_rpc() self.bridge_mappings = self._parse_bridge_mappings( ovs_conf.bridge_mappings) self.setup_physical_bridges(self.bridge_mappings) @@ -206,6 +205,8 @@ class OVSNeutronAgent(l2population_rpc.L2populationRpcCallBackTunnelMixin, self.setup_tunnel_br(ovs_conf.tunnel_bridge) self.setup_tunnel_br_flows() + self.setup_rpc() + agent_api = ovs_ext_api.OVSAgentExtensionAPI(self.int_br, self.tun_br) self.ext_manager.initialize( self.connection, constants.EXTENSION_DRIVER_TYPE, agent_api) 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 c4aa7041d90..1468328440a 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 @@ -176,6 +176,20 @@ class TestOvsNeutronAgent(object): "Port", mock.ANY, "other_config", vlan_mapping) self.assertTrue(needs_binding) + def test_setup_physical_bridges_during_agent_initialization(self): + with mock.patch.object( + self.mod_agent.OVSNeutronAgent, + 'setup_physical_bridges') as setup_physical_bridges,\ + mock.patch.object( + self.mod_agent.OVSNeutronAgent, 'setup_rpc') as setup_rpc: + setup_rpc.side_effect = oslo_messaging.MessagingException( + "Test communication failure") + try: + self._make_agent() + except oslo_messaging.MessagingException: + pass + setup_physical_bridges.assert_called_once_with(mock.ANY) + def test_datapath_type_system(self): # verify kernel datapath is default expected = constants.OVS_DATAPATH_SYSTEM