allocation candidates "?member_of=" doesn't work with nested providers

Bug #1792503 reported by Tetsuro Nakamura on 2018-09-14
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Compute (nova)
Tetsuro Nakamura
Tetsuro Nakamura

Bug Description

"GET /allocation_candidates" now supports "member_of" parameter.
With nested providers present, this should work with the following constraints.

(a) With "member_of" qparam, aggregates on the root should span on the whole tree

If a root provider is in the aggregate, which has been specified by "member_of" qparam,
the resource providers under that root can be in allocation candidates even the root is absent.

(b) Without "member_of" qparam, sharing resource provider should be shared with the whole tree

If a sharing provider is in the same aggregate with one resource provider (rpA),
and "member_of" hasn't been specified in qparam by user, the sharing provider can be in
allocation candidates with any of the resource providers in the same tree with rpA.

(c) With "member_of" qparam, the range of the share of sharing resource providers should shrink to the resource providers "under the specified aggregates" in a tree.

Here, whether the rp is "under the specified aggregates" is determined with the constraints of (a). Namely, not only rps that belongs to the aggregates directly are "under the aggregates",
but olso rps whose root is under the aggregates are also "under the aggregates".

So far at Stein PTG time, 2018 Sep. 13th, this constraint is broken in the point that
when placement picks up allocation candidates, the aggregates of nested providers
are assumed as the same as root providers. This means it ignores the aggregates of
the nested provider itself. This could result in the lack of allocation candidates when
an aggregate which on a nested provider but not on the root has been specified in
the `member_of` query parameter.

This bug is well described in a test case which is submitted shortly.

tags: added: placement
description: updated
Eric Fried (efried) wrote :

member_of$N (granular request group) is *not* affected by this bug.

Tetsuro Nakamura (tetsuro0907) wrote :

This bug has been fixed on the master of the placement repository. ( and

Not they are backported and proposed in stable/rocky being squashed (

- 20181003 Tetsuro Nakamura

Fix proposed to branch: stable/rocky

Changed in nova:
assignee: nobody → Tetsuro Nakamura (tetsuro0907)
importance: Undecided → Medium
status: New → In Progress
Tetsuro Nakamura (tetsuro0907) wrote :

This bug has been already fixed on placement/master
The backport to nova/stable/rocky is under review.
This bug will be ported to nova/master unless extraction is completed in Stein cycle.

Change abandoned by Matt Riedemann (<email address hidden>) on branch: stable/rocky
Reason: I'm going to abandon this since as far as I'm aware nothing is using nested providers in stable/rocky (nova isn't) so I think until this is needed by someone we don't need to backport it. I'm abandoning to clean up the nova stable/rocky review queue.

Change abandoned by Matt Riedemann (<email address hidden>) on branch: stable/rocky
Reason: Abandoning since is abandoned (until someone expresses a need for it).

Chris Dent (cdent) on 2019-03-04
Changed in nova:
status: In Progress → Fix Committed
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers