diff options
author | Lingxian Kong <anlin.kong@gmail.com> | 2020-10-21 22:33:51 +1300 |
---|---|---|
committer | Lingxian Kong <anlin.kong@gmail.com> | 2020-10-22 08:51:55 +1300 |
commit | 7c9a57665dd433951a2b70f7557f2d1595e36fdc (patch) | |
tree | 7a8a83f4a9e9d822e8b4833d14fc697ddbdb8471 | |
parent | e15a3a2733cb3f6fca73145ce92bfc7056759e42 (diff) | |
download | python-troveclient-7c9a57665dd433951a2b70f7557f2d1595e36fdc.tar.gz |
Support getting instances for a project
Change-Id: I1b3e8dce864740221722070a710f5a2f867d6c4b
-rw-r--r-- | troveclient/osc/v1/database_instances.py | 13 | ||||
-rw-r--r-- | troveclient/tests/osc/utils.py | 28 | ||||
-rw-r--r-- | troveclient/tests/osc/v1/test_database_instances.py | 16 |
3 files changed, 54 insertions, 3 deletions
diff --git a/troveclient/osc/v1/database_instances.py b/troveclient/osc/v1/database_instances.py index b3e916b..c155e97 100644 --- a/troveclient/osc/v1/database_instances.py +++ b/troveclient/osc/v1/database_instances.py @@ -134,12 +134,20 @@ class ListDatabaseInstances(command.Lister): default=False, help=_("Include database instances of all projects (admin only)") ) + parser.add_argument( + '--project-id', + help=_("Include database instances of a specific project " + "(admin only)") + ) return parser def take_action(self, parsed_args): - if parsed_args.all_projects: + extra_params = {} + if parsed_args.all_projects or parsed_args.project_id: db_instances = self.app.client_manager.database.mgmt_instances cols = self.admin_columns + if parsed_args.project_id: + extra_params['project_id'] = parsed_args.project_id else: db_instances = self.app.client_manager.database.instances cols = self.columns @@ -147,7 +155,8 @@ class ListDatabaseInstances(command.Lister): instances = db_instances.list( limit=parsed_args.limit, marker=parsed_args.marker, - include_clustered=parsed_args.include_clustered + include_clustered=parsed_args.include_clustered, + **extra_params ) if instances: instances = set_attributes_for_print(instances) diff --git a/troveclient/tests/osc/utils.py b/troveclient/tests/osc/utils.py index e40bdd4..ca86cb5 100644 --- a/troveclient/tests/osc/utils.py +++ b/troveclient/tests/osc/utils.py @@ -12,10 +12,12 @@ # import os +import random +import sys from unittest import mock +import uuid import fixtures -import sys import testtools from troveclient.tests.osc import fakes @@ -35,6 +37,30 @@ class TestCase(testtools.TestCase): stderr = self.useFixture(fixtures.StringStream("stderr")).stream self.useFixture(fixtures.MonkeyPatch("sys.stderr", stderr)) + @classmethod + def random_name(cls, name='', prefix=None): + """Generate a random name that inclues a random number. + + :param str name: The name that you want to include + :param str prefix: The prefix that you want to include + + :return: a random name. The format is + '<prefix>-<name>-<random number>'. + (e.g. 'prefixfoo-namebar-154876201') + :rtype: string + """ + randbits = str(random.randint(1, 0x7fffffff)) + rand_name = randbits + if name: + rand_name = name + '-' + rand_name + if prefix: + rand_name = prefix + '-' + rand_name + return rand_name + + @classmethod + def random_uuid(cls): + return str(uuid.uuid4()) + class TestCommand(TestCase): """Test cliff command classes""" diff --git a/troveclient/tests/osc/v1/test_database_instances.py b/troveclient/tests/osc/v1/test_database_instances.py index c050c35..9000acb 100644 --- a/troveclient/tests/osc/v1/test_database_instances.py +++ b/troveclient/tests/osc/v1/test_database_instances.py @@ -88,6 +88,22 @@ class TestInstanceList(TestInstances): ] self.assertEqual(expected_instances, instances) + def test_instance_list_for_project(self): + self.mgmt_client.list.return_value = common.Paginated(self.data) + + project_id = self.random_uuid() + parsed_args = self.check_parser(self.cmd, ["--project-id", project_id], + [("project_id", project_id)]) + self.cmd.take_action(parsed_args) + + expected_params = { + 'include_clustered': False, + 'limit': None, + 'marker': None, + 'project_id': project_id + } + self.mgmt_client.list.assert_called_once_with(**expected_params) + class TestInstanceShow(TestInstances): values = ([{'address': '10.0.0.13', 'type': 'private'}], [], 'mysql', |