Add datastore-version-show to OSC

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

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

Change-Id: I14844d887565bc58d44181db7ed3da454dc574d0
Partially-Implements: trove-support-in-python-openstackclient
This commit is contained in:
wangyao
2017-12-09 14:40:28 +08:00
parent 7816cc2386
commit fbdb0ee577
4 changed files with 82 additions and 0 deletions

View File

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

View File

@@ -48,6 +48,7 @@ openstack.database.v1 =
datastore_list = troveclient.osc.v1.datastores:ListDatastores datastore_list = troveclient.osc.v1.datastores:ListDatastores
datastore_show = troveclient.osc.v1.datastores:ShowDatastore datastore_show = troveclient.osc.v1.datastores:ShowDatastore
datastore_version_list = troveclient.osc.v1.datastores:ListDatastoreVersions datastore_version_list = troveclient.osc.v1.datastores:ListDatastoreVersions
datastore_version_show = troveclient.osc.v1.datastores:ShowDatastoreVersion
[build_sphinx] [build_sphinx]

View File

@@ -16,7 +16,9 @@ from osc_lib.command import command
from osc_lib import utils from osc_lib import utils
import six import six
from troveclient import exceptions
from troveclient.i18n import _ from troveclient.i18n import _
from troveclient import utils as tc_utils
def set_attributes_for_print_detail(datastore): def set_attributes_for_print_detail(datastore):
@@ -86,3 +88,40 @@ class ListDatastoreVersions(command.Lister):
versions = datastore_version_client.list(parsed_args.datastore) versions = datastore_version_client.list(parsed_args.datastore)
ds = [utils.get_item_properties(d, self.columns) for d in versions] ds = [utils.get_item_properties(d, self.columns) for d in versions]
return self.columns, ds return self.columns, ds
class ShowDatastoreVersion(command.ShowOne):
_description = _("Shows details of a datastore version.")
def get_parser(self, prog_name):
parser = super(ShowDatastoreVersion, self).get_parser(prog_name)
parser.add_argument(
'datastore_version',
metavar='<datastore_version>',
help=_('ID or name of the datastore version.'),
)
parser.add_argument(
'--datastore',
metavar='<datastore>',
default=None,
help=_('ID or name of the datastore. Optional if the ID of'
'the datastore_version is provided.'),
)
return parser
def take_action(self, parsed_args):
datastore_version_client =\
self.app.client_manager.database.datastore_versions
if parsed_args.datastore:
datastore_version = datastore_version_client.\
get(parsed_args.datastore, parsed_args.datastore_version)
elif tc_utils.is_uuid_like(parsed_args.datastore_version):
datastore_version = datastore_version_client.\
get_by_uuid(parsed_args.datastore_version)
else:
raise exceptions.NoUniqueMatch(_('The datastore name or id is'
' required to retrieve a'
' datastore version by name.'))
if datastore_version._info.get('links'):
del(datastore_version._info['links'])
return zip(*sorted(six.iteritems(datastore_version._info)))

View File

@@ -11,6 +11,7 @@
# under the License. # under the License.
from troveclient import common from troveclient import common
from troveclient import exceptions
from troveclient.osc.v1 import datastores from troveclient.osc.v1 import datastores
from troveclient.tests.osc.v1 import fakes from troveclient.tests.osc.v1 import fakes
@@ -85,3 +86,40 @@ class TestDatastoreVersionList(TestDatastores):
self.datastore_version_client.list.assert_called_once_with(args[0]) self.datastore_version_client.list.assert_called_once_with(args[0])
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
self.assertEqual([self.values], data) self.assertEqual([self.values], data)
class TestDatastoreVersionShow(TestDatastores):
values = ('v-56', '5.6')
def setUp(self):
super(TestDatastoreVersionShow, self).setUp()
self.cmd = datastores.ShowDatastoreVersion(self.app, None)
self.data = self.fake_datastores.get_datastores_d_123_versions()
self.datastore_version_client.get.return_value = self.data
self.columns = (
'id',
'name',
)
def test_datastore_version_show_defaults(self):
args = ['5.6', '--datastore', 'mysql']
verifylist = [
('datastore_version', '5.6'),
('datastore', 'mysql'),
]
parsed_args = self.check_parser(self.cmd, args, verifylist)
columns, data = self.cmd.take_action(parsed_args)
self.assertEqual(self.columns, columns)
self.assertEqual(self.values, data)
def test_datastore_version_show_with_version_id_exception(self):
args = [
'v-56',
]
verifylist = [
('datastore_version', 'v-56'),
]
parsed_args = self.check_parser(self.cmd, args, verifylist)
self.assertRaises(exceptions.NoUniqueMatch,
self.cmd.take_action,
parsed_args)