Skip to content

Commit 77e3fba

Browse files
author
Steve Martinelli
committed
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
1 parent d5f2c50 commit 77e3fba

2 files changed

Lines changed: 38 additions & 1 deletion

File tree

doc/source/command-objects/limits.rst

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ Show compute and volume limits
1616
1717
os limits show
1818
--absolute [--reserved] | --rate
19+
[--project <project>]
20+
[--domain <domain>]
1921
2022
.. option:: --absolute
2123

@@ -28,3 +30,11 @@ Show compute and volume limits
2830
.. option:: --reserved
2931

3032
Include reservations count [only valid with :option:`--absolute`]
33+
34+
.. option:: --project <project>
35+
36+
Show limits for a specific project (name or ID) [only valid with --absolute]
37+
38+
.. option:: --domain <domain>
39+
40+
Domain that owns --project (name or ID) [only valid with --absolute]

openstackclient/common/limits.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from cliff import lister
2222

2323
from openstackclient.common import utils
24+
from openstackclient.identity import common as identity_common
2425

2526

2627
class ShowLimits(lister.Lister):
@@ -49,6 +50,18 @@ def get_parser(self, prog_name):
4950
action="store_true",
5051
default=False,
5152
help="Include reservations count [only valid with --absolute]")
53+
parser.add_argument(
54+
'--project',
55+
metavar='<project>',
56+
help='Show limits for a specific project (name or ID)'
57+
' [only valid with --absolute]',
58+
)
59+
parser.add_argument(
60+
'--domain',
61+
metavar='<domain>',
62+
help='Domain that owns --project (name or ID)'
63+
' [only valid with --absolute]',
64+
)
5265
return parser
5366

5467
def take_action(self, parsed_args):
@@ -57,7 +70,21 @@ def take_action(self, parsed_args):
5770
compute_client = self.app.client_manager.compute
5871
volume_client = self.app.client_manager.volume
5972

60-
compute_limits = compute_client.limits.get(parsed_args.is_reserved)
73+
project_id = None
74+
if parsed_args.project is not None:
75+
identity_client = self.app.client_manager.identity
76+
if parsed_args.domain is not None:
77+
domain = identity_common.find_domain(identity_client,
78+
parsed_args.domain)
79+
project_id = utils.find_resource(identity_client.projects,
80+
parsed_args.project,
81+
domain_id=domain.id).id
82+
else:
83+
project_id = utils.find_resource(identity_client.projects,
84+
parsed_args.project).id
85+
86+
compute_limits = compute_client.limits.get(parsed_args.is_reserved,
87+
tenant_id=project_id)
6188
volume_limits = volume_client.limits.get()
6289

6390
if parsed_args.is_absolute:

0 commit comments

Comments
 (0)