[openstack-dev] [nova] [placement] placement update 18-10

Chris Dent cdent+os at anticdent.org
Fri Mar 9 12:46:12 UTC 2018

Welcome back to your regularly scheduled placement update. I'm still
gathering loose ends from the PTG, so plenty of this will be context
setting, but I'll try to provide the usual too many links.

As mentioned in the last update I'm going to adjust these reports a
bit to make them a bit more focused and also (I hope) shrink the
amount of time it takes to create them. The main visible changes

* The name: it will just be "placement update" now as resource
   providers doesn't really cover it.

* I'm going to focus more on reviews and specs that are directly
   focused on how placement is changing or used, and less on those
   that are "nova using placement as it is". This is not to suggest
   that that work is in any way less important, simply an acceptance
   that there's a lot of work in progress and this can't cover all of
   it. Also there's a useful boundary there that we want to keep as
   strong as possible. So, for example, the way in which minimum
   bandwidth requirements will use traits is not in, but the fact
   that that work may require a way to merge traits is.

* I'm adding a section on placement extraction. This is one of my
   primary occupations at the moment, so I'd like to keep track of
   it somewhere, here seems good. That work also informs the "useful
   boundary" stuff above.

* A questions section has been added for things that seem important
   but I don't know about, discovered while creating these things.

# Most Important

Jay posted a good review of what happened at the PTG and how it will
impact priorities:


There are few specs that came out of that, or were already in
progress, listed below.

Some of the items in Jay's message are TODOs that need a volunteer
to blueprint and spec.

In the meantime many things are dependent on the update provider
tree work, so getting that merged sooner than later is important.

# What's Changed

A big new concept from the PTG is the idea of consumer uuid's
getting a generation so that allocations for a single consumer can
be managed from multiple parties and those parties can "confirm
their view".

There's also code in progress such that a generation is available
immediately when first creating a resource provider. And code to
ensure that generations are used when managing aggregates.

There's a bit of theme here.

# Questions

What's the status of shared resource providers? Did we even talk
about that in Dublin?

# Bugs

* Placement related bugs without owners:  https://goo.gl/TgiPXb
* In progress placement bugs: https://goo.gl/vzGGDQ

# Specs

* https://review.openstack.org/#/c/497733/2
   Report CPU features to placement service by traits API

* https://review.openstack.org/#/c/548903/
   Return Generation from Resource Provider Creation

* https://review.openstack.org/#/c/550244/
   Propose standardized provider descriptor file

* https://review.openstack.org/#/c/548915/
   Express forbidden traits in placement API

* https://review.openstack.org/#/c/549067/
   VMware: place instances on resource pool
   (using update_provider_tree)

* https://review.openstack.org/#/c/549184/
   Spec: report client placement version discovery

* https://review.openstack.org/#/c/548237/
   Update placement aggregates spec to clarify generation handling

* https://review.openstack.org/#/c/418393/
   Provide error codes for placement API

* https://review.openstack.org/#/c/502575/
   WIP:Specification for using cache as a resource using cache
   allocation support
   (This is something that probably should be more placement oriented
   than it currently is.)

* https://review.openstack.org/#/c/545057/
   mirror nova host aggregates to placement API

* https://review.openstack.org/#/c/541507/
   Support traits in Glance

# Main Themes

## Update Provider Tree

The ability of virt drivers to represent what resource providers
they know about--whether that be numa, or clustered resources--is
supported by the update_provider_tree method. Part of it is done,
but some details remain:


## Request Filters

These are a way for the nova scheduler to doctor the request being
sent to placement, using a sane interface.


## Mirror nova host aggregates to placement

This makes it so some kinds of aggregate filtering can be done
"placement side" by mirroring nova host aggregates into placement


## Forbidden Traits

A way of expressing "I'd live resources that do _not_ have trait X".
Just a spec so far:


## Consumer Generations

Not yet started.

# Extraction

I wrote up an email with the current state of and plan for
extracting placement to its own project:


There's plenty of volunteer opportunities in there. One fairly major
task is to create an os-resource-classes lib, akin to os-traits.

Related code:

* move resource provider objects
   (The base of that stack needs to be split into smaller pieces.)

# Other

* https://review.openstack.org/#/c/546660/
   Purge comp_node and res_prvdr records during deletion of

* https://review.openstack.org/#/c/545729/
   Set [scheduler]workers=$API_WORKERS

* https://review.openstack.org/#/c/159382/
   Scheduler multiple workers support

* https://review.openstack.org/#/c/547812/
   Migrate legacy-osc-placement-dsvm-functional job in-tree

* https://review.openstack.org/#/q/topic:bp/placement-osc-plugin-rocky
   A huge pile of improvements to osc-placement

* https://review.openstack.org/#/q/topic:bp/generation-from-create-provider
   Get a generation when posting to create a new rp

* https://review.openstack.org/#/c/548249/
   placement: generation in provider aggregate APIs

* https://review.openstack.org/#/c/548983/
   report client: placement API version discovery

* https://review.openstack.org/#/c/546713/
   Add compute capabilities traits (to os-traits)

* https://review.openstack.org/#/c/550873/

* https://review.openstack.org/#/c/532924/
   Add default values for allocation ratios

* https://review.openstack.org/#/c/524425/
   General policy sample file for placement

* https://review.openstack.org/#/c/546177/
   Provide framework for setting placement error codes

# End

Feh, that certainly didn't end up any smaller. Mostly because of
specs. Go read some specs!

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

More information about the OpenStack-dev mailing list