Add Horizon support for Neutron subnet allocation feature

Registered by Carl Baldwin

In Kilo, Neutron has added a new feature called subnet allocation [1]. The blueprint specification [2] [3] may be a little bit out of date so the code should be use as the definitive reference. I'm also happy to consult.

Subnet pools describe a portion of ipv6 or ipv4 address space which can be used to automatically allocate subnet cidrs. The basic CRUD for subnetpools is provided.

When a subnet pool is defined and visible, a subnet cidr does not need to be provided when creating a new subnet. Instead, a pool id, the ip version, and a prefix length (e.g. 64 if an ipv6 /64 is desired) can be specified and the cidr will be allocated and filled in automatically by the Neutron server. A specific cidr can still be optionally specified along with a pool id and in lieu of the prefix length and ip version. The subnet create will fail if that cidr is already being used in the chosen pool.

An admin can create a shared subnetpool which everyone can see and use. This allows a single IP address space to be shared and coordinated across the entire deployment. This will be important for IPv6 to make globally routable subnets available to all projects.

I see two phases for adding Horizon support for this new feature. The first phase is to add support for using existing subnet pools when creating subnets. I imagine a new dropdown list of subnet pools somewhere near the cidr field in the subnet details. The default should be none, empty, or however you want to show that no pool will be used; maybe include a checkbox indicating that a pool should be used. (default unchecked). However it is done, the cidr field becomes optional when using a pool.

The second phase is to provide support for creating and managing subnetpools themselves. These can already be managed outside of Horizon using the API directly or the CLI. So, I see this as nice to have rather than essential. However, it will be nice to be able to create and update pools and see the current pool usage in terms of what portion of the pool has been allocated.

[1] https://blueprints.launchpad.net/neutron/+spec/subnet-allocation
[2] https://review.openstack.org/#/c/135771
[3] https://review.openstack.org/#/c/142231

Blueprint information

Status:
Complete
Approver:
David Lyle
Priority:
Medium
Drafter:
Carl Baldwin
Direction:
Approved
Assignee:
None
Definition:
Approved
Series goal:
Accepted for liberty
Implementation:
Implemented
Milestone target:
milestone icon 8.0.0
Started by
David Lyle
Completed by
David Lyle

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:bp/neutron-subnet-allocation,n,z

Addressed by: https://review.openstack.org/203569 (Merged)
    Implement client API bindings for Neutron subnet allocation

Addressed by: https://review.openstack.org/203570
    Add support for Neutron subnet allocation when creating subnets

These are ready, reviewed and I hope to get them approved for Liberty

Move support for managing the subnetpools themselves to the M-cycle.

During the M-cycle there will be provided APIs in Neutron for meauring the utilization of the subnetpools. This will be very usefull when implementing the UI for viewing and managing subnetpools.

Addressed by: https://review.openstack.org/207759
    Add support for managing subnetpools on the Networks panel

(?)

Work Items

Work items:
Implement client API bindings for Neutron subnet allocation: DONE
Add support for Neutron subnet allocation when creating subnets: DONE
Add support for managing subnetpools on the Networks panel: POSTPONED

This blueprint contains Public information 
Everyone can see this information.