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_cluster_upgrade = troveclient.osc.v1.database_clusters:UpgradeDatabaseCluster
|
||||||
database_configuration_attach = troveclient.osc.v1.database_configurations:AttachDatabaseConfiguration
|
database_configuration_attach = troveclient.osc.v1.database_configurations:AttachDatabaseConfiguration
|
||||||
database_configuration_create = troveclient.osc.v1.database_configurations:CreateDatabaseConfiguration
|
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_delete = troveclient.osc.v1.database_configurations:DeleteDatabaseConfiguration
|
||||||
database_configuration_detach = troveclient.osc.v1.database_configurations:DetachDatabaseConfiguration
|
database_configuration_detach = troveclient.osc.v1.database_configurations:DetachDatabaseConfiguration
|
||||||
database_configuration_instances = troveclient.osc.v1.database_configurations:ListDatabaseConfigurationInstances
|
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)
|
instance = [osc_utils.get_item_properties(p, self.columns)
|
||||||
for p in params]
|
for p in params]
|
||||||
return self.columns, instance
|
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'])
|
[2]['configurations'])
|
||||||
fake_config_instances = (fakes.FakeHTTPClient().
|
fake_config_instances = (fakes.FakeHTTPClient().
|
||||||
get_configurations_c_123_instances()[2])
|
get_configurations_c_123_instances()[2])
|
||||||
|
fake_default_config = (
|
||||||
|
fakes.FakeHTTPClient().get_instances_1234_configuration()
|
||||||
|
[2]['instance'])
|
||||||
|
|
||||||
def get_configurations_c_123(self):
|
def get_configurations_c_123(self):
|
||||||
return configurations.Configuration(None, self.fake_config[0])
|
return configurations.Configuration(None, self.fake_config[0])
|
||||||
@@ -81,6 +84,9 @@ class FakeConfigurations(object):
|
|||||||
return [instances.Instance(None, fake_instance)
|
return [instances.Instance(None, fake_instance)
|
||||||
for fake_instance in self.fake_config_instances['instances']]
|
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):
|
class FakeConfigurationParameters(object):
|
||||||
fake_config_param = (fakes.FakeHTTPClient().
|
fake_config_param = (fakes.FakeHTTPClient().
|
||||||
|
@@ -323,3 +323,31 @@ class TestConfigurationInstancesList(TestConfigurations):
|
|||||||
columns, data = self.cmd.take_action(parsed_args)
|
columns, data = self.cmd.take_action(parsed_args)
|
||||||
self.assertEqual(self.columns, columns)
|
self.assertEqual(self.columns, columns)
|
||||||
self.assertEqual(self.values, data)
|
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