Add ‘volume_type’ parameter to instance create¶
Cinder allows for multiple storage backends. When creating a volume, the ‘volume_type’ parameter will be used in determining which type of backend to send to. 1 The user should be allowed to specify the backends for Trove volumes on instance/cluster creation.
Launchpad Blueprint: https://blueprints.launchpad.net/trove/+spec/volume-type-on-create
Problem Description¶
Trove operators would like to expose different types of storage to their Trove users to provide more flexibility in the types of configurations they can use for their database instances and database clusters
Proposed Change¶
An optional ‘volume_type’ property will be added to the volume information accepted by the API for instance and cluster create API calls. This property will be passed to the Cinder client when a new Trove volume gets created. Default configuration value will be used if no volume_type is specified by the user.
Configuration¶
None
Database¶
None
Public API¶
An optional ‘volume_type’ property will be added to the volume information structure accepted by the instance and cluster create API calls.
API payload defining a volume of size ‘1’ and Cinder volume type ‘my-type-1’:
'volume': {'size': '1', 'type': 'my-type-1'}
API payload defining a volume of size ‘1’ and no Cinder volume type:
'volume': {'size': '1', 'type': None}
'volume': {'size': '1'}
Public API Security¶
None
Python API¶
None
CLI (python-troveclient)¶
The volume_type value is a string name of the volume type as returned by the ‘cinder type-list’ command. The value won’t be validated on the client site.
For instance creation an optional ‘–volume_type’ argument will be added. The volume type will be appended to the volume size in the volume information structure. If volume support is disabled or ‘–size’ argument is not specified on instance create the ‘volume_type’ argument will be ignored.
trove create ... --size 1 --volume_type my-type-1 ...
For cluster creation the ‘–instance’ argument will be extended with a ‘volume_type’ option. If volume support is not enabled or volume size is not specified the ‘volume_type’ option will be ignored.
trove cluster-create ... --instance volume=1,volume_type=my-type-1 ...
Internal API¶
A new ‘volume_type’ argument will be added where necessary.
Guest Agent¶
None
Alternatives¶
None
Dashboard Impact (UX)¶
TBD (section added after approval)
Implementation¶
Assignee(s)¶
<pmalik>
Milestones¶
Mitaka-1
Work Items¶
This work will consist of updates to the Trove client and server code.
Upgrade Implications¶
None
Dependencies¶
None
Testing¶
The existing Trove tests will be extended to test the ‘volume_type’ argument. New client tests will be added to cover the added arguments.
Documentation Impact¶
The new ‘volume_type’ arguments on instance and cluster create commands need to be documented.
Appendix¶
None