3636from openstackclient .common import parseractions
3737from openstackclient .common import utils
3838from openstackclient .i18n import _ # noqa
39+ from openstackclient .identity import common as identity_common
3940from openstackclient .network import common
4041
4142
@@ -699,6 +700,11 @@ def get_parser(self, prog_name):
699700 default = bool (int (os .environ .get ("ALL_PROJECTS" , 0 ))),
700701 help = _ ('Include all projects (admin only)' ),
701702 )
703+ parser .add_argument (
704+ '--project' ,
705+ metavar = '<project>' ,
706+ help = "Search by project (admin only) (name or ID)" )
707+ identity_common .add_project_domain_option_to_parser (parser )
702708 parser .add_argument (
703709 '--long' ,
704710 action = 'store_true' ,
@@ -710,6 +716,17 @@ def get_parser(self, prog_name):
710716 def take_action (self , parsed_args ):
711717 self .log .debug ('take_action(%s)' , parsed_args )
712718 compute_client = self .app .client_manager .compute
719+
720+ project_id = None
721+ if parsed_args .project :
722+ identity_client = self .app .client_manager .identity
723+ project_id = identity_common .find_project (
724+ identity_client ,
725+ parsed_args .project ,
726+ parsed_args .project_domain ,
727+ ).id
728+ parsed_args .all_projects = True
729+
713730 search_opts = {
714731 'reservation_id' : parsed_args .reservation_id ,
715732 'ip' : parsed_args .ip ,
@@ -720,6 +737,7 @@ def take_action(self, parsed_args):
720737 'flavor' : parsed_args .flavor ,
721738 'image' : parsed_args .image ,
722739 'host' : parsed_args .host ,
740+ 'tenant_id' : project_id ,
723741 'all_tenants' : parsed_args .all_projects ,
724742 }
725743 self .log .debug ('search options: %s' , search_opts )
0 commit comments