Add concept of resource providers (partial)

Registered by Jay Pipes

This blueprint aims to address the problem of Nova assuming all resources are provided by a single compute node by introducing a new concept -- a resource provider -- that will allow Nova to accurately track and reserve resources regardless of whether the resource is being exposed by a single compute node or some shared pool or service.

Blueprint information

Status:
Complete
Approver:
John Garbutt
Priority:
High
Drafter:
Jay Pipes
Direction:
Approved
Assignee:
Chris Dent
Definition:
Approved
Series goal:
Accepted for newton
Implementation:
Implemented
Milestone target:
milestone icon newton-1
Started by
John Garbutt
Completed by
Matt Riedemann

Related branches

Sprints

Whiteboard

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

Addressed by: https://review.openstack.org/239642
    WIP: db-specific changes related to resource providers blueprint. Added ResourceClass, ResourceProvider, ResourcePool, HostAggregateResourcePool, Inventory and Allocation classes into model. Added appropriate migration files. Added uuid field to compute_n

Addressed by: https://review.openstack.org/225546
    WIP: Add concept of resource providers

Addressed by: https://review.openstack.org/253076
    Adds ResourceClass field type definition

Addressed by: https://review.openstack.org/253077
    Adds resource_classes lookup table to API DB

Addressed by: https://review.openstack.org/253078
    WIP: Adds ResourceClass object

Addressed by: https://review.openstack.org/253079
    WIP: Adds ResourcePool object

Addressed by: https://review.openstack.org/253080
    WIP: Adds Resource objects

Addressed by: https://review.openstack.org/253081
    WIP: Adds ResourceProvider object

Addressed by: https://review.openstack.org/275432
    resource_providers, allocations and inventories models

Addressed by: https://review.openstack.org/277466
    WIP resource-provider versioned objects

Addressed by: https://review.openstack.org/273100
    Implement an indexed ResourceClass Enum object

Addressed by: https://review.openstack.org/277554
    Allocate UUID for compute node

Addressed by: https://review.openstack.org/279312
    Make Service.get_minimum_version() work for multiple binaries

Addressed by: https://review.openstack.org/279313
    WIP: Migrate compute node stats to Inventory objects

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

Addressed by: https://review.openstack.org/283253
    Amend resource-providers database schema

Addressed by: https://review.openstack.org/281837
    Adjust resource-providers models for resource-pools

Addressed by: https://review.openstack.org/282442
    Add Allocation and AllocationList objects

Gerrit topic: https://review.openstack.org/#q,topic:bp/compute-node-inventory,n,z

Gerrit topic: https://review.openstack.org/#q,topic:bp/compute-node-inventory-patch23,n,z

Gerrit topic: https://review.openstack.org/#q,topic:resource-pool-object,n,z

Marking this as partially complete, as we hit the deadline -johnthetubaguy 2nd march 2016

Gerrit topic: https://review.openstack.org/#q,topic:cd/resource-pool-api,n,z

I've re-opened this for newton, there is only one remaining change:

https://review.openstack.org/#/c/282442/

It's just easier to re-open this and continue the work there given the big dependency chain we have.

-- mriedem 20160323

Addressed by: https://review.openstack.org/281945
    Add name to ResourceProvider object

Addressed by: https://review.openstack.org/284895
    Add a get_by_uuid for aggregates

Addressed by: https://review.openstack.org/284963
    Add ResourcePool and ResourcePoolList objects

Addressed by: https://review.openstack.org/293104
    WIP resource-pools/placement api

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

Addressed by: https://review.openstack.org/357430
    rt: remove old test_resource_tracker.py

Addressed by: https://review.openstack.org/357431
    rt: rename test_tracker -> test_resource_tracker

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.