Add support for use of bridges for data ports
Inline with neutron-openvswitch add support for use of existing linuxbridge's when wiring openvswitch bridges to underlying network devices. Change-Id: I24281e8c31d9a140dfdaff308e6e99d3ce162fef Closes-Bug: 1635067
This commit is contained in:
parent
1eec99ada2
commit
2441950f44
@ -28,6 +28,8 @@ from charmhelpers.fetch import (
|
||||
from charmhelpers.contrib.network.ovs import (
|
||||
add_bridge,
|
||||
add_bridge_port,
|
||||
is_linuxbridge_interface,
|
||||
add_ovsbridge_linuxbridge,
|
||||
full_restart
|
||||
)
|
||||
from charmhelpers.contrib.hahelpers.cluster import (
|
||||
@ -723,7 +725,10 @@ def configure_ovs():
|
||||
|
||||
for port, _br in portmaps.items():
|
||||
if _br == br:
|
||||
add_bridge_port(br, port, promisc=True)
|
||||
if not is_linuxbridge_interface(port):
|
||||
add_bridge_port(br, port, promisc=True)
|
||||
else:
|
||||
add_ovsbridge_linuxbridge(br, port)
|
||||
|
||||
# Ensure this runs so that mtu is applied to data-port interfaces if
|
||||
# provided.
|
||||
|
5
tox.ini
5
tox.ini
@ -27,6 +27,11 @@ basepython = python3.5
|
||||
deps = -r{toxinidir}/requirements.txt
|
||||
-r{toxinidir}/test-requirements.txt
|
||||
|
||||
[testenv:py36]
|
||||
basepython = python3.6
|
||||
deps = -r{toxinidir}/requirements.txt
|
||||
-r{toxinidir}/test-requirements.txt
|
||||
|
||||
[testenv:pep8]
|
||||
basepython = python2.7
|
||||
deps = -r{toxinidir}/requirements.txt
|
||||
|
@ -21,6 +21,8 @@ TO_PATCH = [
|
||||
'log',
|
||||
'add_bridge',
|
||||
'add_bridge_port',
|
||||
'add_ovsbridge_linuxbridge',
|
||||
'is_linuxbridge_interface',
|
||||
'headers_package',
|
||||
'full_restart',
|
||||
'os_release',
|
||||
@ -198,6 +200,7 @@ class TestNeutronUtils(CharmTestCase):
|
||||
|
||||
@patch('charmhelpers.contrib.openstack.context.config')
|
||||
def test_configure_ovs_ovs_data_port(self, mock_config):
|
||||
self.is_linuxbridge_interface.return_value = False
|
||||
mock_config.side_effect = self.test_config.get
|
||||
self.config.side_effect = self.test_config.get
|
||||
self.test_config.set('plugin', 'ovs')
|
||||
@ -243,6 +246,26 @@ class TestNeutronUtils(CharmTestCase):
|
||||
call('br1', 'eth0.200', promisc=True)]
|
||||
self.add_bridge_port.assert_has_calls(calls, any_order=True)
|
||||
|
||||
@patch('charmhelpers.contrib.openstack.context.config')
|
||||
def test_configure_ovs_ovs_data_port_bridge(self, mock_config):
|
||||
self.is_linuxbridge_interface.return_value = True
|
||||
mock_config.side_effect = self.test_config.get
|
||||
self.config.side_effect = self.test_config.get
|
||||
self.test_config.set('plugin', 'ovs')
|
||||
self.ExternalPortContext.return_value = \
|
||||
DummyExternalPortContext(return_value=None)
|
||||
# Test back-compatibility i.e. port but no bridge (so br-data is
|
||||
# assumed)
|
||||
self.test_config.set('data-port', 'br-eth0')
|
||||
neutron_utils.configure_ovs()
|
||||
self.add_bridge.assert_has_calls([
|
||||
call('br-int'),
|
||||
call('br-ex'),
|
||||
call('br-data')
|
||||
])
|
||||
calls = [call('br-data', 'br-eth0')]
|
||||
self.add_ovsbridge_linuxbridge.assert_has_calls(calls)
|
||||
|
||||
@patch.object(neutron_utils, 'register_configs')
|
||||
@patch('charmhelpers.contrib.openstack.templating.OSConfigRenderer')
|
||||
def test_do_openstack_upgrade(self, mock_renderer,
|
||||
|
Loading…
x
Reference in New Issue
Block a user