Skip to content

Commit d930b04

Browse files
author
Dean Troyer
committed
Funcional tests: quota list
The quota list tests have a race in them where occasionally a project is deleted in another test between the time that quota list gets a list of all projects and it gets the quota for the projects from the service; the get quota call fails on the non-existant project. The quota list functional tests have been substantially re-written to properly test the exception handling. Change-Id: I71e6bbb5d46fcea4718a5a870f9a66a2c20fff0f
1 parent 346ac9d commit d930b04

2 files changed

Lines changed: 490 additions & 270 deletions

File tree

openstackclient/common/quota.py

Lines changed: 62 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -132,13 +132,27 @@ def take_action(self, parsed_args):
132132
if parsed_args.compute:
133133
compute_client = self.app.client_manager.compute
134134
for p in project_ids:
135-
data = compute_client.quotas.get(p)
136-
result_data = _xform_get_quota(data, p,
137-
COMPUTE_QUOTAS.keys())
135+
try:
136+
data = compute_client.quotas.get(p)
137+
except Exception as ex:
138+
if type(ex).__name__ == 'NotFound':
139+
# Project not found, move on to next one
140+
LOG.warning("Project %s not found: %s" % (p, ex))
141+
continue
142+
else:
143+
raise
144+
145+
result_data = _xform_get_quota(
146+
data,
147+
p,
148+
COMPUTE_QUOTAS.keys(),
149+
)
138150
default_data = compute_client.quotas.defaults(p)
139-
result_default = _xform_get_quota(default_data,
140-
p,
141-
COMPUTE_QUOTAS.keys())
151+
result_default = _xform_get_quota(
152+
default_data,
153+
p,
154+
COMPUTE_QUOTAS.keys(),
155+
)
142156
if result_default != result_data:
143157
result += result_data
144158

@@ -174,16 +188,31 @@ def take_action(self, parsed_args):
174188
(utils.get_dict_properties(
175189
s, columns,
176190
) for s in result))
191+
177192
if parsed_args.volume:
178193
volume_client = self.app.client_manager.volume
179194
for p in project_ids:
180-
data = volume_client.quotas.get(p)
181-
result_data = _xform_get_quota(data, p,
182-
VOLUME_QUOTAS.keys())
195+
try:
196+
data = volume_client.quotas.get(p)
197+
except Exception as ex:
198+
if type(ex).__name__ == 'NotFound':
199+
# Project not found, move on to next one
200+
LOG.warning("Project %s not found: %s" % (p, ex))
201+
continue
202+
else:
203+
raise
204+
205+
result_data = _xform_get_quota(
206+
data,
207+
p,
208+
VOLUME_QUOTAS.keys(),
209+
)
183210
default_data = volume_client.quotas.defaults(p)
184-
result_default = _xform_get_quota(default_data,
185-
p,
186-
VOLUME_QUOTAS.keys())
211+
result_default = _xform_get_quota(
212+
default_data,
213+
p,
214+
VOLUME_QUOTAS.keys(),
215+
)
187216
if result_default != result_data:
188217
result += result_data
189218

@@ -209,14 +238,31 @@ def take_action(self, parsed_args):
209238
(utils.get_dict_properties(
210239
s, columns,
211240
) for s in result))
241+
212242
if parsed_args.network:
213243
client = self.app.client_manager.network
214244
for p in project_ids:
215-
data = client.get_quota(p)
216-
result_data = _xform_get_quota(data, p, NETWORK_KEYS)
245+
try:
246+
data = client.get_quota(p)
247+
except Exception as ex:
248+
if type(ex).__name__ == 'NotFound':
249+
# Project not found, move on to next one
250+
LOG.warning("Project %s not found: %s" % (p, ex))
251+
continue
252+
else:
253+
raise
254+
255+
result_data = _xform_get_quota(
256+
data,
257+
p,
258+
NETWORK_KEYS,
259+
)
217260
default_data = client.get_quota_default(p)
218-
result_default = _xform_get_quota(default_data,
219-
p, NETWORK_KEYS)
261+
result_default = _xform_get_quota(
262+
default_data,
263+
p,
264+
NETWORK_KEYS,
265+
)
220266
if result_default != result_data:
221267
result += result_data
222268

0 commit comments

Comments
 (0)