[openstack-dev] [nova] [placement] resource providers update 45

Chris Dent cdent+os at anticdent.org
Fri Dec 15 15:43:05 UTC 2017

Here's resource provider and placement update 45. I think we'll call
this one the last one of 2017 and I'll start things up again in 2018
on the 5th. Probably with some kind of new numbering scheme so the
subjects don't overlap with this year. Thanks to everyone who has
helped to move placement along this year. We've moved an absolute ton
of code and set the foundation for some long-desired features.

(Apologies if this version of the update is even more riddled with
typos and weird wrong words and bad contractions than normal, I have a
cold. I realize this is a bit like saying infinite (resource classes)
+ 1 is different from infinite (resources classes) - 1.)

# Most Important

The three main themes (nested providers, alternate hosts, migration
allocation doubling) remain the main priorities, but there's a lot of
work alongside these things to make them integrate properly and get
necessary bits (like traits) happening.

# What's Changed

Microversion 1.15 has merged. This adds last-modified headers to those
responses where it makes sense. This was done to increase the degree
to which we are good users of HTTP but doesn't have any immediate
change on functionality, unless you happen to want to use that
last-modified information client side. It does mean, however, that any
other pending microversion are now racing for 1.16.

Also, we've made a commitment that the nova-side of the conversation
requires placement microversion 1.14. This means that failovers to
older microversions in requests in the report client are not required.
Matt has started a nova-status check and docs for this:


There's plenty of code in the report client that is now redundant, but
doesn't really hurt anything by being there. If someone is aching for
something to do, it would be a nice cleanup (green bar on the yellow

# Help Wanted

(unchanged from last week, no new data, yet)

A takeaway from summit is that we need, where possible, benchmarking
info from people who are making the transition from old methods of
scheduling to the newer allocation_candidate driven modes.  While
detailed numbers will be most useful, even anecdotal summaries of
"woot it's way better" or "hmmm, no it seems worse" are useful.

# Docs

A few more docs improvements merged. Others need a bit more review to
push them over the edge:

* https://review.openstack.org/#/c/512215/
     Add create inventories doc for placement

* https://review.openstack.org/#/c/523007/
     Add x-openstack-request-id in API ref

* https://review.openstack.org/#/c/511342/
     add API reference for create inventory

* https://review.openstack.org/#/c/501252/
      doc: note that custom resources are not fully supported

# Main Themes

## Nested Providers

The nested-resource-providers stack has grown a long tail of changes
for managing nested providers rooted on a compute node:


I'm on the hook to decode some description of this work that Eric gave
me in IRC into a summary of what the end game is with that long tail
of stuff. That's been delayed because of the aforementioned cold, but
I intend to get to it next week. Alongside that will also be some
clarifications about how in_tree is supposed to work when querying
resource providers, as asked by Matt in response to last week's
update. Some of that will go in the placement docs.

While we currently have support for nested providers in
/resource_providers we do not in /allocation_candidates. My
understanding is that Jay has the ball on this.

## Alternate Hosts

Having the scheduler request and use alternate hosts is real close:


Matt has made a change to ironic's CI to depend on this stuff, to see
if reschedules will not work as desired:


## Migration Allocations

The main code to do doubling of migration allocations using an
allocation uuid has merged. I've started the process of changing that
to use the new POST /allocations functionality. Just a WIP at this
point but is mostly working:


## Misc Traits, Shared, Etc Cleanups

There's a stack of code that fixes up a lot of things related to
traits, sharing providers, test additions and fixes to those tests. At
the moment the changes are in a bug topic:


But that is not the only bug they are addressing. Some of the above
may appear in the list below too.

# Other

Since everyone seems rather busy anyway, once again this week nothing
new is added to the "other" list. I've simply copied over the previous
week's list with anything that's been merged or abandoned removed.

* https://review.openstack.org/#/c/522002/
     skip authentication on root URI

* https://review.openstack.org/#/c/519462/
     Log options at debug when starting API services under wsgi
     (Make any sense to split this into placement and nova versions? One
     seems easier than the other)

* https://review.openstack.org/#/c/506175/
     VMware: implement get_inventory() driver method

* https://review.openstack.org/#/q/I0c4ca6a81f213277fe7219cb905a805712f81e36
     Proper error handling by _ensure_resource_provider
     (This is already approved for master, but there are backports.)

* https://review.openstack.org/#/q/topic:bp/placement-osc-plugin
      Build the placement osc plugin

* https://review.openstack.org/#/c/511936/
      Neutron's placement client

* https://review.openstack.org/#/q/topic:bp/request-traits-in-nova
      request traits in nova

* https://review.openstack.org/#/c/513041/
      Extract instance allocation removal code

* https://review.openstack.org/#/c/493865/
      cover migration cases with functional tests

* https://review.openstack.org/#/c/494206/
      Remove the Pike migration code for flavor migration
      and associated nova-status update

* https://review.openstack.org/#/q/topic:bp/add-support-for-vgpu
      Add support for VGPU

* https://review.openstack.org/#/q/topic:placement_schema_separation
      Put the json schema in their own directory

# End

Your prize this week is an opportunity to start thinking about what it
will take to extract placement to its own repo, and whether we could
shorcut things with, in nova/api/openstack/placement/wsgi.py (leaving
that as the only "placement" file in nova):

     from placement import deploy

Clearly this doesn't address migrations and such, but might be a
useful tool in a suite of tools to move the process along.

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

More information about the OpenStack-dev mailing list