summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2017-05-11 19:18:36 +0000
committerGerrit Code Review <review@openstack.org>2017-05-11 19:18:36 +0000
commit8770b6ed5ce0e8c98a9818cec67e773bd4e841f1 (patch)
tree79b63397a2560b351036036f2a401d99024ae355 /openstackclient
parent96a3bae3c1cb6f76cdb1e32ec8b94acb681594fb (diff)
parente8f3103cc14b62226a5d71d2018b8e1c96c8a2d8 (diff)
downloadpython-openstackclient-8770b6ed5ce0e8c98a9818cec67e773bd4e841f1.tar.gz
Merge "Ignore more exceptions in quota list"
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/common/quota.py5
-rw-r--r--openstackclient/tests/unit/common/test_quota.py49
2 files changed, 52 insertions, 2 deletions
diff --git a/openstackclient/common/quota.py b/openstackclient/common/quota.py
index 6ed9e370..0d5cb9be 100644
--- a/openstackclient/common/quota.py
+++ b/openstackclient/common/quota.py
@@ -135,7 +135,10 @@ class ListQuota(command.Lister):
try:
data = compute_client.quotas.get(p)
except Exception as ex:
- if type(ex).__name__ == 'NotFound':
+ if (
+ type(ex).__name__ == 'NotFound' or
+ ex.http_status >= 400 and ex.http_status <= 499
+ ):
# Project not found, move on to next one
LOG.warning("Project %s not found: %s" % (p, ex))
continue
diff --git a/openstackclient/tests/unit/common/test_quota.py b/openstackclient/tests/unit/common/test_quota.py
index 1b0d2c31..482653f4 100644
--- a/openstackclient/tests/unit/common/test_quota.py
+++ b/openstackclient/tests/unit/common/test_quota.py
@@ -242,7 +242,7 @@ class TestQuotaList(TestQuota):
self.assertEqual(self.compute_reference_data, ret_quotas[0])
self.assertEqual(1, len(ret_quotas))
- def test_quota_list_compute_no_project(self):
+ def test_quota_list_compute_no_project_not_found(self):
# Make one of the projects disappear
self.compute.quotas.get = mock.Mock(
side_effect=[
@@ -266,6 +266,53 @@ class TestQuotaList(TestQuota):
self.assertEqual(self.compute_reference_data, ret_quotas[0])
self.assertEqual(1, len(ret_quotas))
+ def test_quota_list_compute_no_project_4xx(self):
+ # Make one of the projects disappear
+ self.compute.quotas.get = mock.Mock(
+ side_effect=[
+ self.compute_quotas[0],
+ exceptions.BadRequest("Bad request"),
+ ],
+ )
+
+ arglist = [
+ '--compute',
+ ]
+ verifylist = [
+ ('compute', True),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+ ret_quotas = list(data)
+
+ self.assertEqual(self.compute_column_header, columns)
+ self.assertEqual(self.compute_reference_data, ret_quotas[0])
+ self.assertEqual(1, len(ret_quotas))
+
+ def test_quota_list_compute_no_project_5xx(self):
+ # Make one of the projects disappear
+ self.compute.quotas.get = mock.Mock(
+ side_effect=[
+ self.compute_quotas[0],
+ exceptions.HTTPNotImplemented("Not implemented??"),
+ ],
+ )
+
+ arglist = [
+ '--compute',
+ ]
+ verifylist = [
+ ('compute', True),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ self.assertRaises(
+ exceptions.HTTPNotImplemented,
+ self.cmd.take_action,
+ parsed_args,
+ )
+
def test_quota_list_network(self):
# Two projects with non-default quotas
self.network.get_quota = mock.Mock(