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
			
			
This commit is contained in:
		@@ -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``
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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'])))
 | 
			
		||||
 
 | 
			
		||||
@@ -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().
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user