summaryrefslogtreecommitdiff
path: root/openstackclient/common
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-04-23 09:49:35 +0000
committerGerrit Code Review <review@openstack.org>2018-04-23 09:49:35 +0000
commit06263bd5852aad9cd03a76f50140fbbb2d0751ba (patch)
tree1b2c493ee53b5cdd95325e4fd5513e4287446cc8 /openstackclient/common
parentb59de7b8494ddbde3570780214378cdb2208c482 (diff)
parent24b06ef273e193819624fd2e021282d2735977b0 (diff)
downloadpython-openstackclient-06263bd5852aad9cd03a76f50140fbbb2d0751ba.tar.gz
Merge "Fix limits show command without Nova and Cinder"
Diffstat (limited to 'openstackclient/common')
-rw-r--r--openstackclient/common/clientmanager.py19
-rw-r--r--openstackclient/common/limits.py32
2 files changed, 40 insertions, 11 deletions
diff --git a/openstackclient/common/clientmanager.py b/openstackclient/common/clientmanager.py
index 89781052..aa1045e4 100644
--- a/openstackclient/common/clientmanager.py
+++ b/openstackclient/common/clientmanager.py
@@ -125,6 +125,25 @@ class ClientManager(clientmanager.ClientManager):
# use Network API by default
return self.is_service_available('network') is not False
+ def is_compute_endpoint_enabled(self):
+ """Check if Compute endpoint is enabled"""
+
+ return self.is_service_available('compute') is not False
+
+ def is_volume_endpoint_enabled(self, volume_client):
+ """Check if volume endpoint is enabled"""
+ # NOTE(jcross): Cinder did some interesting things with their service
+ # name so we need to figure out which version to look
+ # for when calling is_service_available()
+ volume_version = volume_client.api_version.ver_major
+ if self.is_service_available(
+ "volumev%s" % volume_version) is not False:
+ return True
+ elif self.is_service_available('volume') is not False:
+ return True
+ else:
+ return False
+
# Plugin Support
diff --git a/openstackclient/common/limits.py b/openstackclient/common/limits.py
index 957f1d02..19db35d7 100644
--- a/openstackclient/common/limits.py
+++ b/openstackclient/common/limits.py
@@ -83,24 +83,34 @@ class ShowLimits(command.Lister):
project_id = utils.find_resource(identity_client.projects,
parsed_args.project).id
- compute_limits = compute_client.limits.get(parsed_args.is_reserved,
- tenant_id=project_id)
- volume_limits = volume_client.limits.get()
+ compute_limits = None
+ volume_limits = None
+ if self.app.client_manager.is_compute_endpoint_enabled():
+ compute_limits = compute_client.limits.get(parsed_args.is_reserved,
+ tenant_id=project_id)
+
+ if self.app.client_manager.is_volume_endpoint_enabled(volume_client):
+ volume_limits = volume_client.limits.get()
+
+ data = []
if parsed_args.is_absolute:
- compute_limits = compute_limits.absolute
- volume_limits = volume_limits.absolute
+ if compute_limits:
+ data.append(compute_limits.absolute)
+ if volume_limits:
+ data.append(volume_limits.absolute)
columns = ["Name", "Value"]
return (columns, (utils.get_item_properties(s, columns)
- for s in itertools.chain(compute_limits, volume_limits)))
+ for s in itertools.chain(*data)))
elif parsed_args.is_rate:
- compute_limits = compute_limits.rate
- volume_limits = volume_limits.rate
+ if compute_limits:
+ data.append(compute_limits.rate)
+ if volume_limits:
+ data.append(volume_limits.rate)
columns = ["Verb", "URI", "Value", "Remain", "Unit",
"Next Available"]
return (columns, (utils.get_item_properties(s, columns)
- for s in itertools.chain(compute_limits, volume_limits)))
-
+ for s in itertools.chain(*data)))
else:
- return ({}, {})
+ return {}, {}