Jump to: navigation, search

Trove/trove-per-datastore-volume-support

< Trove
Revision as of 18:47, 30 June 2014 by Iccha-sethi (talk | contribs) (Created page with "=Overview= Currently trove allows deployers to turn on and off volume support for all datastores using trove_volume_support config value. This blueprint extends this functiona...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Overview

Currently trove allows deployers to turn on and off volume support for all datastores using trove_volume_support config value. This blueprint extends this functionality to a per datastore version basis, i.e. turning on/off volume support for a given datastore version.

Implementation Methodologies

Before a capability is added, I think we as a community should question if this feature is indeed a capability or are config values sufficient for it. Below both the implementation methodologies are discussed.

Config Values

Every data store config will have a support_volume config. If this is not present, it will default to the trove_support_volume config. The config values can be loaded based on data store manager.

Example:

[mysql]
 volume_support = True
[redis]
 volume_support = False

Capabilities

Capability names need to be consistent across deployments because the checks in the code will expect a certain capability name. Hence introducing a new capability requires:

  • Migration to add a row to the capabilities table with the name and description of a capability.
  • Management calls can be made be operators/deployers to add datastore version ids to the capability overrides table.

API Resources

There are no additions to the API calls, but below are few changes I would like to propose.

  • We currently modify api schema[1] and flavor view[2] based on the config value trove_volume_support. But this blueprint introduces volume support based on datastores. The api schema and flavor views are not aware of data store information. We could display both volume and local storage, irrespective of volume support and default volume size to zero ( in order to keep it as an integer)
[1] https://github.com/openstack/trove/blob/master/trove/common/apischema.py#L192
[2] https://github.com/openstack/trove/blob/master/trove/flavor/views.py#L38