2121from cliff import lister
2222
2323from openstackclient .common import utils
24+ from openstackclient .identity import common as identity_common
2425
2526
2627class 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