Merge "Add configuration-default to OSC"

This commit is contained in:
Zuul 2018-07-17 14:32:37 +00:00 committed by Gerrit Code Review
commit cb1d3672ab
5 changed files with 63 additions and 0 deletions

View File

@ -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``

View File

@ -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

View File

@ -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'])))

View File

@ -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().

View File

@ -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)