mirror of
https://opendev.org/openstack/python-openstackclient.git
synced 2026-01-17 07:20:45 +00:00
quota: Catch correct exception type for Compute quotas
There is a flaw (IMO) in the design of Nova's os-quota-sets API: despite
project IDs forming the identifier for an individual resource, we get a
HTTP 400 (Bad Request) error if you pass an ID that does not exist,
rather than the HTTP 404 (Not Found) we would expect.
Correct this, noting why we're doing what we're doing for readers from
the future (hi!). Note that HTTP 400 is unfortunately quite broad and
means we'll also catch things like invalid requests but the exception
may have been translated so we can't rely on a string match.
Change-Id: I720502930d50be8ead5f2033d9dbcab5d99a37a9
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
Closes-bug: #2091086
(cherry picked from commit 99cef9354b)
This commit is contained in:
parent
66a9708d77
commit
f42ade4305
1 changed files with 7 additions and 2 deletions
|
|
@ -249,9 +249,14 @@ class ListQuota(command.Lister):
|
|||
for project_id in project_ids:
|
||||
try:
|
||||
project_data = compute_client.get_quota_set(project_id)
|
||||
# NOTE(stephenfin): Unfortunately, Nova raises a HTTP 400 (Bad
|
||||
# Request) if the project ID is invalid, even though the project
|
||||
# ID is actually the resource's identifier which would normally
|
||||
# lead us to expect a HTTP 404 (Not Found).
|
||||
except (
|
||||
sdk_exceptions.NotFoundException,
|
||||
sdk_exceptions.BadRequestException,
|
||||
sdk_exceptions.ForbiddenException,
|
||||
sdk_exceptions.NotFoundException,
|
||||
) as exc:
|
||||
# Project not found, move on to next one
|
||||
LOG.warning(f"Project {project_id} not found: {exc}")
|
||||
|
|
@ -312,8 +317,8 @@ class ListQuota(command.Lister):
|
|||
try:
|
||||
project_data = volume_client.get_quota_set(project_id)
|
||||
except (
|
||||
sdk_exceptions.NotFoundException,
|
||||
sdk_exceptions.ForbiddenException,
|
||||
sdk_exceptions.NotFoundException,
|
||||
) as exc:
|
||||
# Project not found, move on to next one
|
||||
LOG.warning(f"Project {project_id} not found: {exc}")
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue