IP capacity awarness (filter) via aggregate metadata

Registered by Kevin Rasmussen

Problem description:

Some IP subnets can be restricted to a subset of hosts, due to an operators network configuration. In this environment, it means you could build somewhere that has no public IPs available.

This may seem familiar to some of you as it was being addressed previously via:

https://specs.openstack.org/openstack/nova-specs/specs/pike/approved/prep-for-network-aware-scheduling-pike.html

However as far as I can tell this work has halted.

Proposal:

A stopgap/workaround until subnet data is available in the `host_state` vars for scheduler filters.

For the time being I believe we could use metadata that contains subnets within aggregates to accomplish the same thing short term.

This should be easy to migrate from to an eventual solution where the subnet data could be available within the `host_state` variable.

A first pass / POC for this has been made here:

https://review.openstack.org/#/c/633178/3/nova/scheduler/filters/aggregate_subnet_availability_filter.py

Current requirements to make this work:

Aggregates that contain a comma separated list of subnets within a `subnets` key that detail the subnets that hosts within the aggregate are using.

Performance impact with current POC:

The first host that scheduling is attempted against will invoke a call to neutron to get IP availability and cache it so it can be checked against on each other potential host.

Blueprint information

Status:
Started
Approver:
None
Priority:
Undefined
Drafter:
Kevin Rasmussen
Direction:
Needs approval
Assignee:
None
Definition:
New
Series goal:
None
Implementation:
Needs Code Review
Milestone target:
None
Started by
Kevin Rasmussen

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.