summaryrefslogtreecommitdiff
path: root/openstackclient/common
diff options
context:
space:
mode:
authorSteve Martinelli <stevemar@ca.ibm.com>2015-04-03 02:26:22 -0400
committerSteve Martinelli <stevemar@ca.ibm.com>2015-04-03 02:26:22 -0400
commit77e3fbae1a866e05219d272f9c3bdbaaa8030854 (patch)
tree3a29927a5f146a6f9b1e40e7469de5a267da2302 /openstackclient/common
parentd5f2c50c0f2de6d741f86113fc5260bdb7895102 (diff)
downloadpython-openstackclient-77e3fbae1a866e05219d272f9c3bdbaaa8030854.tar.gz
Add support for showing limits of a specific project
Looks like the option to show limits of a specific project was missing. This resulted in always using the authenticated project. Change-Id: I512a05df20860ffb52af34f3b64c9eb81dae8c61 Closes-Bug: 1438379
Diffstat (limited to 'openstackclient/common')
-rw-r--r--openstackclient/common/limits.py29
1 files changed, 28 insertions, 1 deletions
diff --git a/openstackclient/common/limits.py b/openstackclient/common/limits.py
index 9c9458ab..4abcf169 100644
--- a/openstackclient/common/limits.py
+++ b/openstackclient/common/limits.py
@@ -21,6 +21,7 @@ import logging
from cliff import lister
from openstackclient.common import utils
+from openstackclient.identity import common as identity_common
class ShowLimits(lister.Lister):
@@ -49,6 +50,18 @@ class ShowLimits(lister.Lister):
action="store_true",
default=False,
help="Include reservations count [only valid with --absolute]")
+ parser.add_argument(
+ '--project',
+ metavar='<project>',
+ help='Show limits for a specific project (name or ID)'
+ ' [only valid with --absolute]',
+ )
+ parser.add_argument(
+ '--domain',
+ metavar='<domain>',
+ help='Domain that owns --project (name or ID)'
+ ' [only valid with --absolute]',
+ )
return parser
def take_action(self, parsed_args):
@@ -57,7 +70,21 @@ class ShowLimits(lister.Lister):
compute_client = self.app.client_manager.compute
volume_client = self.app.client_manager.volume
- compute_limits = compute_client.limits.get(parsed_args.is_reserved)
+ project_id = None
+ if parsed_args.project is not None:
+ identity_client = self.app.client_manager.identity
+ if parsed_args.domain is not None:
+ domain = identity_common.find_domain(identity_client,
+ parsed_args.domain)
+ project_id = utils.find_resource(identity_client.projects,
+ parsed_args.project,
+ domain_id=domain.id).id
+ else:
+ 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()
if parsed_args.is_absolute: