Add configuration-instances to OSC
This change adds database support to the python-openstackclient project for the configuration-instances command. The trove command configuration-instances is now: openstack database configuration instances Change-Id: I4ad52cc8772534c95b708b49d018f4b2e35d6f86 Partially-Implements: blueprint trove-support-in-python-openstackclient
This commit is contained in:
parent
0fc7d9e33d
commit
61e8de4e55
@ -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``
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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().
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user