Passthrough of SR-IOV physical functions (partial)

Registered by Nikola Đipanov

Nova has supported passthrough of PCI devices with it's libvirt driver for a
few releases already, during which time the code has seen some stabilization
and a few minor feature additions.

In the case of SR-IOV enabled cards, it is possible to treat the card either as
a number of virtual devices (called VFs - virtual functions) or as a full
device (PF - physical function).

Nova's current handling exposes only virtual functions as resources that can
be requested by instances - and this is the most common use case by far.
However with the rise of the requirements to virtualize network applications,
it can be necessary to give instances full control over hardware and not just a
single virtual function.

OpenStack is seen as one of the central bits of technology for the NFV
use-cases, and a lot of the work has already gone into making OpenStack and
Nova NFV enabled, so we want to make sure that we close these small remaining
gaps.

Blueprint information

Status:
Complete
Approver:
John Garbutt
Priority:
Low
Drafter:
Nikola Đipanov
Direction:
Approved
Assignee:
Nikola Đipanov
Definition:
Approved
Series goal:
Accepted for mitaka
Implementation:
Implemented
Milestone target:
milestone icon mitaka-3
Started by
John Garbutt
Completed by
John Garbutt

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:sriov-physical-function-passthrough,n,z

Addressed by: https://review.openstack.org/212472
    spec document for sriov-physical-function-passthrough blueprint

Addressed by: https://review.openstack.org/237494
    tests: Allow for code block lines to be longer

Gerrit topic: https://review.openstack.org/#q,topic:bp/sriov-physical-function-passthrough,n,z

Addressed by: https://review.openstack.org/249013
    db: adding columns to PciDevice table

Addressed by: https://review.openstack.org/249014
    db: querry to retrieve all pci device by parent address

Addressed by: https://review.openstack.org/249015
    objects: adding a parent_addr field to the PciDevice object

Addressed by: https://review.openstack.org/249016
    pci: filter out any unavailable SRIOV Physical Functions

Addressed by: https://review.openstack.org/249017
    pci: adding support to specify a dev_type in pci requests

Addressed by: https://review.openstack.org/249018
    pci: changing the claiming and allocation logic for PF/VF assignment

Addressed by: https://review.openstack.org/259110
    Make pci_alias parsing logic not assume device_type is set

Addressed by: https://review.openstack.org/259254
    pci: adding support to specify a device_type in pci requests

Gerrit topic: https://review.openstack.org/#q,topic:pf-neutron-port,n,z

Addressed by: https://review.openstack.org/265326
    Add caching of service_min_versions in the conductor

Addressed by: https://review.openstack.org/266560
    objects: update the old location parent_addr only if it has value

Addressed by: https://review.openstack.org/269764
    pci: use context when performing oprations of pci devices

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.