Allow custom resource classes in flavor extra specs

Registered by Jim Rollenhagen

Allows a flavor to request custom resource classes via extra specs, and also allows overriding of "standard" resource classes (VCPU, MEMORY_MB, DISK_GB) in extra specs such that they can be displayed in API fields (and CLI/dashboard/etc) without being scheduled to.

Blueprint information

Sylvain Bauza
Jim Rollenhagen
Ed Leafe
Series goal:
Accepted for pike
Milestone target:
milestone icon pike-3
Started by
Matt Riedemann
Completed by
Matt Riedemann


Gerrit topic:,topic:bp/custom-resource-classes-in-flavors,n,z

Addressed by:
    Add spec for custom resource classes in flavors

Jay is getting stretched thin on other work, so we probably need one or more people to step up and own this one which sounds like at least three major changes: placement API updates for filtering resource providers by custom resource class, a change in the FilterScheduler to pass those through via flavor extra specs, and a data migration for Ironic instances. cdent and edleafe expressed interest in owning this during the June 12 nova-scheduler meeting. dtantsur from Ironic said he could help with black box integration testing. -- mriedem 20170712

I don't think any changes need to be made to the placement API. It currently accepts a generic 'resources' query parameter, and can handle any number of {resource_class: amount} key-value pairs. -- edleafe 2017.06.13

Addressed by:
    Extract custom resource classes from flavors

Gerrit topic:,topic:bp/custom-resource-classes-pike,n,z

Addressed by:
    Amend spec for "Allow custom resource classes in flavor extra specs"

Addressed by:
    Consider instance flavor resource overrides in allocations

Addressed by:
    WIP - Migrate Ironic Flavors

Addressed by:
    Remove the Pike migration code for flavor migration

Gerrit topic:,topic:bug/1816034,n,z

Addressed by:
    ironic: complete the flavor data migration started in pike


Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.