[openstack-dev] [nova] placement/resource providers update 6

Chris Dent cdent+os at anticdent.org
Fri Dec 16 12:40:37 UTC 2016

This will be the last resource provider/placement update for the
year. Except the next one at the end of the first week of January.
There's a lot of work happening related to placement, on multiple
concurrent threads.

# What Matters Most

The most important placement-related stuff right now is getting the
scheduler using a filtered list of resource providers and the things
that fall out from that: increased aggregate awareness in server and
client, miscellaneous bug fixes, and getting CI using placement.
There's a bit about each of those within.

# Recently Merged Stuff

Code was recently merged to make the objects used by the placement
API not remotable. There's a note in
nova/objects/resource_provider.py saying so, but in case you miss
it: Don't add remotable methods in there.


The reason for doing this is because the only published interface to
placement data will be the HTTP API provided by the placement

# Unplanned Stuff

We don't currently have an active plan for when we will implement a
placement client. Though we decided to not use a specific client in
the scheduler's report client (because simple requests+JSON works
just fine) we still have expectations that shared resource providers
will likely be managed via commands that can be run using the

Miguel Lavalle started work on a client

# Pending Planned Work

## Resource Tracker Cleanup and Aggregates Work

There's a lot of work being done in the resource tracker and the
report client to to ensure that it cane work properly with the
changes brought about by resource providers and friends. Jay's done
a big cleanup so tracking Ironic will be more efficient:


That stack provide the base for changes to support management of the
new style of Ironic inventory: custom resource classes:


It also provides the cleaner group on which to manage maps of
aggregates associated with the compute node:


Which has inspired work to get the opposite information from the
placement API: Get me the resource providers that are associated
with the listed aggregates:


## Filtering Hosts in the Scheduler

The scheduler will use the placement API to retrieve a list of
filtered resource providers that have sufficient vcpu, disk and ram
to support a placement request. This will minimize the number of
candidate hosts that need to be evaluated in the current
nova-scheduler. The code to support that in the API is here:


with code for the nova-scheduler side expected in the forthcoming

As this work emerges, we'll need to make sure that both the client
and server sides are aware of aggregate asociations as "the resource
providers that the placement service returns will either have the
resources requested or will be associated with aggregates that have
providers that match the requested resources."

## Docs

There are three types of docs in progress:

* placement.rst

* placement-dev.rst

* placement-api-ref

The two reviews are very much WIP at this point, just something to
get the ball rolling. The api-ref borrows from useful tooling in the
nova api-ref and adds a some stuff to make it hard to add a new
route without also adding some documentation.

## Custom Resource Classes

The main bits of this have merged and the active bits right now are
related to integration with the resource tracker and ironic
inventory (above).

## Nested Resource Providers

As before: Percolating and moving forward.


## Resource Provider Traits

There's been some recent activity on the spec for resource provider
traits. These are a way of specifying qualitative resource
requirements (e.g., "I want my disk to be SSD").


I'm not clear on whether this is still targeting Ocata or not?

# CI using Placement

We'd like to get placement running in all the CI jobs (for branches
that have it). devstack-gate and devstack changes are in progress
for this:


# Upgrade Checking

See Matt's excellent summary of a discussion about tools to help a
deployment know if they have turned on all the necessary bits to
upgrade to Ocata. One of those necessary bits is placement.


# Stuff Happening Outside of Nova


* Neutron IPV4 inventory

* Placement support in puppet-nova

# Pending Pickup Work

Bugs, refactoring and the rest.

* Do not post allocations that are zero

   This one was found initially by the testing of the puppet-nova
   change above, and then confirmed by the CI additions mentioned
   above. That also led to a change to adjust where and how some
   exceptions are being logged:


* Small improvements to placement.rst

* Update the generic resource pools spec to reflect reality

* [WIP] Placement api: Add json_error_formatter to defaults

   This is an effort to avoid boilerplate, but no good solution has
   been determined yet. Reviewers can help us figure a good way to
   handle things.

* CORS support in placement API:

* Demo inventory update script:

   This one might be considered a WIP because how it chooses to do
   things (rather simply and dumbly) may not be in line with expecations.

# End

Thanks to everyone for all the hard work.

Chris Dent                 ¯\_(ツ)_/¯           https://anticdent.org/
freenode: cdent                                         tw: @anticdent

More information about the OpenStack-dev mailing list