DynamicFlavors

Blueprint: https://blueprints.launchpad.net/nova/+spec/no-flavors

Use Cases
As an OpenStack API user, I want to create servers using custom CPU, RAM, Disk, and extra_specs instead of a pre-configured flavor.

As an OpenStack API user, I want to resize a server using custom CPU, RAM, Disk, and extra_specs instead of a pre-configured flavor.

As an OpenStack Administrator, I want to control through policy the ability to use custom flavor during a create or resize operation.

Implementation
This functionality would be delivered as an extension to the existing create and resize APIs and authorized using a common extension authorizer. Default setting would be for admin-only access to maintain current behavior that only admins can create new flavors.

When a "flavor" element is encountered in the request, a MD5 hash is computed and a matching hash looked for among existing flavors. If no match is found, a new, non-public flavor is created. The flavor element is then replaced with a flavorRef element and processing continues as-is today.

External Interfaces
--- (Post the JSON or XML require to the URI below.  Response is unchanged.)

Create Server
POST /v2/{tenant_id}/servers

JSON
{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor" : { "ram" : "1024", "vcpus" : "1", "disk" : "29" } } }

XML
  

Resize Server
POST /v2/{tenant_id}/servers/{server_id}/action

JSON
{ "resize" : { "flavor" : { "ram" : "%(ram)s", "vcpus" : "%(vcpus)s", "disk" : "%(disk)s" } } }

XML
  