Skip to content

Commit e62ed31

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Add API check for server_groups.list" into stable/train
2 parents 8ac26f8 + 6f782d9 commit e62ed31

3 files changed

Lines changed: 136 additions & 4 deletions

File tree

openstackclient/compute/v2/server_group.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,11 +141,15 @@ def take_action(self, parsed_args):
141141
compute_client = self.app.client_manager.compute
142142
data = compute_client.server_groups.list(parsed_args.all_projects)
143143

144+
policy_key = 'Policies'
145+
if compute_client.api_version >= api_versions.APIVersion("2.64"):
146+
policy_key = 'Policy'
147+
144148
if parsed_args.long:
145149
column_headers = columns = (
146150
'ID',
147151
'Name',
148-
'Policies',
152+
policy_key,
149153
'Members',
150154
'Project Id',
151155
'User Id',
@@ -154,7 +158,7 @@ def take_action(self, parsed_args):
154158
column_headers = columns = (
155159
'ID',
156160
'Name',
157-
'Policies',
161+
policy_key,
158162
)
159163

160164
return (column_headers,

openstackclient/tests/unit/compute/v2/fakes.py

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1244,7 +1244,7 @@ class FakeServerGroup(object):
12441244
"""Fake one server group"""
12451245

12461246
@staticmethod
1247-
def create_one_server_group(attrs=None):
1247+
def _create_one_server_group(attrs=None):
12481248
"""Create a fake server group
12491249
12501250
:param Dictionary attrs:
@@ -1261,7 +1261,6 @@ def create_one_server_group(attrs=None):
12611261
'members': [],
12621262
'metadata': {},
12631263
'name': 'server-group-name-' + uuid.uuid4().hex,
1264-
'policies': [],
12651264
'project_id': 'server-group-project-id-' + uuid.uuid4().hex,
12661265
'user_id': 'server-group-user-id-' + uuid.uuid4().hex,
12671266
}
@@ -1274,6 +1273,38 @@ def create_one_server_group(attrs=None):
12741273
loaded=True)
12751274
return server_group
12761275

1276+
@staticmethod
1277+
def create_one_server_group(attrs=None):
1278+
"""Create a fake server group
1279+
1280+
:param Dictionary attrs:
1281+
A dictionary with all attributes
1282+
:return:
1283+
A FakeResource object, with id and other attributes
1284+
"""
1285+
if attrs is None:
1286+
attrs = {}
1287+
attrs.setdefault('policies', ['policy1', 'policy2'])
1288+
return FakeServerGroup._create_one_server_group(attrs)
1289+
1290+
1291+
class FakeServerGroupV264(object):
1292+
"""Fake one server group fo API >= 2.64"""
1293+
1294+
@staticmethod
1295+
def create_one_server_group(attrs=None):
1296+
"""Create a fake server group
1297+
1298+
:param Dictionary attrs:
1299+
A dictionary with all attributes
1300+
:return:
1301+
A FakeResource object, with id and other attributes
1302+
"""
1303+
if attrs is None:
1304+
attrs = {}
1305+
attrs.setdefault('policy', 'policy1')
1306+
return FakeServerGroup._create_one_server_group(attrs)
1307+
12771308

12781309
class FakeUsage(object):
12791310
"""Fake one or more usage."""

openstackclient/tests/unit/compute/v2/test_server_group.py

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,33 @@ def setUp(self):
5454
self.server_groups_mock.reset_mock()
5555

5656

57+
class TestServerGroupV264(TestServerGroup):
58+
59+
fake_server_group = \
60+
compute_fakes.FakeServerGroupV264.create_one_server_group()
61+
62+
columns = (
63+
'id',
64+
'members',
65+
'name',
66+
'policy',
67+
'project_id',
68+
'user_id',
69+
)
70+
71+
data = (
72+
fake_server_group.id,
73+
utils.format_list(fake_server_group.members),
74+
fake_server_group.name,
75+
fake_server_group.policy,
76+
fake_server_group.project_id,
77+
fake_server_group.user_id,
78+
)
79+
80+
def setUp(self):
81+
super(TestServerGroupV264, self).setUp()
82+
83+
5784
class TestServerGroupCreate(TestServerGroup):
5885

5986
def setUp(self):
@@ -253,6 +280,76 @@ def test_server_group_list_with_all_projects_and_long(self):
253280
self.assertEqual(self.list_data_long, tuple(data))
254281

255282

283+
class TestServerGroupListV264(TestServerGroupV264):
284+
285+
list_columns = (
286+
'ID',
287+
'Name',
288+
'Policy',
289+
)
290+
291+
list_columns_long = (
292+
'ID',
293+
'Name',
294+
'Policy',
295+
'Members',
296+
'Project Id',
297+
'User Id',
298+
)
299+
300+
list_data = ((
301+
TestServerGroupV264.fake_server_group.id,
302+
TestServerGroupV264.fake_server_group.name,
303+
TestServerGroupV264.fake_server_group.policy,
304+
),)
305+
306+
list_data_long = ((
307+
TestServerGroupV264.fake_server_group.id,
308+
TestServerGroupV264.fake_server_group.name,
309+
TestServerGroupV264.fake_server_group.policy,
310+
utils.format_list(TestServerGroupV264.fake_server_group.members),
311+
TestServerGroupV264.fake_server_group.project_id,
312+
TestServerGroupV264.fake_server_group.user_id,
313+
),)
314+
315+
def setUp(self):
316+
super(TestServerGroupListV264, self).setUp()
317+
318+
self.server_groups_mock.list.return_value = [self.fake_server_group]
319+
self.cmd = server_group.ListServerGroup(self.app, None)
320+
self.app.client_manager.compute.api_version = api_versions.APIVersion(
321+
'2.64')
322+
323+
def test_server_group_list(self):
324+
arglist = []
325+
verifylist = [
326+
('all_projects', False),
327+
('long', False),
328+
]
329+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
330+
columns, data = self.cmd.take_action(parsed_args)
331+
self.server_groups_mock.list.assert_called_once_with(False)
332+
333+
self.assertEqual(self.list_columns, columns)
334+
self.assertEqual(self.list_data, tuple(data))
335+
336+
def test_server_group_list_with_all_projects_and_long(self):
337+
arglist = [
338+
'--all-projects',
339+
'--long',
340+
]
341+
verifylist = [
342+
('all_projects', True),
343+
('long', True),
344+
]
345+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
346+
columns, data = self.cmd.take_action(parsed_args)
347+
self.server_groups_mock.list.assert_called_once_with(True)
348+
349+
self.assertEqual(self.list_columns_long, columns)
350+
self.assertEqual(self.list_data_long, tuple(data))
351+
352+
256353
class TestServerGroupShow(TestServerGroup):
257354

258355
def setUp(self):

0 commit comments

Comments
 (0)