Merge "Add API check for server_groups.list"
This commit is contained in:
		| @@ -17,6 +17,7 @@ | |||||||
|  |  | ||||||
| import logging | import logging | ||||||
|  |  | ||||||
|  | from novaclient import api_versions | ||||||
| from osc_lib.command import command | from osc_lib.command import command | ||||||
| from osc_lib import exceptions | from osc_lib import exceptions | ||||||
| from osc_lib import utils | from osc_lib import utils | ||||||
| @@ -136,11 +137,15 @@ class ListServerGroup(command.Lister): | |||||||
|         compute_client = self.app.client_manager.compute |         compute_client = self.app.client_manager.compute | ||||||
|         data = compute_client.server_groups.list(parsed_args.all_projects) |         data = compute_client.server_groups.list(parsed_args.all_projects) | ||||||
|  |  | ||||||
|  |         policy_key = 'Policies' | ||||||
|  |         if compute_client.api_version >= api_versions.APIVersion("2.64"): | ||||||
|  |             policy_key = 'Policy' | ||||||
|  |  | ||||||
|         if parsed_args.long: |         if parsed_args.long: | ||||||
|             column_headers = columns = ( |             column_headers = columns = ( | ||||||
|                 'ID', |                 'ID', | ||||||
|                 'Name', |                 'Name', | ||||||
|                 'Policies', |                 policy_key, | ||||||
|                 'Members', |                 'Members', | ||||||
|                 'Project Id', |                 'Project Id', | ||||||
|                 'User Id', |                 'User Id', | ||||||
| @@ -149,7 +154,7 @@ class ListServerGroup(command.Lister): | |||||||
|             column_headers = columns = ( |             column_headers = columns = ( | ||||||
|                 'ID', |                 'ID', | ||||||
|                 'Name', |                 'Name', | ||||||
|                 'Policies', |                 policy_key, | ||||||
|             ) |             ) | ||||||
|  |  | ||||||
|         return (column_headers, |         return (column_headers, | ||||||
|   | |||||||
| @@ -1244,7 +1244,7 @@ class FakeServerGroup(object): | |||||||
|     """Fake one server group""" |     """Fake one server group""" | ||||||
|  |  | ||||||
|     @staticmethod |     @staticmethod | ||||||
|     def create_one_server_group(attrs=None): |     def _create_one_server_group(attrs=None): | ||||||
|         """Create a fake server group |         """Create a fake server group | ||||||
|  |  | ||||||
|         :param Dictionary attrs: |         :param Dictionary attrs: | ||||||
| @@ -1261,7 +1261,6 @@ class FakeServerGroup(object): | |||||||
|             'members': [], |             'members': [], | ||||||
|             'metadata': {}, |             'metadata': {}, | ||||||
|             'name': 'server-group-name-' + uuid.uuid4().hex, |             'name': 'server-group-name-' + uuid.uuid4().hex, | ||||||
|             'policies': [], |  | ||||||
|             'project_id': 'server-group-project-id-' + uuid.uuid4().hex, |             'project_id': 'server-group-project-id-' + uuid.uuid4().hex, | ||||||
|             'user_id': 'server-group-user-id-' + uuid.uuid4().hex, |             'user_id': 'server-group-user-id-' + uuid.uuid4().hex, | ||||||
|         } |         } | ||||||
| @@ -1274,6 +1273,38 @@ class FakeServerGroup(object): | |||||||
|             loaded=True) |             loaded=True) | ||||||
|         return server_group |         return server_group | ||||||
|  |  | ||||||
|  |     @staticmethod | ||||||
|  |     def create_one_server_group(attrs=None): | ||||||
|  |         """Create a fake server group | ||||||
|  |  | ||||||
|  |         :param Dictionary attrs: | ||||||
|  |             A dictionary with all attributes | ||||||
|  |         :return: | ||||||
|  |             A FakeResource object, with id and other attributes | ||||||
|  |         """ | ||||||
|  |         if attrs is None: | ||||||
|  |             attrs = {} | ||||||
|  |         attrs.setdefault('policies', ['policy1', 'policy2']) | ||||||
|  |         return FakeServerGroup._create_one_server_group(attrs) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class FakeServerGroupV264(object): | ||||||
|  |     """Fake one server group fo API >= 2.64""" | ||||||
|  |  | ||||||
|  |     @staticmethod | ||||||
|  |     def create_one_server_group(attrs=None): | ||||||
|  |         """Create a fake server group | ||||||
|  |  | ||||||
|  |         :param Dictionary attrs: | ||||||
|  |             A dictionary with all attributes | ||||||
|  |         :return: | ||||||
|  |             A FakeResource object, with id and other attributes | ||||||
|  |         """ | ||||||
|  |         if attrs is None: | ||||||
|  |             attrs = {} | ||||||
|  |         attrs.setdefault('policy', 'policy1') | ||||||
|  |         return FakeServerGroup._create_one_server_group(attrs) | ||||||
|  |  | ||||||
|  |  | ||||||
| class FakeUsage(object): | class FakeUsage(object): | ||||||
|     """Fake one or more usage.""" |     """Fake one or more usage.""" | ||||||
|   | |||||||
| @@ -15,6 +15,7 @@ | |||||||
|  |  | ||||||
| from unittest import mock | from unittest import mock | ||||||
|  |  | ||||||
|  | from novaclient import api_versions | ||||||
| from osc_lib import exceptions | from osc_lib import exceptions | ||||||
| from osc_lib import utils | from osc_lib import utils | ||||||
|  |  | ||||||
| @@ -53,6 +54,33 @@ class TestServerGroup(compute_fakes.TestComputev2): | |||||||
|         self.server_groups_mock.reset_mock() |         self.server_groups_mock.reset_mock() | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class TestServerGroupV264(TestServerGroup): | ||||||
|  |  | ||||||
|  |     fake_server_group = \ | ||||||
|  |         compute_fakes.FakeServerGroupV264.create_one_server_group() | ||||||
|  |  | ||||||
|  |     columns = ( | ||||||
|  |         'id', | ||||||
|  |         'members', | ||||||
|  |         'name', | ||||||
|  |         'policy', | ||||||
|  |         'project_id', | ||||||
|  |         'user_id', | ||||||
|  |     ) | ||||||
|  |  | ||||||
|  |     data = ( | ||||||
|  |         fake_server_group.id, | ||||||
|  |         utils.format_list(fake_server_group.members), | ||||||
|  |         fake_server_group.name, | ||||||
|  |         fake_server_group.policy, | ||||||
|  |         fake_server_group.project_id, | ||||||
|  |         fake_server_group.user_id, | ||||||
|  |     ) | ||||||
|  |  | ||||||
|  |     def setUp(self): | ||||||
|  |         super(TestServerGroupV264, self).setUp() | ||||||
|  |  | ||||||
|  |  | ||||||
| class TestServerGroupCreate(TestServerGroup): | class TestServerGroupCreate(TestServerGroup): | ||||||
|  |  | ||||||
|     def setUp(self): |     def setUp(self): | ||||||
| @@ -230,6 +258,76 @@ class TestServerGroupList(TestServerGroup): | |||||||
|         self.assertEqual(self.list_data_long, tuple(data)) |         self.assertEqual(self.list_data_long, tuple(data)) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class TestServerGroupListV264(TestServerGroupV264): | ||||||
|  |  | ||||||
|  |     list_columns = ( | ||||||
|  |         'ID', | ||||||
|  |         'Name', | ||||||
|  |         'Policy', | ||||||
|  |     ) | ||||||
|  |  | ||||||
|  |     list_columns_long = ( | ||||||
|  |         'ID', | ||||||
|  |         'Name', | ||||||
|  |         'Policy', | ||||||
|  |         'Members', | ||||||
|  |         'Project Id', | ||||||
|  |         'User Id', | ||||||
|  |     ) | ||||||
|  |  | ||||||
|  |     list_data = (( | ||||||
|  |         TestServerGroupV264.fake_server_group.id, | ||||||
|  |         TestServerGroupV264.fake_server_group.name, | ||||||
|  |         TestServerGroupV264.fake_server_group.policy, | ||||||
|  |     ),) | ||||||
|  |  | ||||||
|  |     list_data_long = (( | ||||||
|  |         TestServerGroupV264.fake_server_group.id, | ||||||
|  |         TestServerGroupV264.fake_server_group.name, | ||||||
|  |         TestServerGroupV264.fake_server_group.policy, | ||||||
|  |         utils.format_list(TestServerGroupV264.fake_server_group.members), | ||||||
|  |         TestServerGroupV264.fake_server_group.project_id, | ||||||
|  |         TestServerGroupV264.fake_server_group.user_id, | ||||||
|  |     ),) | ||||||
|  |  | ||||||
|  |     def setUp(self): | ||||||
|  |         super(TestServerGroupListV264, self).setUp() | ||||||
|  |  | ||||||
|  |         self.server_groups_mock.list.return_value = [self.fake_server_group] | ||||||
|  |         self.cmd = server_group.ListServerGroup(self.app, None) | ||||||
|  |         self.app.client_manager.compute.api_version = api_versions.APIVersion( | ||||||
|  |             '2.64') | ||||||
|  |  | ||||||
|  |     def test_server_group_list(self): | ||||||
|  |         arglist = [] | ||||||
|  |         verifylist = [ | ||||||
|  |             ('all_projects', False), | ||||||
|  |             ('long', False), | ||||||
|  |         ] | ||||||
|  |         parsed_args = self.check_parser(self.cmd, arglist, verifylist) | ||||||
|  |         columns, data = self.cmd.take_action(parsed_args) | ||||||
|  |         self.server_groups_mock.list.assert_called_once_with(False) | ||||||
|  |  | ||||||
|  |         self.assertEqual(self.list_columns, columns) | ||||||
|  |         self.assertEqual(self.list_data, tuple(data)) | ||||||
|  |  | ||||||
|  |     def test_server_group_list_with_all_projects_and_long(self): | ||||||
|  |         arglist = [ | ||||||
|  |             '--all-projects', | ||||||
|  |             '--long', | ||||||
|  |         ] | ||||||
|  |         verifylist = [ | ||||||
|  |             ('all_projects', True), | ||||||
|  |             ('long', True), | ||||||
|  |         ] | ||||||
|  |         parsed_args = self.check_parser(self.cmd, arglist, verifylist) | ||||||
|  |         columns, data = self.cmd.take_action(parsed_args) | ||||||
|  |         self.server_groups_mock.list.assert_called_once_with(True) | ||||||
|  |  | ||||||
|  |         self.assertEqual(self.list_columns_long, columns) | ||||||
|  |         self.assertEqual(self.list_data_long, tuple(data)) | ||||||
|  |  | ||||||
|  |  | ||||||
| class TestServerGroupShow(TestServerGroup): | class TestServerGroupShow(TestServerGroup): | ||||||
|  |  | ||||||
|     def setUp(self): |     def setUp(self): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Zuul
					Zuul