[placement][nova][ptg] Summary: Consumer Types

Chris Dent cdent+os at anticdent.org
Sun May 5 23:54:18 UTC 2019

We had a brief conversation in the placement room yesterday
(Saturday May 5th) to confirm we were all on the same page with
regard to consumer types. These provide a way to say that a set of
allocations "is an instance" or "is a migration" and will help with
quota accounting.

We decided that since no one has stepped forward with a more
complicated scenario, at this time, we will go with the simplest
implementation, for now:

* add a consumer types table that has a key and string (length to be
   determined, values controlled by clients) that represents a "type".
   For example (1, 'instance')

* add a column on consumer table that takes one of those keys

* create a new row in the types table only when a new type is
   created, don't worry about expiring them

* provide an online migration to default existing consumers to
   'instance' and treat unset types as 'instance' [1]. This probably
   needs some confirmation from mel and others that it is suitable.
   If not, please provide an alternative suggestion.

* In a new microversion: allow queries to /usages to use a consumer
   type parameter to limit results to particular types and add
   'consumer_type' key will be added to the body of an 'allocations'
   in both PUT and POST.

* We did not discuss in the room, but the email thread [2] did: We
   may need to consider grouping /usages results by type but we could
   probably get by without changing that (and do multiple requests,

Surya, thank her very much, has volunteered to work on this and has
started a spec at [3].

We have decided, again due to lack of expressed demand, to do any
work (at this time) related to resource provider partitioning [4].

There's a pretty good idea on how to do this, but enough other stuff
going on there's not time. Because we decided in that thread that
any one resource provider can only be in one partition, there is
also a very easy workaround: Run another placement server. It takes
only a few minutes to set one up [5]

This means that all of the client services of a single placement
service need to coordinate on what consumer types they are using.
(This was already true, but stated here for emphasis.)

[1] I'm tempted to test how long a million or so rows of consumers
would take to update. If it is short enough we may wish to break
with the nova tradition of not doing data migrations in schema
migrations (placement-manage db sync). But we didn't get a chance to
discuss that in the room.

[2] http://lists.openstack.org/pipermail/openstack-discuss/2019-April/thread.html#4720

[3] https://review.opendev.org/#/c/654799/

[4] http://lists.openstack.org/pipermail/openstack-discuss/2019-April/004721.html

[5] https://docs.openstack.org/placement/latest/install/from-pypi.html

Chris Dent                       ٩◔̯◔۶           https://anticdent.org/
freenode: cdent                                         tw: @anticdent

More information about the openstack-discuss mailing list