summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/source/command-objects/limits.rst10
-rw-r--r--openstackclient/common/limits.py29
2 files changed, 38 insertions, 1 deletions
diff --git a/doc/source/command-objects/limits.rst b/doc/source/command-objects/limits.rst
index 1eae4889..0d466af6 100644
--- a/doc/source/command-objects/limits.rst
+++ b/doc/source/command-objects/limits.rst
@@ -16,6 +16,8 @@ Show compute and volume limits
os limits show
--absolute [--reserved] | --rate
+ [--project <project>]
+ [--domain <domain>]
.. option:: --absolute
@@ -28,3 +30,11 @@ Show compute and volume limits
.. option:: --reserved
Include reservations count [only valid with :option:`--absolute`]
+
+.. option:: --project <project>
+
+ Show limits for a specific project (name or ID) [only valid with --absolute]
+
+.. option:: --domain <domain>
+
+ Domain that owns --project (name or ID) [only valid with --absolute]
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: