Add datastore-version-list to OSC

This change adds database support to the python-openstackclient
project for the datastore-version-list command.

The trove command datastore-version-list is now:
    openstack datastore version list

Change-Id: I88dad48f857329d07e4d6662744420eeaae5c8a3
Partially-Implements: trove-support-in-python-openstackclient
This commit is contained in:
wangyao 2017-12-07 20:13:49 +08:00
parent 22ae4cf937
commit 37ea396fa7
5 changed files with 53 additions and 0 deletions

View File

@ -0,0 +1,4 @@
---
features:
- The command ``trove datastore-version-list`` is now available to use in
the python-openstackclient CLI as ``openstack datastore version list``

View File

@ -45,6 +45,7 @@ openstack.database.v1 =
database_user_list = troveclient.osc.v1.database_users:ListDatabaseUsers
datastore_list = troveclient.osc.v1.datastores:ListDatastores
datastore_show = troveclient.osc.v1.datastores:ShowDatastore
datastore_version_list = troveclient.osc.v1.datastores:ListDatastoreVersions
[build_sphinx]

View File

@ -64,3 +64,25 @@ class ShowDatastore(command.ShowOne):
parsed_args.datastore)
datastore = set_attributes_for_print_detail(datastore)
return zip(*sorted(six.iteritems(datastore)))
class ListDatastoreVersions(command.Lister):
_description = _("Lists available versions for a datastore")
columns = ['ID', 'Name']
def get_parser(self, prog_name):
parser = super(ListDatastoreVersions, self).get_parser(prog_name)
parser.add_argument(
'datastore',
metavar='<datastore>',
help=_('ID or name of the datastore'),
)
return parser
def take_action(self, parsed_args):
datastore_version_client =\
self.app.client_manager.database.datastore_versions
versions = datastore_version_client.list(parsed_args.datastore)
ds = [utils.get_item_properties(d, self.columns) for d in versions]
return self.columns, ds

View File

@ -97,6 +97,10 @@ class FakeDatabases(object):
class FakeDatastores(object):
fake_datastores = fakes.FakeHTTPClient().get_datastores()[2]['datastores']
fake_datastore_versions = fake_datastores[0]['versions']
def get_datastores_d_123(self):
return datastores.Datastore(None, self.fake_datastores[0])
def get_datastores_d_123_versions(self):
return datastores.Datastore(None, self.fake_datastore_versions[0])

View File

@ -21,6 +21,8 @@ class TestDatastores(fakes.TestDatabasev1):
def setUp(self):
super(TestDatastores, self).setUp()
self.datastore_client = self.app.client_manager.database.datastores
self.datastore_version_client =\
self.app.client_manager.database.datastore_versions
class TestDatastoreList(TestDatastores):
@ -63,3 +65,23 @@ class TestDatastoreShow(TestDatastores):
columns, data = self.cmd.take_action(parsed_args)
self.assertEqual(self.columns, columns)
self.assertEqual(self.values, data)
class TestDatastoreVersionList(TestDatastores):
columns = datastores.ListDatastoreVersions.columns
values = ('v-56', '5.6')
def setUp(self):
super(TestDatastoreVersionList, self).setUp()
self.cmd = datastores.ListDatastoreVersions(self.app, None)
self.data = [self.fake_datastores.get_datastores_d_123_versions()]
self.datastore_version_client.list.return_value =\
common.Paginated(self.data)
def test_datastore_version_list_defaults(self):
args = ['mysql']
parsed_args = self.check_parser(self.cmd, args, [])
columns, data = self.cmd.take_action(parsed_args)
self.datastore_version_client.list.assert_called_once_with(args[0])
self.assertEqual(self.columns, columns)
self.assertEqual([self.values], data)