Tenant networking support for Ironic driver

Registered by Jim Rollenhagen

This blueprint covers changes needed for tenant network support for Ironic.

Currently, Ironic only works on a flat network shared between control plane and tenants. There's an ongoing effort to allow for arbitrary networks to be connected to Ironic nodes in various configurations:
https://blueprints.launchpad.net/ironic/+spec/network-provider
https://blueprints.launchpad.net/ironic/+spec/ironic-ml2-integration

There are changes that need to be made to Nova to support this. Specifically:

* The port-create calls to Neutron need to be made with a null binding:host_id. This signals to Neutron that it shouldn't bind the port yet. To keep the provisioning process away from the tenant network, we need to wait for the deployment to complete before binding the port, which only Ironic can control. After completing the deployment, Ironic will make a port-update call with: 1) a binding:host_id value of "baremetal:$node_uuid", and 2) physical switchport information necessary to connect the port.

* The ironic driver will need updates to be able to handle Ironic's "port groups" as well as "ports". A port group is a single logical connection comprised of multiple physical NICs; used in LAG and MLAG configurations.

* A BAREMETAL vnic type will be added to support the BAREMETAL vnic type that was previously added in Neutron.

This will support the basic tenant networking support we've built out in Ironic; some thought should be put into the future of this integration. For example, in the future we'll want to support multiple networks via VLAN or VXLAN over a pair of bonded NICs (currently Nova enforces a 1:1 mapping of NICs to networks, as in the virtual world NICs can be created on the fly).

Blueprint information

Status:
Complete
Approver:
John Garbutt
Priority:
Medium
Drafter:
Jim Rollenhagen
Direction:
Approved
Assignee:
Jim Rollenhagen
Definition:
Approved
Series goal:
Accepted for newton
Implementation:
Implemented
Milestone target:
milestone icon newton-3
Started by
Matt Riedemann
Completed by
Matt Riedemann

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:bp/ironic-networks-support,n,z

Addressed by: https://review.openstack.org/237067
    Tenant networking support for Ironic driver.

Addressed by: https://review.openstack.org/213264
    Adding a new vnic_type for Ironic/Neutron/Nova integration

Gerrit topic: https://review.openstack.org/#q,topic:bp/ironic-ml2-integration,n,z

Addressed by: https://review.openstack.org/194413
    Allow virt driver to define binding:host_id

Addressed by: https://review.openstack.org/206163
    Update ironic virt driver to use portgroups

This was really incomplete for mitaka, I don't think we should probably consider this partially complete since the functionality isn't there. It would seem odd to have a new newton blueprint for it unless the spec is going to be re-proposed. -- mriedem 20160322

Addressed by: https://review.openstack.org/297767
    Re-propose ironic-networks-support for Newton

Addressed by: https://review.openstack.org/297895
    Ironic: change flat network provider to 'flat'

The nova changes are dependent on python-ironicclient changes that are stalled since May, so it looks like this is dead for Newton (our non-priority feature freeze is 6/30) so I'm going to defer this from Newton. -- mriedem 20160629

Per: http://lists.openstack.org/pipermail/openstack-dev/2016-August/100672.html - this was re-approved for a late non-priority FFE. -- mriedem 20160802

Gerrit topic: https://review.openstack.org/#q,topic:bug/1526403,n,z

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.