From 86e81f828a49da80e7204789ebd2481d0b3dd45d Mon Sep 17 00:00:00 2001 From: Moshe Levi Date: Fri, 13 Nov 2015 13:30:22 +0200 Subject: [PATCH] SR-IOV: Improve the vnic type check in the neutron api The Neutronv2 API checks the vnic_type to see whether or not it should include a PCI requests for SR-IOV ports. The check is "if the vnic_type is not NORMAL" which is fine for now that we have only NORMAL, DIRECT and MACVTAP, but in the future more vnic types can be added. This patch update the check to be what the vnic types are expecting to be. Change-Id: I7b8ba1acfbafc3d02ab50afadf4627fcce052484 --- nova/network/model.py | 2 ++ nova/network/neutronv2/api.py | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/nova/network/model.py b/nova/network/model.py index d968799c3f..9cb7b546f4 100644 --- a/nova/network/model.py +++ b/nova/network/model.py @@ -88,6 +88,8 @@ VNIC_TYPE_NORMAL = 'normal' VNIC_TYPE_DIRECT = 'direct' VNIC_TYPE_MACVTAP = 'macvtap' +VNIC_TYPES_SRIOV = (VNIC_TYPE_DIRECT, VNIC_TYPE_MACVTAP) + # Constants for the 'vif_model' values VIF_MODEL_VIRTIO = 'virtio' VIF_MODEL_NE2K_PCI = 'ne2k_pci' diff --git a/nova/network/neutronv2/api.py b/nova/network/neutronv2/api.py index f2e6c36f04..fbc18b026a 100644 --- a/nova/network/neutronv2/api.py +++ b/nova/network/neutronv2/api.py @@ -1040,7 +1040,7 @@ class API(base_api.NetworkAPI): fields=['binding:vnic_type', 'network_id']) vnic_type = port.get('binding:vnic_type', network_model.VNIC_TYPE_NORMAL) - if vnic_type != network_model.VNIC_TYPE_NORMAL: + if vnic_type in network_model.VNIC_TYPES_SRIOV: net_id = port['network_id'] net = neutron.show_network(net_id, fields='provider:physical_network').get('network') @@ -1066,7 +1066,7 @@ class API(base_api.NetworkAPI): vnic_type, phynet_name = self._get_port_vnic_info( context, neutron, request_net.port_id) pci_request_id = None - if vnic_type != network_model.VNIC_TYPE_NORMAL: + if vnic_type in network_model.VNIC_TYPES_SRIOV: request = objects.InstancePCIRequest( count=1, spec=[{pci_request.PCI_NET_TAG: phynet_name}],