summaryrefslogtreecommitdiff
path: root/openstackclient/common
diff options
context:
space:
mode:
authorDean Troyer <dtroyer@gmail.com>2017-01-14 12:57:09 -0600
committerDean Troyer <dtroyer@gmail.com>2017-01-14 13:55:19 -0600
commit819526591ee2cdbf7f138a08f9c38b9c804e5d31 (patch)
treead5b4ee386859f48891c1817c741926953875931 /openstackclient/common
parent339ab40ee65a3be706591bc795f42b73040af19e (diff)
downloadpython-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.py36
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