summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwangyao <wangyao@cmss.chinamobile.com>2018-07-11 20:29:03 +0800
committerwangyao <wangyao@cmss.chinamobile.com>2018-07-17 16:51:34 +0800
commitcfa82f04789e4e52617c8638790883e458f61887 (patch)
tree4cc337dece8a6c81a045efd1caa55aac8418d1f9
parent36e231b06f259b7005ee105ef413afc438a3ccac (diff)
downloadpython-troveclient-cfa82f04789e4e52617c8638790883e458f61887.tar.gz
Add configuration-default to OSC
This change adds database support to the python-openstackclient project for the configuration-default command. The trove command configuration-default is now: openstack database configuration default Change-Id: I9403df629e893bb1c4d75566cffd3d49697a543d Partially-Implements: blueprint trove-support-in-python-openstackclient
-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 4972dac..ef283b3 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)