summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-07-17 14:32:37 +0000
committerGerrit Code Review <review@openstack.org>2018-07-17 14:32:37 +0000
commitcb1d3672ab4ba38b869b39da2b0a670813e8f726 (patch)
tree90f32d3c23e18fc480007b6e6c41457641ee58bb
parent42913d9248ce33d19e0ed5bbacf07f3cd223d35b (diff)
parentcfa82f04789e4e52617c8638790883e458f61887 (diff)
downloadpython-troveclient-cb1d3672ab4ba38b869b39da2b0a670813e8f726.tar.gz
Merge "Add configuration-default to OSC"
-rw-r--r--releasenotes/notes/add-configuration-default-to-osc-55867236d19d83c4.yaml6
-rw-r--r--setup.cfg1
-rw-r--r--troveclient/osc/v1/database_configurations.py22
-rw-r--r--troveclient/tests/osc/v1/fakes.py6
-rw-r--r--troveclient/tests/osc/v1/test_database_configurations.py28
5 files changed, 63 insertions, 0 deletions
diff --git a/releasenotes/notes/add-configuration-default-to-osc-55867236d19d83c4.yaml b/releasenotes/notes/add-configuration-default-to-osc-55867236d19d83c4.yaml
new file mode 100644
index 0000000..ed58f2d
--- /dev/null
+++ b/releasenotes/notes/add-configuration-default-to-osc-55867236d19d83c4.yaml
@@ -0,0 +1,6 @@
+---
+features:
+ - |
+ The command ``trove configuration-default`` is now available
+ to use in the python-openstackclient CLI as ``openstack
+ database configuration default``
diff --git a/setup.cfg b/setup.cfg
index bbc69d1..8a4e2c4 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -48,6 +48,7 @@ openstack.database.v1 =
database_cluster_upgrade = troveclient.osc.v1.database_clusters:UpgradeDatabaseCluster
database_configuration_attach = troveclient.osc.v1.database_configurations:AttachDatabaseConfiguration
database_configuration_create = troveclient.osc.v1.database_configurations:CreateDatabaseConfiguration
+ database_configuration_default = troveclient.osc.v1.database_configurations:DefaultDatabaseConfiguration
database_configuration_delete = troveclient.osc.v1.database_configurations:DeleteDatabaseConfiguration
database_configuration_detach = troveclient.osc.v1.database_configurations:DetachDatabaseConfiguration
database_configuration_instances = troveclient.osc.v1.database_configurations:ListDatabaseConfigurationInstances
diff --git a/troveclient/osc/v1/database_configurations.py b/troveclient/osc/v1/database_configurations.py
index edad754..ea3f09a 100644
--- a/troveclient/osc/v1/database_configurations.py
+++ b/troveclient/osc/v1/database_configurations.py
@@ -350,3 +350,25 @@ class ListDatabaseConfigurationInstances(command.Lister):
instance = [osc_utils.get_item_properties(p, self.columns)
for p in params]
return self.columns, instance
+
+
+class DefaultDatabaseConfiguration(command.ShowOne):
+ _description = _("Shows the default configuration of an instance.")
+
+ def get_parser(self, prog_name):
+ parser = super(DefaultDatabaseConfiguration, self).get_parser(
+ prog_name)
+ parser.add_argument(
+ 'instance',
+ metavar='<instance>',
+ type=str,
+ help=_('ID or name of the instance.'),
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ db_instances = self.app.client_manager.database.instances
+ instance = osc_utils.find_resource(db_instances,
+ parsed_args.instance)
+ configs = db_instances.configuration(instance)
+ return zip(*sorted(six.iteritems(configs._info['configuration'])))
diff --git a/troveclient/tests/osc/v1/fakes.py b/troveclient/tests/osc/v1/fakes.py
index 02cc544..caca652 100644
--- a/troveclient/tests/osc/v1/fakes.py
+++ b/troveclient/tests/osc/v1/fakes.py
@@ -73,6 +73,9 @@ class FakeConfigurations(object):
[2]['configurations'])
fake_config_instances = (fakes.FakeHTTPClient().
get_configurations_c_123_instances()[2])
+ fake_default_config = (
+ fakes.FakeHTTPClient().get_instances_1234_configuration()
+ [2]['instance'])
def get_configurations_c_123(self):
return configurations.Configuration(None, self.fake_config[0])
@@ -81,6 +84,9 @@ class FakeConfigurations(object):
return [instances.Instance(None, fake_instance)
for fake_instance in self.fake_config_instances['instances']]
+ def get_default_configuration(self):
+ return instances.Instance(None, self.fake_default_config)
+
class FakeConfigurationParameters(object):
fake_config_param = (fakes.FakeHTTPClient().
diff --git a/troveclient/tests/osc/v1/test_database_configurations.py b/troveclient/tests/osc/v1/test_database_configurations.py
index 9dce2ad..2a2d64c 100644
--- a/troveclient/tests/osc/v1/test_database_configurations.py
+++ b/troveclient/tests/osc/v1/test_database_configurations.py
@@ -323,3 +323,31 @@ class TestConfigurationInstancesList(TestConfigurations):
columns, data = self.cmd.take_action(parsed_args)
self.assertEqual(self.columns, columns)
self.assertEqual(self.values, data)
+
+
+class TestConfigurationDefault(TestConfigurations):
+
+ values = ('2', '98', '1', '15M')
+
+ def setUp(self):
+ super(TestConfigurationDefault, self).setUp()
+ self.cmd = database_configurations.DefaultDatabaseConfiguration(
+ self.app, None)
+ self.data = (
+ self.fake_configurations.get_default_configuration())
+ self.instance_client.configuration.return_value = self.data
+ self.columns = (
+ 'innodb_log_files_in_group',
+ 'max_user_connections',
+ 'skip-external-locking',
+ 'tmp_table_size',
+ )
+
+ @mock.patch.object(utils, 'find_resource')
+ def test_default_database_configuration(self, mock_find):
+ args = ['1234']
+ mock_find.return_value = args[0]
+ 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)