Ensure MTU is set when the OVS vif driver is used
Set the MTU on the relevant devices when the OVS vif driver is used: - veth devices - ovs vif device Change-Id: I217f43227c099f17ab9a225b1ef7377d3de28114 Closes-bug: 1260697
This commit is contained in:
parent
1e74b8677a
commit
e34a085f7a
|
@ -1275,6 +1275,10 @@ def _create_veth_pair(dev1_name, dev2_name):
|
|||
utils.execute('ip', 'link', 'set', dev, 'up', run_as_root=True)
|
||||
utils.execute('ip', 'link', 'set', dev, 'promisc', 'on',
|
||||
run_as_root=True)
|
||||
if CONF.network_device_mtu:
|
||||
utils.execute('ip', 'link', 'set', dev, 'mtu',
|
||||
CONF.network_device_mtu, run_as_root=True,
|
||||
check_exit_code=[0, 2, 254])
|
||||
|
||||
|
||||
def _ovs_vsctl(args):
|
||||
|
@ -1295,6 +1299,10 @@ def create_ovs_vif_port(bridge, dev, iface_id, mac, instance_id):
|
|||
'external-ids:iface-status=active',
|
||||
'external-ids:attached-mac=%s' % mac,
|
||||
'external-ids:vm-uuid=%s' % instance_id])
|
||||
if CONF.network_device_mtu:
|
||||
utils.execute('ip', 'link', 'set', dev, 'mtu',
|
||||
CONF.network_device_mtu, run_as_root=True,
|
||||
check_exit_code=[0, 2, 254])
|
||||
|
||||
|
||||
def delete_ovs_vif_port(bridge, dev):
|
||||
|
@ -1725,7 +1733,8 @@ class LinuxOVSInterfaceDriver(LinuxNetInterfaceDriver):
|
|||
run_as_root=True)
|
||||
if CONF.network_device_mtu:
|
||||
_execute('ip', 'link', 'set', dev, 'mtu',
|
||||
CONF.network_device_mtu, run_as_root=True)
|
||||
CONF.network_device_mtu, run_as_root=True,
|
||||
check_exit_code=[0, 2, 254])
|
||||
_execute('ip', 'link', 'set', dev, 'up', run_as_root=True)
|
||||
if not gateway:
|
||||
# If we weren't instructed to act as a gateway then add the
|
||||
|
|
|
@ -986,3 +986,82 @@ class LinuxNetworkTestCase(test.NoDBTestCase):
|
|||
driver.ensure_bridge('bridge', 'eth0')
|
||||
device_exists.assert_has_calls(calls['device_exists'])
|
||||
_execute.assert_has_calls(calls['_execute'])
|
||||
|
||||
def _ovs_vif_port(self, calls):
|
||||
with mock.patch.object(utils, 'execute', return_value=('', '')) as ex:
|
||||
linux_net.create_ovs_vif_port('fake-bridge', 'fake-dev',
|
||||
'fake-iface-id', 'fake-mac',
|
||||
'fake-instance-uuid')
|
||||
ex.assert_has_calls(calls)
|
||||
|
||||
def test_ovs_vif_port(self):
|
||||
calls = [
|
||||
mock.call('ovs-vsctl', '--timeout=120', '--', '--may-exist',
|
||||
'add-port', 'fake-bridge', 'fake-dev',
|
||||
'--', 'set', 'Interface', 'fake-dev',
|
||||
'external-ids:iface-id=fake-iface-id',
|
||||
'external-ids:iface-status=active',
|
||||
'external-ids:attached-mac=fake-mac',
|
||||
'external-ids:vm-uuid=fake-instance-uuid',
|
||||
run_as_root=True)
|
||||
]
|
||||
self._ovs_vif_port(calls)
|
||||
|
||||
def test_ovs_vif_port_with_mtu(self):
|
||||
self.flags(network_device_mtu=10000)
|
||||
calls = [
|
||||
mock.call('ovs-vsctl', '--timeout=120', '--', '--may-exist',
|
||||
'add-port', 'fake-bridge', 'fake-dev',
|
||||
'--', 'set', 'Interface', 'fake-dev',
|
||||
'external-ids:iface-id=fake-iface-id',
|
||||
'external-ids:iface-status=active',
|
||||
'external-ids:attached-mac=fake-mac',
|
||||
'external-ids:vm-uuid=fake-instance-uuid',
|
||||
run_as_root=True),
|
||||
mock.call('ip', 'link', 'set', 'fake-dev', 'mtu',
|
||||
10000, run_as_root=True,
|
||||
check_exit_code=[0, 2, 254])
|
||||
]
|
||||
self._ovs_vif_port(calls)
|
||||
|
||||
def _create_veth_pair(self, calls):
|
||||
with mock.patch.object(utils, 'execute', return_value=('', '')) as ex:
|
||||
linux_net._create_veth_pair('fake-dev1', 'fake-dev2')
|
||||
ex.assert_has_calls(calls)
|
||||
|
||||
def test_create_veth_pair(self):
|
||||
calls = [
|
||||
mock.call('ip', 'link', 'add', 'fake-dev1', 'type', 'veth',
|
||||
'peer', 'name', 'fake-dev2', run_as_root=True),
|
||||
mock.call('ip', 'link', 'set', 'fake-dev1', 'up',
|
||||
run_as_root=True),
|
||||
mock.call('ip', 'link', 'set', 'fake-dev1', 'promisc', 'on',
|
||||
run_as_root=True),
|
||||
mock.call('ip', 'link', 'set', 'fake-dev2', 'up',
|
||||
run_as_root=True),
|
||||
mock.call('ip', 'link', 'set', 'fake-dev2', 'promisc', 'on',
|
||||
run_as_root=True)
|
||||
]
|
||||
self._create_veth_pair(calls)
|
||||
|
||||
def test_create_veth_pair_with_mtu(self):
|
||||
self.flags(network_device_mtu=10000)
|
||||
calls = [
|
||||
mock.call('ip', 'link', 'add', 'fake-dev1', 'type', 'veth',
|
||||
'peer', 'name', 'fake-dev2', run_as_root=True),
|
||||
mock.call('ip', 'link', 'set', 'fake-dev1', 'up',
|
||||
run_as_root=True),
|
||||
mock.call('ip', 'link', 'set', 'fake-dev1', 'promisc', 'on',
|
||||
run_as_root=True),
|
||||
mock.call('ip', 'link', 'set', 'fake-dev1', 'mtu',
|
||||
10000, run_as_root=True,
|
||||
check_exit_code=[0, 2, 254]),
|
||||
mock.call('ip', 'link', 'set', 'fake-dev2', 'up',
|
||||
run_as_root=True),
|
||||
mock.call('ip', 'link', 'set', 'fake-dev2', 'promisc', 'on',
|
||||
run_as_root=True),
|
||||
mock.call('ip', 'link', 'set', 'fake-dev2', 'mtu',
|
||||
10000, run_as_root=True,
|
||||
check_exit_code=[0, 2, 254])
|
||||
]
|
||||
self._create_veth_pair(calls)
|
||||
|
|
Loading…
Reference in New Issue