Merge "Serialize mtu for dpdk interface with 'i40e' driver"
This commit is contained in:
commit
847e9a81b9
|
@ -528,3 +528,7 @@ HYPERVISORS = Enum(
|
||||||
)
|
)
|
||||||
|
|
||||||
DPDK_DRIVER_IN_SRIOV_CASE = 'vfio-pci'
|
DPDK_DRIVER_IN_SRIOV_CASE = 'vfio-pci'
|
||||||
|
|
||||||
|
DEFAULT_MTU = 1500
|
||||||
|
|
||||||
|
SIZE_OF_VLAN_TAG = 4
|
||||||
|
|
|
@ -554,3 +554,26 @@ class NeutronManager70(
|
||||||
|
|
||||||
class NeutronManager80(AllocateVIPs80Mixin, NeutronManager70):
|
class NeutronManager80(AllocateVIPs80Mixin, NeutronManager70):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class NeutronManager90(NeutronManager80):
|
||||||
|
@classmethod
|
||||||
|
def get_iface_properties(cls, iface):
|
||||||
|
result = super(NeutronManager80, cls).get_iface_properties(iface)
|
||||||
|
|
||||||
|
if (iface.type == consts.NETWORK_INTERFACE_TYPES.ether and
|
||||||
|
iface.driver == 'i40e' and
|
||||||
|
objects.NIC.dpdk_enabled(iface)):
|
||||||
|
# On NIC with i40e driver MTU should be increased manually
|
||||||
|
# because driver automatically sets value 4 bytes less
|
||||||
|
# LP 1587310
|
||||||
|
mtu = result.get('mtu')
|
||||||
|
if mtu:
|
||||||
|
result.update({
|
||||||
|
'mtu': mtu + consts.SIZE_OF_VLAN_TAG
|
||||||
|
})
|
||||||
|
else:
|
||||||
|
result.update({
|
||||||
|
'mtu': consts.DEFAULT_MTU + consts.SIZE_OF_VLAN_TAG
|
||||||
|
})
|
||||||
|
return result
|
||||||
|
|
|
@ -517,8 +517,10 @@ class Cluster(NailgunObject):
|
||||||
if StrictVersion(ver) == StrictVersion('7.0'):
|
if StrictVersion(ver) == StrictVersion('7.0'):
|
||||||
return neutron.NeutronManager70
|
return neutron.NeutronManager70
|
||||||
|
|
||||||
if StrictVersion(ver) >= StrictVersion('8.0'):
|
if StrictVersion(ver) == StrictVersion('8.0'):
|
||||||
return neutron.NeutronManager80
|
return neutron.NeutronManager80
|
||||||
|
if StrictVersion(ver) >= StrictVersion('9.0'):
|
||||||
|
return neutron.NeutronManager90
|
||||||
|
|
||||||
return neutron.NeutronManager
|
return neutron.NeutronManager
|
||||||
elif net_provider == consts.CLUSTER_NET_PROVIDERS.nova_network:
|
elif net_provider == consts.CLUSTER_NET_PROVIDERS.nova_network:
|
||||||
|
|
|
@ -131,7 +131,7 @@ class TestDeploymentAttributesSerialization90(
|
||||||
@mock.patch('nailgun.objects.Release.get_supported_dpdk_drivers')
|
@mock.patch('nailgun.objects.Release.get_supported_dpdk_drivers')
|
||||||
def _check_dpdk_serializing(self, drivers_mock, has_vlan_tag=False,
|
def _check_dpdk_serializing(self, drivers_mock, has_vlan_tag=False,
|
||||||
sriov=False, max_queues=0,
|
sriov=False, max_queues=0,
|
||||||
dpdk_cpu_pinning=0):
|
dpdk_cpu_pinning=0, nic_driver=None):
|
||||||
drivers_mock.return_value = {
|
drivers_mock.return_value = {
|
||||||
'driver_1': ['test_id:1', 'test_id:2']
|
'driver_1': ['test_id:1', 'test_id:2']
|
||||||
}
|
}
|
||||||
|
@ -154,6 +154,8 @@ class TestDeploymentAttributesSerialization90(
|
||||||
dpdk_nic.meta['max_queues'] = max_queues
|
dpdk_nic.meta['max_queues'] = max_queues
|
||||||
if dpdk_cpu_pinning:
|
if dpdk_cpu_pinning:
|
||||||
node.attributes['cpu_pinning']['dpdk']['value'] = dpdk_cpu_pinning
|
node.attributes['cpu_pinning']['dpdk']['value'] = dpdk_cpu_pinning
|
||||||
|
if nic_driver:
|
||||||
|
dpdk_nic.driver = nic_driver
|
||||||
|
|
||||||
objects.Cluster.prepare_for_deployment(self.cluster_db)
|
objects.Cluster.prepare_for_deployment(self.cluster_db)
|
||||||
|
|
||||||
|
@ -205,6 +207,9 @@ class TestDeploymentAttributesSerialization90(
|
||||||
min(max_queues, dpdk_cpu_pinning - 1))
|
min(max_queues, dpdk_cpu_pinning - 1))
|
||||||
else:
|
else:
|
||||||
self.assertFalse('max_queues' in vendor_specific)
|
self.assertFalse('max_queues' in vendor_specific)
|
||||||
|
if nic_driver:
|
||||||
|
self.assertEqual(dpdk_interface['mtu'],
|
||||||
|
consts.DEFAULT_MTU + consts.SIZE_OF_VLAN_TAG)
|
||||||
|
|
||||||
def test_serialization_with_dpdk(self):
|
def test_serialization_with_dpdk(self):
|
||||||
self._check_dpdk_serializing()
|
self._check_dpdk_serializing()
|
||||||
|
@ -220,6 +225,12 @@ class TestDeploymentAttributesSerialization90(
|
||||||
self._create_cluster_with_vxlan()
|
self._create_cluster_with_vxlan()
|
||||||
self._check_dpdk_serializing(has_vlan_tag=True)
|
self._check_dpdk_serializing(has_vlan_tag=True)
|
||||||
|
|
||||||
|
def test_serialization_with_dpdk_with_i40e_driver(self):
|
||||||
|
driver = 'i40e'
|
||||||
|
dpdk_cpu_pinning = 4
|
||||||
|
self._check_dpdk_serializing(nic_driver=driver,
|
||||||
|
dpdk_cpu_pinning=dpdk_cpu_pinning)
|
||||||
|
|
||||||
def test_serialization_with_dpdk_queues_limited_max_queues(self):
|
def test_serialization_with_dpdk_queues_limited_max_queues(self):
|
||||||
max_queues = 2
|
max_queues = 2
|
||||||
dpdk_cpu_pinning = 4
|
dpdk_cpu_pinning = 4
|
||||||
|
|
|
@ -1858,6 +1858,7 @@ class TestClusterObjectGetNetworkManager(BaseTestCase):
|
||||||
('2014.2.2-6.1', neutron.NeutronManager61),
|
('2014.2.2-6.1', neutron.NeutronManager61),
|
||||||
('2015.6.7-7.0', neutron.NeutronManager70),
|
('2015.6.7-7.0', neutron.NeutronManager70),
|
||||||
('2016.1.1-8.0', neutron.NeutronManager80),
|
('2016.1.1-8.0', neutron.NeutronManager80),
|
||||||
|
('mitaka-9.0', neutron.NeutronManager90)
|
||||||
):
|
):
|
||||||
self.check_neutron_network_manager(
|
self.check_neutron_network_manager(
|
||||||
consts.CLUSTER_NET_PROVIDERS.neutron,
|
consts.CLUSTER_NET_PROVIDERS.neutron,
|
||||||
|
|
Loading…
Reference in New Issue