Add support for virtio-forwarder VNIC type

* This patch adds support for the virtio-forwarder VNIC type.
  * The virtio-forwarder VNIC type has been added as another option for
    setting the "binding:vnic_type" property on a port. This requests a
    low-latency virtio port inside the instance, likely backed by hardware
    acceleration.
  * The documentation for OPENSTACK_NEUTRON_NETWORK/supported_vnic_types
    has been updated to clarify the term "supported VNIC types".
    Unfortunately, the VNIC binding happens at scheduling and error
    reporting in core Nova and Neutron is not optimal in this case.
  * Corresponding python-openstackclient change:
    https://review.openstack.org/#/c/483532/
  * Corresponding neutron-lib change:
    https://review.openstack.org/#/c/483530/

Signed-off-by: Jan Gutter <jan.gutter@netronome.com>
Closes-Bug: 1705548
Depends-On: I28315fb12f62dc7d52d099c211086b2b81eca39a
Change-Id: I02dc3581de8f31c659e545e340cbdf6a1b2bb837
This commit is contained in:
Jan Gutter 2017-07-20 19:28:15 +02:00 committed by Rob Cresswell
parent 5058f8f8f8
commit 587c3de89b
6 changed files with 32 additions and 9 deletions

View File

@ -1757,13 +1757,24 @@ supported_vnic_types
.. versionadded:: 2015.1(Kilo)
.. versionchanged:: 12.0.0(Pike)
Added ``virtio-forwarder`` VNIC type
Clarified VNIC type availability for users and operators
Default ``['*']``
For use with the port binding extension. Use this to explicitly set which VNIC
types are supported; only those listed will be shown when creating or editing
a port. VNIC types include ``normal``, ``direct``, ``direct-physical``,
``macvtap`` and ``baremetal``. By default all VNIC types will be available to
choose from.
types are available for users to choose from, when creating or editing a port.
The VNIC types actually supported are determined by resource availability and
Neutron ML2 plugin support.
Currently, error reporting for users selecting an incompatible or unavailable
VNIC type is restricted to receiving a message from the scheduler that the
instance cannot spawn because of insufficient resources.
VNIC types include ``normal``, ``direct``, ``direct-physical``, ``macvtap``,
``baremetal`` and ``virtio-forwarder``. By default all VNIC types will be
available to choose from.
Example: ``['normal', 'direct']``

View File

@ -32,7 +32,8 @@ VNIC_TYPES = [('normal', _('Normal')),
('direct', _('Direct')),
('direct-physical', _('Direct Physical')),
('macvtap', _('MacVTap')),
('baremetal', _('Bare Metal'))]
('baremetal', _('Bare Metal')),
('virtio-forwarder', _('Virtio Forwarder'))]
class CreatePort(project_forms.CreatePort):

View File

@ -30,7 +30,8 @@ VNIC_TYPES = [('normal', _('Normal')),
('direct', _('Direct')),
('direct-physical', _('Direct Physical')),
('macvtap', _('MacVTap')),
('baremetal', _('Bare Metal'))]
('baremetal', _('Bare Metal')),
('virtio-forwarder', _('Virtio Forwarder'))]
class CreatePort(forms.SelfHandlingForm):

View File

@ -49,7 +49,8 @@
'direct': gettext('Direct'),
'direct-physical': gettext('Direct Physical'),
'macvtap': gettext('MacVTap'),
'baremetal': gettext('Bare Metal')
'baremetal': gettext('Bare Metal'),
'virtio-forwarder': gettext('Virtio Forwarder')
};
ctrl.tableDataMulti = {

View File

@ -350,8 +350,8 @@ OPENSTACK_NEUTRON_NETWORK = {
# Set which VNIC types are supported for port binding. Only the VNIC
# types in this list will be available to choose from when creating a
# port.
# VNIC types include 'normal', 'direct', 'direct-physical', 'macvtap' and
# 'baremetal'
# VNIC types include 'normal', 'direct', 'direct-physical', 'macvtap',
# 'baremetal' and 'virtio-forwarder'
# Set to empty list or None to disable VNIC type selection.
'supported_vnic_types': ['*'],

View File

@ -0,0 +1,9 @@
---
features:
- The ``virtio-forwarder`` VNIC type has been added to the list of valid
types that may be set on a port. This requests a low-latency virtio port
inside the instance, likely backed by hardware acceleration and requires a
supporting Neutron mechanism driver.
- The configuration documentation for ``supported_vnic_types`` in
``OPENSTACK_NEUTRON_NETWORK`` has been updated to help an operator decide
which VNIC types should be available for users to choose from.