Merge "Replace dpdk driver to vfio-pci if sriov is enabled"
This commit is contained in:
commit
3522395af3
|
@ -520,3 +520,5 @@ HYPERVISORS = Enum(
|
|||
"kvm",
|
||||
"qemu"
|
||||
)
|
||||
|
||||
DPDK_DRIVER_IN_SRIOV_CASE = 'vfio-pci'
|
||||
|
|
|
@ -19,6 +19,7 @@ import copy
|
|||
import six
|
||||
from sqlalchemy.sql import not_
|
||||
|
||||
from nailgun import consts
|
||||
from nailgun.db import db
|
||||
from nailgun.db.sqlalchemy import models
|
||||
from nailgun.objects import Cluster
|
||||
|
@ -78,9 +79,13 @@ class NIC(DPDKMixin, NailgunObject):
|
|||
|
||||
@classmethod
|
||||
def get_dpdk_driver(cls, instance, dpdk_drivers):
|
||||
from nailgun.objects import Node
|
||||
pci_id = instance.meta.get('pci_id', '').lower()
|
||||
sriov_enabled = Node.sriov_enabled(instance.node)
|
||||
for driver, device_ids in six.iteritems(dpdk_drivers):
|
||||
if pci_id in device_ids:
|
||||
if sriov_enabled:
|
||||
return consts.DPDK_DRIVER_IN_SRIOV_CASE
|
||||
return driver
|
||||
return None
|
||||
|
||||
|
|
|
@ -128,7 +128,8 @@ class TestDeploymentAttributesSerialization90(
|
|||
return consts.DEFAULT_BRIDGES_NAMES.br_mesh
|
||||
|
||||
@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):
|
||||
drivers_mock.return_value = {
|
||||
'driver_1': ['test_id:1', 'test_id:2']
|
||||
}
|
||||
|
@ -136,6 +137,9 @@ class TestDeploymentAttributesSerialization90(
|
|||
1, 3,
|
||||
cluster_id=self.cluster_db.id,
|
||||
roles=['compute'])[0]
|
||||
|
||||
node.interfaces[0].attributes['sriov']['enabled']['value'] = sriov
|
||||
|
||||
if has_vlan_tag:
|
||||
objects.NetworkGroup.get_node_network_by_name(
|
||||
node, 'private').vlan_start = '103'
|
||||
|
@ -184,11 +188,17 @@ class TestDeploymentAttributesSerialization90(
|
|||
interfaces = serialized_node['network_scheme']['interfaces']
|
||||
dpdk_interface = interfaces[dpdk_interface_name]
|
||||
vendor_specific = dpdk_interface.get('vendor_specific', {})
|
||||
self.assertEqual(vendor_specific.get('dpdk_driver'), 'driver_1')
|
||||
if sriov:
|
||||
self.assertEqual(vendor_specific.get('dpdk_driver'), 'vfio-pci')
|
||||
else:
|
||||
self.assertEqual(vendor_specific.get('dpdk_driver'), 'driver_1')
|
||||
|
||||
def test_serialization_with_dpdk(self):
|
||||
self._check_dpdk_serializing()
|
||||
|
||||
def test_serialization_with_dpdk_sriov(self):
|
||||
self._check_dpdk_serializing(sriov=True)
|
||||
|
||||
def test_serialization_with_dpdk_vxlan(self):
|
||||
self._create_cluster_with_vxlan()
|
||||
self._check_dpdk_serializing()
|
||||
|
|
Loading…
Reference in New Issue