Trove/associate-flavors-datastores
Contents
Overview
This proposal includes the ability to associate flavor types with datastore versions. The trove-manage utility will provide the ability to add/delete this information. An example use case of this feature is say we have an enterprise version datastore which requires minimum 2GB flavor associated with it. There is no way to currently to enforce that.
API Resources
Summary
Existing Routes (that will remain untouched)
Verb | Resource | Description |
---|---|---|
GET | /{tenant_id}/flavors | Gets list of flavors for the default datastore version |
New Routes
Verb | Resource | Description |
---|---|---|
GET | "/{tenant_id}/flavors/datastores/versions/{datastore_version_id} | Gets list of flavors for a given datastore version |
Example Calls
List Flavors (GET)
This call lists all flavors for a given datastore version
/{tenant_id}/flavors/datastores/versions/{datastore_version_id}
Response
{ "flavors": [ { "id": 1, "links": [ { "href": "https://ord.databases.api.rackspacecloud.com/v1.0/1234/flavors/1", "rel": "self" }, { "href": "https://ord.databases.api.rackspacecloud.com/flavors/1", "rel": "bookmark" } ], "name": "512MB Instance", "ram": 512 }, ] }
Trove-manage util extension
trove-manage datastore-version-flavor-add datastore_version_id flavor_id_list
trove-manage datastore-version-flavor-delete datastore_version_id flavor_id
Database Schema
One new entity will be created in the trove database: datastore_version_metadata. This will store any additional metadata related to a datastore version including its relation with flavors - key=flavor and the value=flavor_id.
Datastore Version Metadata
This table will contain the id, datastore_version_id, key and value
Name | Data Type | Length | Nullable | Details |
---|---|---|---|---|
id | VARCHAR | 36 | False | Primary Key, Generated UUID |
datastore_version_id | VARCHAR | 36 | False | - |
key | VARCHAR | 128 | False | - |
value | VARCHAR | 128 | True | - |
Other Comments
There is an older blueprint https://blueprints.launchpad.net/trove/+spec/service-type-filter-on-flavors which got abandoned. I propose that it should be broken up into to blueprints :
- Ability to add flavors via trove
- Associating flavors with datastore versions
This spec elaborates on (2) and can be used for the same.