Merge "Add configuration-instances to OSC"

This commit is contained in:
Zuul 2018-07-17 03:41:52 +00:00 committed by Gerrit Code Review
commit 8a36ac25ad
6 changed files with 94 additions and 1 deletions

View File

@ -0,0 +1,6 @@
---
features:
- |
The command ``trove configuration-instances`` is now available
to use in the python-openstackclient CLI as ``openstack
database configuration instances``

View File

@ -50,6 +50,7 @@ openstack.database.v1 =
database_configuration_create = troveclient.osc.v1.database_configurations:CreateDatabaseConfiguration
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
database_configuration_list = troveclient.osc.v1.database_configurations:ListDatabaseConfigurations
database_configuration_parameter_list = troveclient.osc.v1.database_configurations:ListDatabaseConfigurationParameters
database_configuration_parameter_show = troveclient.osc.v1.database_configurations:ShowDatabaseConfigurationParameter

View File

@ -306,3 +306,47 @@ class DetachDatabaseConfiguration(command.Command):
instance = osc_utils.find_resource(db_instances,
parsed_args.instance)
db_instances.modify(instance)
class ListDatabaseConfigurationInstances(command.Lister):
_description = _("Lists all instances associated "
"with a configuration group.")
columns = ['ID', 'Name']
def get_parser(self, prog_name):
parser = super(ListDatabaseConfigurationInstances, self).\
get_parser(prog_name)
parser.add_argument(
'configuration_group',
metavar='<configuration_group>',
help=_('ID or name of the configuration group.')
)
parser.add_argument(
'--limit',
metavar='<limit>',
default=None,
type=int,
help=_('Limit the number of results displayed.')
)
parser.add_argument(
'--marker',
metavar='<ID>',
default=None,
type=str,
help=_('Begin displaying the results for IDs greater than the '
'specified marker. When used with --limit, set this to '
'the last ID displayed in the previous run.')
)
return parser
def take_action(self, parsed_args):
db_configurations = self.app.client_manager.database.configurations
configuration = osc_utils.find_resource(
db_configurations, parsed_args.configuration_group)
params = db_configurations.instances(configuration,
limit=parsed_args.limit,
marker=parsed_args.marker)
instance = [osc_utils.get_item_properties(p, self.columns)
for p in params]
return self.columns, instance

View File

@ -527,7 +527,13 @@ class FakeHTTPClient(base_client.HTTPClient):
return (200, {}, r)
def get_configurations_c_123_instances(self, **kw):
return (200, {}, {"instances": []})
return (200, {}, {"instances": [
{
"id": "1",
"name": "instance-1"},
{
"id": "2",
"name": "instance-2"}]})
def delete_configurations_c_123(self, **kw):
return (202, {}, None)

View File

@ -71,10 +71,16 @@ class FakeClusters(object):
class FakeConfigurations(object):
fake_config = (fakes.FakeHTTPClient().get_configurations()
[2]['configurations'])
fake_config_instances = (fakes.FakeHTTPClient().
get_configurations_c_123_instances()[2])
def get_configurations_c_123(self):
return configurations.Configuration(None, self.fake_config[0])
def get_configuration_instances(self):
return [instances.Instance(None, fake_instance)
for fake_instance in self.fake_config_instances['instances']]
class FakeConfigurationParameters(object):
fake_config_param = (fakes.FakeHTTPClient().

View File

@ -293,3 +293,33 @@ class TestConfigurationDetach(TestConfigurations):
result = self.cmd.take_action(parsed_args)
self.instance_client.modify.assert_called_with('instance2')
self.assertIsNone(result)
class TestConfigurationInstancesList(TestConfigurations):
defaults = {
'limit': None,
'marker': None
}
columns = (
database_configurations.ListDatabaseConfigurationInstances.columns)
values = [('1', 'instance-1'),
('2', 'instance-2')]
def setUp(self):
super(TestConfigurationInstancesList, self).setUp()
self.cmd = database_configurations.ListDatabaseConfigurationInstances(
self.app, None)
data = (
self.fake_configurations.get_configuration_instances())
self.configuration_client.instances.return_value = common.Paginated(
data)
@mock.patch.object(utils, 'find_resource')
def test_configuration_instances_list(self, mock_find):
args = ['c-123']
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)