summaryrefslogtreecommitdiff
path: root/openstackclient/common
diff options
context:
space:
mode:
authorzhiyuan_cai <luckyvega.g@gmail.com>2014-12-29 10:30:52 +0800
committerzhiyuan_cai <luckyvega.g@gmail.com>2014-12-30 09:53:26 +0800
commit7ea5f89043b34c379f774577dee78560275fa797 (patch)
tree5fd4d0b23d2930d151c717ef8e6aecf3598ad318 /openstackclient/common
parent3cb8b0ca6fb3985ca97a4820dfa8e44d31bd5281 (diff)
downloadpython-openstackclient-7ea5f89043b34c379f774577dee78560275fa797.tar.gz
Catch exception when getting quota
Quota show command will list both the quotas of nova and cinder. But if cinder service is not enabled, EndpointNotFound exception will be raised and thus the command is broken. Catch this exception so quotas of nova can be listed. Change-Id: If2d2820675aa6a12e407d608fed846b21c953b2d Closes-Bug: #1390507
Diffstat (limited to 'openstackclient/common')
-rw-r--r--openstackclient/common/quota.py34
1 files changed, 19 insertions, 15 deletions
diff --git a/openstackclient/common/quota.py b/openstackclient/common/quota.py
index edf4ffdb..6d04b5c9 100644
--- a/openstackclient/common/quota.py
+++ b/openstackclient/common/quota.py
@@ -147,6 +147,21 @@ class ShowQuota(show.ShowOne):
)
return parser
+ def get_quota(self, client, parsed_args):
+ try:
+ if parsed_args.quota_class:
+ quota = client.quota_classes.get(parsed_args.project)
+ elif parsed_args.default:
+ quota = client.quotas.defaults(parsed_args.project)
+ else:
+ quota = client.quotas.get(parsed_args.project)
+ except Exception as e:
+ if type(e).__name__ == 'EndpointNotFound':
+ return {}
+ else:
+ raise e
+ return quota._info
+
def take_action(self, parsed_args):
self.log.debug('take_action(%s)', parsed_args)
@@ -159,23 +174,12 @@ class ShowQuota(show.ShowOne):
# does not exist. If this is determined to be the
# intended behaviour of the API we will validate
# the argument with Identity ourselves later.
- if parsed_args.quota_class:
- compute_quota = compute_client.quota_classes.get(
- parsed_args.project)
- volume_quota = volume_client.quota_classes.get(
- parsed_args.project)
- elif parsed_args.default:
- compute_quota = compute_client.quotas.defaults(
- parsed_args.project)
- volume_quota = volume_client.quotas.defaults(
- parsed_args.project)
- else:
- compute_quota = compute_client.quotas.get(parsed_args.project)
- volume_quota = volume_client.quotas.get(parsed_args.project)
+ compute_quota_info = self.get_quota(compute_client, parsed_args)
+ volume_quota_info = self.get_quota(volume_client, parsed_args)
info = {}
- info.update(compute_quota._info)
- info.update(volume_quota._info)
+ info.update(compute_quota_info)
+ info.update(volume_quota_info)
# Map the internal quota names to the external ones
for k, v in itertools.chain(