Follow On to Datastore Type and Version Blueprint

Registered by Auston McReynolds

(#1) CLI uses "an" when it should use "a", and uses "all" when existing commands use "available"

This:

    datastore-list List all the datastores.
    datastore-show Show details of an datastore.
    datastore-version-list
                        List all the datastore versions.
    datastore-version-show
                        Show details of an datastore version.

Should be:

    datastore-list List available datastores.
    datastore-show Show details of a datastore.
    datastore-version-list
                        List available versions for a datastore.
    datastore-version-show
                        Show details of a datastore version.

(#2) datastore-version-show requires the datastore name/uuid, when it shouldn't

    $ trove datastore-version-list f166ef9c-25a0-4183-bfd5-3fb57a7ba350

    +--------------------------------------+------+
    | id | name |
    +--------------------------------------+------+
    | 9ecb60f2-c63f-4b4c-bf11-6dc2e9d8db79 | 5.5 |
    +--------------------------------------+------+

    $ trove datastore-version-show 9ecb60f2-c63f-4b4c-bf11-6dc2e9d8db79

    usage: trove datastore-version-show <datastore> <datastore_version>
    error: too few arguments
    Try 'trove help datastore-version-show' for more information.

It's understood that as of now, it's not desired to support an instance-create request with just a datastore-version-id, but a GET should still succeed.

(#3) "trove show <uuid>" datastore field shows unicode

    +-----------+-----------------------------------------+
    | Property | Value |
    +-----------+-----------------------------------------+
    | created | 2013-12-04T04:56:26 |
    | datastore | {u'version': u'5.5', u'type': u'mysql'} |
    | flavor | 99 |
    | id | 58659cc6-83db-4517-9e15-9f0fe4051b7e |
    | name | WorkDB |
    | password | 80e22468-945c-46f2-a232-ef16d481c54f |
    | status | BUILD |
    | updated | 2013-12-04T04:56:26 |
    | volume | 5 |
    +-----------+-----------------------------------------+

datastore should be returned as {'version': '5.5', 'type': 'mysql'}, not {u'version': u'5.5', u'type': u'mysql'}.

that, or change it to:

    | datastore | mysql |
    | datastore_version | 5.5 |

(#4) Unable to Determine the Default Version of a Datastore from the API

If a default_version_id is set on a datastore, there is no way to ascertain this from the API/CLI.

A GET /datastores/:id should indicate the default-version-id (if set).

This is crucial for Horizon (when it fully implements datastores), and is useful for users of the API/CLI.

(#5) Admin Should See Image ID + Packages for Datastore via API

A GET /datastores/:id/versions/:id should include the glance-image-id and pkgs if the context indicates its an admin.

This style of check has been done for multiple other scenarios, most recently in the configurations blueprint/patch-set. Without this functionality, an administrator is required to query the backend directly (which is always the sign of something gone awry).

Note: Could argue that records w/ active=0 should also be returned (w/ a field indicating active or not). Other operations, when they realize the context is admin, return all records vs. active records.

(#6) REDACTED: Missing apischema for Datastore Routes

The initial patch-set for datastores added apischema for the instance-create scenario, but it forgot to add any validation for the newly introduced /datastores/* routes.

UPDATE: apischema.py is only used for user-facing POST/PUT/PATCH, not GET, which means there is no work to be done here.

(#7) Missing Official Documentation

Self explanatory. As demorris pointed out, there needs to be a proper writeup for the official docs. One that explains the various possibilities in laying out datastore hierarchies, etc.

https://review.openstack.org/#/c/54921/ is a good start, but needs some copyrwriting/editing + elaboration.

Blueprint information

Status:
Complete
Approver:
Michael Basnight
Priority:
High
Drafter:
Auston McReynolds
Direction:
Needs approval
Assignee:
Andrey Shestakov
Definition:
Approved
Series goal:
Accepted for icehouse
Implementation:
Implemented
Milestone target:
milestone icon 2014.1
Started by
Andrey Shestakov
Completed by
Andrey Shestakov

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.