@@ -51,11 +51,14 @@ def _get_attrs(client_manager, parsed_args):
5151 attrs ['object_id' ] = object_id
5252
5353 identity_client = client_manager .identity
54- project_id = identity_common .find_project (
55- identity_client ,
56- parsed_args .target_project ,
57- parsed_args .target_project_domain ,
58- ).id
54+ if parsed_args .target_project is not None :
55+ project_id = identity_common .find_project (
56+ identity_client ,
57+ parsed_args .target_project ,
58+ parsed_args .target_project_domain ,
59+ ).id
60+ elif parsed_args .target_all_projects :
61+ project_id = '*'
5962 attrs ['target_tenant' ] = project_id
6063 if parsed_args .project is not None :
6164 project_id = identity_common .find_project (
@@ -96,13 +99,19 @@ def get_parser(self, prog_name):
9699 help = _ ('Action for the RBAC policy '
97100 '("access_as_external" or "access_as_shared")' )
98101 )
99- parser .add_argument (
102+ target_project_group = parser .add_mutually_exclusive_group (
103+ required = True )
104+ target_project_group .add_argument (
100105 '--target-project' ,
101- required = True ,
102106 metavar = "<target-project>" ,
103107 help = _ ('The project to which the RBAC policy '
104108 'will be enforced (name or ID)' )
105109 )
110+ target_project_group .add_argument (
111+ '--target-all-projects' ,
112+ action = 'store_true' ,
113+ help = _ ('Allow creating RBAC policy for all projects.' )
114+ )
106115 parser .add_argument (
107116 '--target-project-domain' ,
108117 metavar = '<target-project-domain>' ,
0 commit comments