diff options
author | Trevor McCasland <TM2086@att.com> | 2017-01-17 15:26:08 -0600 |
---|---|---|
committer | Amrith Kumar <amrith@amrith.org> | 2017-06-10 21:40:07 -0400 |
commit | 1abc33cedcda988a9ef6049743a3750cd55a63ab (patch) | |
tree | c56505edef80eb539eac255f74b0af361456297c | |
parent | 052d85eca42760efe836d417a8f97647b447f777 (diff) | |
download | python-troveclient-1abc33cedcda988a9ef6049743a3750cd55a63ab.tar.gz |
Add configuration-list to OSC
This change adds database support to the python-openstackclient
project for the configuraiton-list command.
The trove command configuration-list is now:
openstack database configuration list
Change-Id: I3a85260c15b8d1b4a37a806db2cb5ff3c433537b
Partially-Implements: trove-support-in-python-openstackclient
-rw-r--r-- | releasenotes/notes/add-configuration-list-to-osc-4a12d508f6bb5472.yaml | 5 | ||||
-rw-r--r-- | setup.cfg | 1 | ||||
-rw-r--r-- | troveclient/osc/v1/database_configurations.py | 53 | ||||
-rw-r--r-- | troveclient/tests/osc/v1/fakes.py | 8 | ||||
-rw-r--r-- | troveclient/tests/osc/v1/test_database_configurations.py | 49 |
5 files changed, 116 insertions, 0 deletions
diff --git a/releasenotes/notes/add-configuration-list-to-osc-4a12d508f6bb5472.yaml b/releasenotes/notes/add-configuration-list-to-osc-4a12d508f6bb5472.yaml new file mode 100644 index 0000000..7a67ce1 --- /dev/null +++ b/releasenotes/notes/add-configuration-list-to-osc-4a12d508f6bb5472.yaml @@ -0,0 +1,5 @@ +--- +features: + - The command ``trove configuration-list`` is now available to + use in the python-openstackclient CLI as ``openstack database + configuration list`` @@ -32,6 +32,7 @@ openstack.cli.extension = openstack.database.v1 = database_backup_list = troveclient.osc.v1.database_backups:ListDatabaseBackups database_cluster_list = troveclient.osc.v1.database_clusters:ListDatabaseClusters + database_configuration_list = troveclient.osc.v1.database_configurations:ListDatabaseConfigurations database_flavor_list = troveclient.osc.v1.database_flavors:ListDatabaseFlavors [build_sphinx] diff --git a/troveclient/osc/v1/database_configurations.py b/troveclient/osc/v1/database_configurations.py new file mode 100644 index 0000000..f0b79ff --- /dev/null +++ b/troveclient/osc/v1/database_configurations.py @@ -0,0 +1,53 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +"""Database v1 Configurations action implementations""" + +from osc_lib.command import command +from osc_lib import utils as osc_utils + +from troveclient.i18n import _ + + +class ListDatabaseConfigurations(command.Lister): + + _description = _("List database configurations") + columns = ['ID', 'Name', 'Description', 'Datastore Name', + 'Datastore Version Name'] + + def get_parser(self, prog_name): + parser = super(ListDatabaseConfigurations, self).get_parser(prog_name) + parser.add_argument( + '--limit', + dest='limit', + metavar='<limit>', + type=int, + default=None, + help=_('Limit the number of results displayed.') + ) + parser.add_argument( + '--marker', + dest='marker', + metavar='<ID>', + 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 + config = db_configurations.list(limit=parsed_args.limit, + marker=parsed_args.marker) + config = [osc_utils.get_item_properties(c, self.columns) + for c in config] + return self.columns, config diff --git a/troveclient/tests/osc/v1/fakes.py b/troveclient/tests/osc/v1/fakes.py index 079dd1e..bd80d65 100644 --- a/troveclient/tests/osc/v1/fakes.py +++ b/troveclient/tests/osc/v1/fakes.py @@ -45,3 +45,11 @@ class FakeClusters(object): def get_clusters_cls_1234(self): return clusters.Cluster(None, self.fake_clusters[0]) + + +class FakeConfigurations(object): + fake_config = (fakes.FakeHTTPClient().get_configurations() + [2]['configurations']) + + def get_configurations_c_123(self): + return flavors.Flavor(None, self.fake_config[0]) diff --git a/troveclient/tests/osc/v1/test_database_configurations.py b/troveclient/tests/osc/v1/test_database_configurations.py new file mode 100644 index 0000000..3f43e80 --- /dev/null +++ b/troveclient/tests/osc/v1/test_database_configurations.py @@ -0,0 +1,49 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from troveclient import common +from troveclient.osc.v1 import database_configurations +from troveclient.tests.osc.v1 import fakes + + +class TestConfigurations(fakes.TestDatabasev1): + fake_configurations = fakes.FakeConfigurations() + + def setUp(self): + super(TestConfigurations, self).setUp() + self.mock_client = self.app.client_manager.database + self.configuration_client = (self.app.client_manager.database. + configurations) + + +class TestConfigurationList(TestConfigurations): + defaults = { + 'limit': None, + 'marker': None + } + + columns = database_configurations.ListDatabaseConfigurations.columns + values = ('c-123', 'test_config', '', 'mysql', '5.6') + + def setUp(self): + super(TestConfigurationList, self).setUp() + self.cmd = database_configurations.ListDatabaseConfigurations(self.app, + None) + data = [self.fake_configurations.get_configurations_c_123()] + self.configuration_client.list.return_value = common.Paginated(data) + + def test_configuration_list_defaults(self): + parsed_args = self.check_parser(self.cmd, [], []) + columns, data = self.cmd.take_action(parsed_args) + self.configuration_client.list.assert_called_once_with(**self.defaults) + self.assertEqual(self.columns, columns) + self.assertEqual([tuple(self.values)], data) |