summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-07-17 03:41:52 +0000
committerGerrit Code Review <review@openstack.org>2018-07-17 03:41:52 +0000
commit8a36ac25ad6412da3e9ed1539be19872e60b1c66 (patch)
tree74aa74bf7544d20beb0fc76ced7b25c17a517774
parent50c79b3847b1aaf84f07d356d844a2257456076c (diff)
parent61e8de4e55150524c8b5ba2c3c0ce5886db8b952 (diff)
downloadpython-troveclient-8a36ac25ad6412da3e9ed1539be19872e60b1c66.tar.gz
Merge "Add configuration-instances to OSC"
-rw-r--r--releasenotes/notes/add-configuration-instances-to-osc-80a7d7b9d0c79f62.yaml6
-rw-r--r--setup.cfg1
-rw-r--r--troveclient/osc/v1/database_configurations.py44
-rw-r--r--troveclient/tests/fakes.py8
-rw-r--r--troveclient/tests/osc/v1/fakes.py6
-rw-r--r--troveclient/tests/osc/v1/test_database_configurations.py30
6 files changed, 94 insertions, 1 deletions
diff --git a/releasenotes/notes/add-configuration-instances-to-osc-80a7d7b9d0c79f62.yaml b/releasenotes/notes/add-configuration-instances-to-osc-80a7d7b9d0c79f62.yaml
new file mode 100644
index 0000000..4ffb250
--- /dev/null
+++ b/releasenotes/notes/add-configuration-instances-to-osc-80a7d7b9d0c79f62.yaml
@@ -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``
diff --git a/setup.cfg b/setup.cfg
index 6bff680..a1cf3ec 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -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
diff --git a/troveclient/osc/v1/database_configurations.py b/troveclient/osc/v1/database_configurations.py
index e4cea26..edad754 100644
--- a/troveclient/osc/v1/database_configurations.py
+++ b/troveclient/osc/v1/database_configurations.py
@@ -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
diff --git a/troveclient/tests/fakes.py b/troveclient/tests/fakes.py
index 7864054..9a0054c 100644
--- a/troveclient/tests/fakes.py
+++ b/troveclient/tests/fakes.py
@@ -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)
diff --git a/troveclient/tests/osc/v1/fakes.py b/troveclient/tests/osc/v1/fakes.py
index 057c446..21577a2 100644
--- a/troveclient/tests/osc/v1/fakes.py
+++ b/troveclient/tests/osc/v1/fakes.py
@@ -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().
diff --git a/troveclient/tests/osc/v1/test_database_configurations.py b/troveclient/tests/osc/v1/test_database_configurations.py
index f48901b..9dce2ad 100644
--- a/troveclient/tests/osc/v1/test_database_configurations.py
+++ b/troveclient/tests/osc/v1/test_database_configurations.py
@@ -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)