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

Status:
Complete
Approver:
Matt Riedemann
Priority:
Medium
Drafter:
Eric Fried
Direction:
Approved
Assignee:
Eric Fried
Definition:
Approved
Series goal:
Accepted for rocky
Implementation:
Implemented
Milestone target:
None
Started by
Matt Riedemann on 2017-11-20
Completed by
Eric Fried on 2018-05-30

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:bp/granular-resource-requests,n,z

Addressed by: https://review.openstack.org/510244
    Granular Resource Request Syntax

Addressed by: https://review.openstack.org/514091
    WIP: Parse numbered & unnumbered resources & traits

Addressed by: https://review.openstack.org/514092
    WIP: Numbered groupings to GET /allocation_candidates

Addressed by: https://review.openstack.org/515151
    Process granular resources/traits in extra_specs

Addressed by: https://review.openstack.org/515223
    Granularize resources_from_{flavor|request_spec}

Addressed by: https://review.openstack.org/515811
    ResourceRequest.to_querystring()

Addressed by: https://review.openstack.org/517364
    RequestGroup class for placement & consumers

Addressed by: https://review.openstack.org/517757
    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: https://review.openstack.org/540179
    Granular Resource Request Syntax (Rocky)

Changed spec link to the rocky review ^
efried 20180202

Re-approved for Rocky. -- mriedem 20180212

Addressed by: https://review.openstack.org/561717
    Support forced separation of providers in granular

Addressed by: https://review.openstack.org/562687
    Granular: group_policy={none|isolate}

Addressed by: https://review.openstack.org/564351
    placement: Object changes for granular

Addressed by: https://review.openstack.org/565279
    Get anchors for sharing providers

Addressed by: https://review.openstack.org/566927
    Use query_parameters in granular gabbit

Addressed by: https://review.openstack.org/568353
    __str__ methods for RequestGroup, ResourceRequest

Addressed by: https://review.openstack.org/575140
    Update nova-status & docs: require placement 1.25

Gerrit topic: https://review.openstack.org/#q,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.