Jump to: navigation, search

Difference between revisions of "Trove/trove-capabilities"

(API Changes)
Line 5: Line 5:
 
this capability,an ephemeral volume would be created on server create. A datastore without
 
this capability,an ephemeral volume would be created on server create. A datastore without
 
this capability (such as redis) would not create a volume.
 
this capability (such as redis) would not create a volume.
 +
 +
= Supported Capabilities =
 +
Supported
 +
 +
= API Resources =
 +
 +
{| class="wikitable"
 +
|-
 +
! Verb !! Resource !! Description
 +
|-
 +
| GET || /capabilities || Supplies a list of capabilities that can be associated to a datastore
 +
|-
 +
| GET || /datastores/{datastore}/capabilities || Get a list of capabilities configured for this datastore
 +
|-
 +
| POST || /datastores/{datastore}/capabilities || Associate a capability with the datastore
 +
|-
 +
| DELETE || /datastores/{datastore}/capabilities/{capability_id} || Remove a capability from the datastore
 +
|}
  
 
=Database Schema=
 
=Database Schema=
Line 22: Line 40:
 
| description || VARCHAR || 256 || True || -
 
| description || VARCHAR || 256 || True || -
 
|}
 
|}
 
  
 
'''Datastore Capabilities (datastore_capabilities)'''
 
'''Datastore Capabilities (datastore_capabilities)'''
Line 37: Line 54:
 
|-
 
|-
 
| datastore_version_id || VARCHAR || 32 || False || Foreign Key reference to datastore_version.id
 
| datastore_version_id || VARCHAR || 32 || False || Foreign Key reference to datastore_version.id
|}
 
 
= API Changes =
 
 
{| class="wikitable"
 
|-
 
! Verb !! Resource !! Description
 
|-
 
| GET || /capabilities || Supplies a list of capabilities that can be associated to a datastore
 
|-
 
| GET || /datastores/{datastore}/capabilities || Get a list of capabilities configured for this datastore
 
|-
 
| POST || /datastores/{datastore}/capabilities || Associate a capability with the datastore
 
|-
 
| DELETE || /datastores/{datastore}/capabilities/{capability_id} || Remove a capability from the datastore
 
 
|}
 
|}

Revision as of 20:51, 23 January 2014

Overview

This proposal includes the ability to setup different capabilities for different datastore types.

An example capability would be "ephemeral_volume". As a result of a datastore having this capability,an ephemeral volume would be created on server create. A datastore without this capability (such as redis) would not create a volume.

Supported Capabilities

Supported

API Resources

Verb Resource Description
GET /capabilities Supplies a list of capabilities that can be associated to a datastore
GET /datastores/{datastore}/capabilities Get a list of capabilities configured for this datastore
POST /datastores/{datastore}/capabilities Associate a capability with the datastore
DELETE /datastores/{datastore}/capabilities/{capability_id} Remove a capability from the datastore

Database Schema

Two new entities will be created in the trove database: capabilities and datastore_capabilities. These entities will store the capabilities and the association between those capabilities and the datastore

Capabilities (capabilities)

This table will contain the id, name and description of the capabilities

Name Data Type Length Nullable Details
id VARCHAR 36 False Primary Key, Generated UUID
name VARCHAR 64 False -
description VARCHAR 256 True -

Datastore Capabilities (datastore_capabilities)

This table maintains a many-to-many relationship of datastores to capabilities via the foreign key references to capability_id and datastore_id

Name Data Type Length Nullable Details
capability_id VARCHAR 36 False Foreign Key reference to capabilities.id
datastore_id VARCHAR 32 False Foreign Key reference to datastore.id
datastore_version_id VARCHAR 32 False Foreign Key reference to datastore_version.id