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 (
|
from charmhelpers.contrib.network.ovs import (
|
||||||
add_bridge,
|
add_bridge,
|
||||||
add_bridge_port,
|
add_bridge_port,
|
||||||
|
is_linuxbridge_interface,
|
||||||
|
add_ovsbridge_linuxbridge,
|
||||||
full_restart
|
full_restart
|
||||||
)
|
)
|
||||||
from charmhelpers.contrib.hahelpers.cluster import (
|
from charmhelpers.contrib.hahelpers.cluster import (
|
||||||
@ -723,7 +725,10 @@ def configure_ovs():
|
|||||||
|
|
||||||
for port, _br in portmaps.items():
|
for port, _br in portmaps.items():
|
||||||
if _br == br:
|
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
|
# Ensure this runs so that mtu is applied to data-port interfaces if
|
||||||
# provided.
|
# provided.
|
||||||
|
5
tox.ini
5
tox.ini
@ -27,6 +27,11 @@ basepython = python3.5
|
|||||||
deps = -r{toxinidir}/requirements.txt
|
deps = -r{toxinidir}/requirements.txt
|
||||||
-r{toxinidir}/test-requirements.txt
|
-r{toxinidir}/test-requirements.txt
|
||||||
|
|
||||||
|
[testenv:py36]
|
||||||
|
basepython = python3.6
|
||||||
|
deps = -r{toxinidir}/requirements.txt
|
||||||
|
-r{toxinidir}/test-requirements.txt
|
||||||
|
|
||||||
[testenv:pep8]
|
[testenv:pep8]
|
||||||
basepython = python2.7
|
basepython = python2.7
|
||||||
deps = -r{toxinidir}/requirements.txt
|
deps = -r{toxinidir}/requirements.txt
|
||||||
|
@ -21,6 +21,8 @@ TO_PATCH = [
|
|||||||
'log',
|
'log',
|
||||||
'add_bridge',
|
'add_bridge',
|
||||||
'add_bridge_port',
|
'add_bridge_port',
|
||||||
|
'add_ovsbridge_linuxbridge',
|
||||||
|
'is_linuxbridge_interface',
|
||||||
'headers_package',
|
'headers_package',
|
||||||
'full_restart',
|
'full_restart',
|
||||||
'os_release',
|
'os_release',
|
||||||
@ -198,6 +200,7 @@ class TestNeutronUtils(CharmTestCase):
|
|||||||
|
|
||||||
@patch('charmhelpers.contrib.openstack.context.config')
|
@patch('charmhelpers.contrib.openstack.context.config')
|
||||||
def test_configure_ovs_ovs_data_port(self, mock_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
|
mock_config.side_effect = self.test_config.get
|
||||||
self.config.side_effect = self.test_config.get
|
self.config.side_effect = self.test_config.get
|
||||||
self.test_config.set('plugin', 'ovs')
|
self.test_config.set('plugin', 'ovs')
|
||||||
@ -243,6 +246,26 @@ class TestNeutronUtils(CharmTestCase):
|
|||||||
call('br1', 'eth0.200', promisc=True)]
|
call('br1', 'eth0.200', promisc=True)]
|
||||||
self.add_bridge_port.assert_has_calls(calls, any_order=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.object(neutron_utils, 'register_configs')
|
||||||
@patch('charmhelpers.contrib.openstack.templating.OSConfigRenderer')
|
@patch('charmhelpers.contrib.openstack.templating.OSConfigRenderer')
|
||||||
def test_do_openstack_upgrade(self, mock_renderer,
|
def test_do_openstack_upgrade(self, mock_renderer,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user