Granular Resource Request Syntax

Registered by Eric Fried on 2017-10-06

As generic and Nested Resource Providers begin to crystallize and be exercised, it becomes necessary to be able to express:

Requirement 1: Requesting an allocation of a particular resource class with a particular set of traits, and requesting a different allocation of the same resource class with a different set of traits.
Requirement 2: Ensuring that requests of certain resources are allocated from the same resource provider.
Requirement 3: The ability to spread allocations of effectively-identical resources across multiple resource providers in situations of high saturation.

This specification attempts to address these requirements by way of a numbered syntax on resource and trait keys in flavor extra_specs and the GET /allocation_candidates Placement API.

Blueprint information

Matt Riedemann
Eric Fried
Eric Fried
Series goal:
Accepted for rocky
Milestone target:
Started by
Matt Riedemann on 2017-11-20
Completed by
Eric Fried on 2018-05-30

Related branches



Gerrit topic:,topic:bp/granular-resource-requests,n,z

Addressed by:
    Granular Resource Request Syntax

Addressed by:
    WIP: Parse numbered & unnumbered resources & traits

Addressed by:
    WIP: Numbered groupings to GET /allocation_candidates

Addressed by:
    Process granular resources/traits in extra_specs

Addressed by:
    Granularize resources_from_{flavor|request_spec}

Addressed by:

Addressed by:
    RequestGroup class for placement & consumers

Addressed by:
    WIP: placement: Granular GET /allocation_candidates

A lot of code working toward this blueprint merged in Queens, but today is feature freeze and there are outstanding changes dependent on a long tail of nested resource providers changes, so this is functionally not done from an end user perspective, therefore we'll defer it to Rocky and pick it up again then. -- mriedem 20180125

Addressed by:
    Granular Resource Request Syntax (Rocky)

Changed spec link to the rocky review ^
efried 20180202

Re-approved for Rocky. -- mriedem 20180212

Addressed by:
    Support forced separation of providers in granular

Addressed by:
    Granular: group_policy={none|isolate}

Addressed by:
    placement: Object changes for granular

Addressed by:
    Get anchors for sharing providers

Addressed by:
    Use query_parameters in granular gabbit

Addressed by:
    __str__ methods for RequestGroup, ResourceRequest

Addressed by:
    Update nova-status & docs: require placement 1.25

Gerrit topic:,topic:check-min-placement-version,n,z


Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.