Merge "Add datastore-version-list to OSC"

This commit is contained in:
Zuul 2017-12-08 19:55:05 +00:00 committed by Gerrit Code Review
commit 6b26932d22
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

@ -46,6 +46,7 @@ openstack.database.v1 =
database_user_show = troveclient.osc.v1.database_users:ShowDatabaseUser
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)