From 4d93fc91dd83f03fbcc02f9039e9a0794291a863 Mon Sep 17 00:00:00 2001 From: wangyao Date: Thu, 30 Nov 2017 21:16:18 +0800 Subject: [PATCH] Add configuration-show to OSC This change adds database support to the python-openstackclient project for the configuration-show command. The trove command configuration-show is now: openstack database configuration show Change-Id: I2f2cd93054ecaa8f67722a0efd8789b63e59b373 Partially-Implements: trove-support-in-python-openstackclient --- ...guration-show-to-osc-c139bb20a2ec18ec.yaml | 5 ++++ setup.cfg | 1 + troveclient/osc/v1/database_configurations.py | 29 ++++++++++++++++++ .../osc/v1/test_database_configurations.py | 30 +++++++++++++++++++ 4 files changed, 65 insertions(+) create mode 100644 releasenotes/notes/add-configuration-show-to-osc-c139bb20a2ec18ec.yaml diff --git a/releasenotes/notes/add-configuration-show-to-osc-c139bb20a2ec18ec.yaml b/releasenotes/notes/add-configuration-show-to-osc-c139bb20a2ec18ec.yaml new file mode 100644 index 00000000..52baec64 --- /dev/null +++ b/releasenotes/notes/add-configuration-show-to-osc-c139bb20a2ec18ec.yaml @@ -0,0 +1,5 @@ +--- +features: + - The command ``trove configuration-show`` is now available to + use in the python-openstackclient CLI as ``openstack database + configuration show`` diff --git a/setup.cfg b/setup.cfg index bba3b9ac..4113fbaa 100644 --- a/setup.cfg +++ b/setup.cfg @@ -33,6 +33,7 @@ openstack.database.v1 = database_backup_list = troveclient.osc.v1.database_backups:ListDatabaseBackups database_cluster_list = troveclient.osc.v1.database_clusters:ListDatabaseClusters database_configuration_list = troveclient.osc.v1.database_configurations:ListDatabaseConfigurations + database_configuration_show = troveclient.osc.v1.database_configurations:ShowDatabaseConfiguration database_flavor_list = troveclient.osc.v1.database_flavors:ListDatabaseFlavors database_instance_list = troveclient.osc.v1.database_instances:ListDatabaseInstances database_limit_list = troveclient.osc.v1.database_limits:ListDatabaseLimits diff --git a/troveclient/osc/v1/database_configurations.py b/troveclient/osc/v1/database_configurations.py index f0b79ff8..59deea60 100644 --- a/troveclient/osc/v1/database_configurations.py +++ b/troveclient/osc/v1/database_configurations.py @@ -12,12 +12,21 @@ """Database v1 Configurations action implementations""" +import json from osc_lib.command import command from osc_lib import utils as osc_utils +import six from troveclient.i18n import _ +def set_attributes_for_print_detail(configuration): + info = configuration._info.copy() + info['values'] = json.dumps(configuration.values) + del info['datastore_version_id'] + return info + + class ListDatabaseConfigurations(command.Lister): _description = _("List database configurations") @@ -51,3 +60,23 @@ class ListDatabaseConfigurations(command.Lister): config = [osc_utils.get_item_properties(c, self.columns) for c in config] return self.columns, config + + +class ShowDatabaseConfiguration(command.ShowOne): + _description = _("Shows details of a database configuration group.") + + def get_parser(self, prog_name): + parser = super(ShowDatabaseConfiguration, self).get_parser(prog_name) + parser.add_argument( + 'configuration_group', + metavar='', + help=_('ID or name of the configuration group'), + ) + return parser + + def take_action(self, parsed_args): + db_configurations = self.app.client_manager.database.configurations + configuration = osc_utils.find_resource( + db_configurations, parsed_args.configuration_group) + configuration = set_attributes_for_print_detail(configuration) + return zip(*sorted(six.iteritems(configuration))) diff --git a/troveclient/tests/osc/v1/test_database_configurations.py b/troveclient/tests/osc/v1/test_database_configurations.py index 3f43e806..81769711 100644 --- a/troveclient/tests/osc/v1/test_database_configurations.py +++ b/troveclient/tests/osc/v1/test_database_configurations.py @@ -47,3 +47,33 @@ class TestConfigurationList(TestConfigurations): self.configuration_client.list.assert_called_once_with(**self.defaults) self.assertEqual(self.columns, columns) self.assertEqual([tuple(self.values)], data) + + +class TestConfigurationShow(TestConfigurations): + + values = ('2015-05-16T10:24:28', 'mysql', '5.6', '', 'c-123', + 'test_config', '2015-05-16T10:24:29', '{"max_connections": 5}') + + def setUp(self): + super(TestConfigurationShow, self).setUp() + self.cmd = database_configurations.ShowDatabaseConfiguration(self.app, + None) + self.data = self.fake_configurations.get_configurations_c_123() + self.configuration_client.get.return_value = self.data + self.columns = ( + 'created', + 'datastore_name', + 'datastore_version_name', + 'description', + 'id', + 'name', + 'updated', + 'values', + ) + + def test_show(self): + args = ['c-123'] + parsed_args = self.check_parser(self.cmd, args, []) + columns, data = self.cmd.take_action(parsed_args) + self.assertEqual(self.columns, columns) + self.assertEqual(self.values, data)