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 00000000..ed58f2de --- /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 bbc69d1b..8a4e2c4b 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 edad754a..ea3f09a7 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='', + 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 02cc544a..caca652d 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 9dce2ad8..2a2d64c2 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)