diff options
| author | Dean Troyer <dtroyer@gmail.com> | 2017-01-14 12:57:09 -0600 |
|---|---|---|
| committer | Dean Troyer <dtroyer@gmail.com> | 2017-01-14 13:55:19 -0600 |
| commit | 819526591ee2cdbf7f138a08f9c38b9c804e5d31 (patch) | |
| tree | ad5b4ee386859f48891c1817c741926953875931 /openstackclient/common | |
| parent | 339ab40ee65a3be706591bc795f42b73040af19e (diff) | |
| download | python-openstackclient-819526591ee2cdbf7f138a08f9c38b9c804e5d31.tar.gz | |
Fix quota show --default command
Work around a bug in OpenStack SDK 0.9.11 and 0.9.12 that causes
quota show --default to fail. This can be removed when the proposed
SDK fix (https://review.openstack.org/420301) is reelased and in the
minimum SDK version in global requirements.
quota set --network is still broken, I can't fix it at the moment...
Closes-bug: 1656572
Change-Id: Ice77e14782c33e672176afbab36bba95b73d7a11
Diffstat (limited to 'openstackclient/common')
| -rw-r--r-- | openstackclient/common/quota.py | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/openstackclient/common/quota.py b/openstackclient/common/quota.py index afc6195f..fa6c5765 100644 --- a/openstackclient/common/quota.py +++ b/openstackclient/common/quota.py @@ -18,6 +18,8 @@ import itertools import sys +from openstack import exceptions as sdk_exceptions +from openstack.network.v2 import quota as _quota from osc_lib.command import command from osc_lib import utils import six @@ -251,7 +253,39 @@ class ShowQuota(command.ShowOne): project = self._get_project(parsed_args) client = self.app.client_manager.network if parsed_args.default: - network_quota = client.get_quota_default(project) + # TODO(dtroyer): Remove the top of this if block once the + # fixed SDK QuotaDefault class is the minimum + # required version. This is expected to be + # SDK release 0.9.13 + if hasattr(_quota.QuotaDefault, 'project'): + # hack 0.9.11+ + quotadef_obj = client._get_resource( + _quota.QuotaDefault, + project, + ) + quotadef_obj.base_path = quotadef_obj.base_path % { + 'project': project, + } + try: + network_quota = quotadef_obj.get( + client.session, + requires_id=False, + ) + except sdk_exceptions.NotFoundException as e: + raise sdk_exceptions.ResourceNotFound( + message="No %s found for %s" % + (_quota.QuotaDefault.__name__, project), + details=e.details, + response=e.response, + request_id=e.request_id, + url=e.url, + method=e.method, + http_status=e.http_status, + cause=e.cause, + ) + # end hack-around + else: + network_quota = client.get_quota_default(project) else: network_quota = client.get_quota(project) return network_quota |
