placement/releasenotes/notes/multi-member-of-4f9518a96652c0c6.yaml
Jay Pipes f83815c3b9 support multiple member_of qparams
Adds a new placement API microversion that supports specifying multiple
member_of parameters to the GET /resource_providers and GET
/allocation_candidates API endpoints.

When multiple member_of parameters are found, they are passed down to
the ResourceProviderList.get_by_filters() method as a list. Items in
this list are lists of aggregate UUIDs.

The list of member_of items is evaluated so that resource providers
matching ALL of the member_of constraints are returned.

When a member_of item contains multiple UUIDs, we look up resource
providers that have *any* of those aggregate UUIDs associated with them.

Change-Id: Ib4f1955f06f2159dfb221f3d2bc8ff7bfce71ee2
blueprint: alloc-candidates-member-of
2018-05-03 09:02:29 -04:00

21 lines
1.0 KiB
YAML

---
features:
- |
A new 1.24 placement API microversion adds the ability to specify multiple
`member_of` query parameters for the `GET /resource_providers` and `GET
allocation_candidates` endpoints.
When multiple `member_of` query parameters are received, the placement
service will return resource providers that match all of the requested
aggregate memberships. The `member_of=in:<agg uuids>` format is still
supported and continues to indicate an IN() operation for aggregate
membership. Some examples for using the new functionality:
Get all providers that are associated with BOTH agg1 and agg2:
?member_of=agg1&member_of=agg2
Get all providers that are associated with agg1 OR agg2:
?member_of=in:agg1,agg2
Get all providers that are associated with agg1 and ANY OF (agg2, agg3):
?member_of=agg1&member_of=in:agg2,agg3
Get all providers that are associated with ANY OF (agg1, agg2) AND are also
associated with ANY OF (agg3, agg4):
?member_of=in:agg1,agg2&member_of=in:agg3,agg4