From d930b043eef262f3eb34489f01b9856077dc2dc4 Mon Sep 17 00:00:00 2001 From: Dean Troyer Date: Mon, 1 May 2017 17:27:15 -0500 Subject: 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 --- openstackclient/common/quota.py | 78 ++++++++++++++++++++++++++++++++--------- 1 file changed, 62 insertions(+), 16 deletions(-) (limited to 'openstackclient/common') diff --git a/openstackclient/common/quota.py b/openstackclient/common/quota.py index 73dfd909..6ed9e370 100644 --- a/openstackclient/common/quota.py +++ b/openstackclient/common/quota.py @@ -132,13 +132,27 @@ class ListQuota(command.Lister): if parsed_args.compute: compute_client = self.app.client_manager.compute for p in project_ids: - data = compute_client.quotas.get(p) - result_data = _xform_get_quota(data, p, - COMPUTE_QUOTAS.keys()) + try: + data = compute_client.quotas.get(p) + except Exception as ex: + if type(ex).__name__ == 'NotFound': + # Project not found, move on to next one + LOG.warning("Project %s not found: %s" % (p, ex)) + continue + else: + raise + + result_data = _xform_get_quota( + data, + p, + COMPUTE_QUOTAS.keys(), + ) default_data = compute_client.quotas.defaults(p) - result_default = _xform_get_quota(default_data, - p, - COMPUTE_QUOTAS.keys()) + result_default = _xform_get_quota( + default_data, + p, + COMPUTE_QUOTAS.keys(), + ) if result_default != result_data: result += result_data @@ -174,16 +188,31 @@ class ListQuota(command.Lister): (utils.get_dict_properties( s, columns, ) for s in result)) + if parsed_args.volume: volume_client = self.app.client_manager.volume for p in project_ids: - data = volume_client.quotas.get(p) - result_data = _xform_get_quota(data, p, - VOLUME_QUOTAS.keys()) + try: + data = volume_client.quotas.get(p) + except Exception as ex: + if type(ex).__name__ == 'NotFound': + # Project not found, move on to next one + LOG.warning("Project %s not found: %s" % (p, ex)) + continue + else: + raise + + result_data = _xform_get_quota( + data, + p, + VOLUME_QUOTAS.keys(), + ) default_data = volume_client.quotas.defaults(p) - result_default = _xform_get_quota(default_data, - p, - VOLUME_QUOTAS.keys()) + result_default = _xform_get_quota( + default_data, + p, + VOLUME_QUOTAS.keys(), + ) if result_default != result_data: result += result_data @@ -209,14 +238,31 @@ class ListQuota(command.Lister): (utils.get_dict_properties( s, columns, ) for s in result)) + if parsed_args.network: client = self.app.client_manager.network for p in project_ids: - data = client.get_quota(p) - result_data = _xform_get_quota(data, p, NETWORK_KEYS) + try: + data = client.get_quota(p) + except Exception as ex: + if type(ex).__name__ == 'NotFound': + # Project not found, move on to next one + LOG.warning("Project %s not found: %s" % (p, ex)) + continue + else: + raise + + result_data = _xform_get_quota( + data, + p, + NETWORK_KEYS, + ) default_data = client.get_quota_default(p) - result_default = _xform_get_quota(default_data, - p, NETWORK_KEYS) + result_default = _xform_get_quota( + default_data, + p, + NETWORK_KEYS, + ) if result_default != result_data: result += result_data -- cgit v1.2.1