ovs-agent: Ensure integration bridge is created
ovs-agent will fail to launch if integration bridge(br-int by default) is not existed. To fix this, the agent should check and create the bridge if necessary during launching. Closes-Bug: 1328076 Change-Id: Iaa6c4d766ca086deb28c8ef7310dbfdcef2c105f
This commit is contained in:
parent
b44fa145d0
commit
e5cdad90f9
@ -172,11 +172,11 @@ class OVSNeutronAgent(sg_rpc.SecurityGroupAgentRpcCallbackMixin,
|
||||
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 = {}
|
||||
@ -726,6 +726,12 @@ class OVSNeutronAgent(sg_rpc.SecurityGroupAgentRpcCallbackMixin,
|
||||
: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
|
||||
|
@ -118,6 +118,8 @@ class TestOvsNeutronAgent(base.BaseTestCase):
|
||||
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.'
|
||||
|
@ -107,13 +107,14 @@ class TunnelTest(base.BaseTestCase):
|
||||
self.mock_int_bridge = self.ovs_bridges[self.INT_BRIDGE]
|
||||
self.mock_int_bridge.get_local_port_mac.return_value = '000000000001'
|
||||
self.mock_int_bridge_expected = [
|
||||
mock.call.set_secure_mode(),
|
||||
mock.call.get_local_port_mac(),
|
||||
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(),
|
||||
mock.call.get_local_port_mac()
|
||||
]
|
||||
|
||||
self.mock_map_tun_bridge = self.ovs_bridges[self.MAP_TUN_BRIDGE]
|
||||
|
Loading…
Reference in New Issue
Block a user