diff options
author | Zuul <zuul@review.openstack.org> | 2018-07-17 03:41:52 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2018-07-17 03:41:52 +0000 |
commit | 8a36ac25ad6412da3e9ed1539be19872e60b1c66 (patch) | |
tree | 74aa74bf7544d20beb0fc76ced7b25c17a517774 | |
parent | 50c79b3847b1aaf84f07d356d844a2257456076c (diff) | |
parent | 61e8de4e55150524c8b5ba2c3c0ce5886db8b952 (diff) | |
download | python-troveclient-8a36ac25ad6412da3e9ed1539be19872e60b1c66.tar.gz |
Merge "Add configuration-instances to OSC"
-rw-r--r-- | releasenotes/notes/add-configuration-instances-to-osc-80a7d7b9d0c79f62.yaml | 6 | ||||
-rw-r--r-- | setup.cfg | 1 | ||||
-rw-r--r-- | troveclient/osc/v1/database_configurations.py | 44 | ||||
-rw-r--r-- | troveclient/tests/fakes.py | 8 | ||||
-rw-r--r-- | troveclient/tests/osc/v1/fakes.py | 6 | ||||
-rw-r--r-- | troveclient/tests/osc/v1/test_database_configurations.py | 30 |
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`` @@ -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) |