self.int_br_device_count = 0
self.int_br = ovs_lib.OVSBridge(integ_br, self.root_helper)
+ self.setup_integration_br()
self.int_br.set_secure_mode()
# Stores port update notifications for processing in main rpc loop
self.updated_ports = set()
self.setup_rpc()
- self.setup_integration_br()
self.bridge_mappings = bridge_mappings
self.setup_physical_bridges(self.bridge_mappings)
self.local_vlan_map = {}
:param bridge_name: the name of the integration bridge.
:returns: the integration bridge
'''
+ # Ensure the integration bridge is created.
+ # ovs_lib.OVSBridge.create() will run
+ # ovs-vsctl -- --may-exist add-br BRIDGE_NAME
+ # which does nothing if bridge already exists.
+ self.int_br.create()
+
self.int_br.delete_port(cfg.CONF.OVS.int_peer_patch_port)
self.int_br.remove_all_flows()
# switch all traffic using L2 learning
mock.patch('neutron.plugins.openvswitch.agent.ovs_neutron_agent.'
'OVSNeutronAgent.setup_ancillary_bridges',
return_value=[]),
+ mock.patch('neutron.agent.linux.ovs_lib.OVSBridge.'
+ 'create'),
mock.patch('neutron.agent.linux.ovs_lib.OVSBridge.'
'set_secure_mode'),
mock.patch('neutron.agent.linux.ovs_lib.OVSBridge.'
self.mock_int_bridge = self.ovs_bridges[self.INT_BRIDGE]
self.mock_int_bridge_expected = [
- mock.call.set_secure_mode(),
+ mock.call.create(),
mock.call.delete_port('patch-tun'),
mock.call.remove_all_flows(),
mock.call.add_flow(priority=1, actions='normal'),
mock.call.add_flow(priority=0, table=constants.CANARY_TABLE,
- actions='drop')
+ actions='drop'),
+ mock.call.set_secure_mode(),
]
self.mock_map_tun_bridge = self.ovs_bridges[self.MAP_TUN_BRIDGE]