Integration of SR-IOV/OVS-DPDK ports to OpenStack Dashboard

Registered by Souvik Dey

Summary
=======
Addition of New port(vnic) type parameter in Horizon to enable Users to create SR-IOV enabled ports.

Motivation
========
Currently in Horizon, we only take the inputs of network which is to be used to created the ports for the instance getting spawned.
The port is always created as vnic_type=normal, which creates a virtual port on the given network.
But as the support of SR-IOV is there in openstack and also as it is becoming more relevant to use SR-IOV ports for better network performance, we should have support of creation of ports with vnic_type=direct from the Horizon too. This will help the users to use Horizon for all types of supported vnic_type which currently is not the case. This can used to support all the possible supported types direct | direct-physical | macvtap | normal | baremetal.
In future if we have support for vhostuser also we should be adding that support to Horizon port creation.

Description
=========
When we create instances from Horizon, we need to specify the networks to be used for creating the new ports required for the instance. But there we dont take any inputs from the user as to what will the type of vnic. We assume the port to be of virtual type and dont pass the vnic_type option in the neutron port-create command from the Horizon. As not mentioning the vnic_type in the neutron api command, the neutron used the default value of vnic_type of default. This restricts users from
creating instances with SR_IOV ports from Horizon and only CLI can be used, which is combursome and error prone. This addition of the new field vnic_type in the port creation time or Network selection tab will help users to have the flexibility of creating the correct required port for the instance. The change will be to present a drop down of the supported vnic_type to the user and use the selected option as the vnic_type while issuing the neutron port-create command.

UX
===
There will be change required to introduce a new drop down menu in the Network selection tab of Launch instance. This new drop down will specify the supported vnic_types which user and select. This same vnic_type will be then used for neutron port-create api command.
More discussion needs to happen on this.

Testing
======
We should be able to create SR-IOV instances with port type direct from the Horizon.

Outside Dependencies
==================
There should be any aoutside dependency for this as the option is already supported in the neutron api command.

Requirements Update Required
========================
NA

Doc Impact
=========
No Doc impact except that we should be mentioning this new support.
-- Support of SR-IOV instance creation in Horizon.

Blueprint information

Status:
Complete
Approver:
Rob Cresswell
Priority:
Low
Drafter:
Souvik Dey
Direction:
Approved
Assignee:
Akihiro Motoki
Definition:
Approved
Series goal:
Accepted for 13.0.0-queens
Implementation:
Implemented
Milestone target:
milestone icon queens-3
Started by
Akihiro Motoki
Completed by
Akihiro Motoki

Related branches

Sprints

Whiteboard

[robcresswell 2017-02-21]
Please follow the template when adding new blueprints: https://blueprints.launchpad.net/horizon/+spec/template

Ok will update the requirement with the blueprint template.

[souvikdey 2017-03-03]
The point to discuss there is where we should have the change which will be more user friendly. There are 2 possible ways of doing it as mentioned below:
1. There can be new functionality which have to added to the create_instance workflow to have a type of port to be created in the Network selection option in Launch Instance tab.

2. We can add the functionally of Create port in the Network Tab along with create subnet. We are take the vnic_type, ip address, subnet and name as inputs there. The created port will be available on the Network Ports option on the Launch Instance tab which can be selected and used for instance creation. This way we can create instances directly with SR-IOV port from dashboard itself.

Now the point of discussion is that which one will be a better option. Or should we have both the options. If we want to have both the options then I can create one more attached blueprint for the 2nd option.

Please do suggest your views on this.

[souvikdey 2017-04-12]
Can we have a discussion on this so that we can close out the plan. The Sample of the network tab is shown - https://docs.google.com/document/d/1uY-s9ou0GNMdlqlz_jxtnpi9mjtCR5Qdre5uRMmPcRY/edit?usp=sharing

[robcresswell 2017-05-31]
It's pretty difficult for me to work out what is actually possible from the information given here; I don't know much about how Nova decides on the vnic_type when creating ports on a given network. I *believe* you can currently create the ports manually with a specific vnic_type, but not via launch instance. The best place to discuss this would be in the weekly meeting or via the mailer.

[amotoki 2018-01-22]
The feature requested here has been implemented as a fix of bug 1402959 (in Queens release). When I implemented it as bug 1402959, I didn't notice it. I believe all we want here has been implemented.
Let's mark it as "Implemented".

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.