[openstack-dev] [nova] [placement] resource providers update 18-03

Chris Dent cdent+os at anticdent.org
Fri Jan 19 09:46:30 UTC 2018

Here's resource provider and placement update 18-03. I'm travelling so
this version may be a bit abridged.

# Most Important

This remains mostly the same, getting alternate hosts all the way in
and finishing up nested resource provider support (as ProviderTree
on the nova side and support for nested in /allocation_candidates on
the placement side). Both of these will likely need some time to be
rigorously run through their paces before the end of the cycle, so the
sooner stuff merges the sooner we can start getting the whole suite
exercised by humans.

Earlier in the week I did some exercising by humans and was confused
by the state of traits handling on /allocation_candidates (it could be
the current state is the expected state but the code didn't make that
clear) so I made a bug on it make sure that confusion didn't get forgotten:


I highlight this not because I think that problems is especially a
"most important" but that it is a type of problem that I think we'll
see a fair bit of over the next small number of weeks as we close out
Queens and head for Rocky.

(Looks like Alex is working on the correct fix at


Based on that it seems most of the confusion here is mine, but that it
was hard to tell what is up or the plan is is something we probably
need to get better at.)

The Rocky PTG prep etherpad is in flight at


please add things you think need to be talked about at the PTG.

There's an email thread in progress that is probably pretty important
to understand, if you're working on placement related things:


The behavior of the Aggregate*FilterS has gone awry in the face of
placement satisfying allocation_ratio concerns before those filters
ever see proposed hosts. There are some ideas on how to improve the
situation in the thread, but it appears there are still some open

# What's Changed

An issue with foreign key constraints and deleting a resource provider
whose root is itself has been resolved and the change merged:


Anybody (or thing) that was experimenting with deleting resource
providers with a database with some integrity would have encountered
this problem.

A proposal to create a Resource Management SIG has merged. There was
some email discussion about it:


# Help Wanted

There are a fair few unstarted bugs related to placement that could do
with some attention. Here's a handy URL: https://goo.gl/TgiPXb

# Main Themes

## Nested Providers

The nested provider work is proceeding along two main courses: getting
the ProviderTree on the nova side gathering and syncing all the
necessary information, and enabling nested provider searching when
requesting /allocation_candidates. Both of these are within the same


One of the challenges this week was working out a reasonable way to
have a read-only and thread-safe duplicate of a ProviderTree so that
tree A and tree B can have what amounts to a diff done on them. This
is being figured out on


## Alternate Hosts

The last piece of the puzzle, changing the RPC interface, is pending:


Related to this, exploration has started on limiting the number of
responses that the scheduler will get when requesting hosts (some
of which will become alternates):


# Other

* Support traits in allocation candidates

* Extract instance allocation removal code

* Sending global request ids from nova to placement

* VGPU suppport

* Use traits with ironic

* Move api schemas to own dir
    Just one of these left

* request limit /allocation_candidate WIP

* Update resources once in update available resources
    (This ought, when it works, to help address some performance
    concerns with nova making too many requests to placement)

* spec: treat devices as generic resources
    This is a WIP and will need to move to Rocky

* log options at DEBUG when starting wsgi app

* Support aggregate affinity filters/weighers
    A rocky targeted improvement to affinity handling

* Move placement body samples in docs to own dir

* Improved functional test coverage for placement

* Functional tests for traits api

* Functional test improvements for resource class

* annotate loadapp() (for placement wsgi app) as public

* Remove microversion fallback code from report client

* Fix documentation nits in set_and_clear_allocations

* WIP: SchedulerReportClient.set_aggregates_for_provider
    This is likely for rocky as it depends on changing the api for
    aggregates handling on the placement side to accept and provide
    a generation

* Naming update cn to rp (for clarity)

* Add functional test for two-cell scheduler behaviors
    (This is old and maybe out of date, but something we might like to

* Make API history doc consistent

* WIP: General policy sample file for placement

* Fix missing marker functions
   (some placement exceptions are not translatable)

* Support relay RP for allocation candidates
   Bug fix for sharing with multiple providers

# End

As usual, I'm sure I missed something. Please reply with any

Your prize is an invitation to do some exercising by humans.

Chris Dent                      (⊙_⊙')         https://anticdent.org/
freenode: cdent                                         tw: @anticdent

More information about the OpenStack-dev mailing list