2626
2727
2828# [START iam_get_policy]
29- def get_policy (project_id ):
29+ def get_policy (project_id , version = 1 ):
3030 """Gets IAM policy for a project."""
3131
3232 credentials = service_account .Credentials .from_service_account_file (
33- filename = os .environ ['GOOGLE_APPLICATION_CREDENTIALS' ],
34- scopes = ['https://www.googleapis.com/auth/cloud-platform' ])
33+ filename = os .environ ["GOOGLE_APPLICATION_CREDENTIALS" ],
34+ scopes = ["https://www.googleapis.com/auth/cloud-platform" ],
35+ )
3536 service = googleapiclient .discovery .build (
36- 'cloudresourcemanager' , 'v1' , credentials = credentials )
37- policy = service .projects ().getIamPolicy (
38- resource = project_id , body = {}).execute ()
37+ "cloudresourcemanager" , "v1" , credentials = credentials
38+ )
39+ policy = (
40+ service .projects ()
41+ .getIamPolicy (
42+ resource = project_id ,
43+ body = {"options" : {"requestedPolicyVersion" : version }},
44+ )
45+ .execute ()
46+ )
3947 print (policy )
4048 return policy
49+
50+
4151# [END iam_get_policy]
4252
4353
4454# [START iam_modify_policy_add_member]
4555def modify_policy_add_member (policy , role , member ):
4656 """Adds a new member to a role binding."""
4757
48- binding = next (b for b in policy [' bindings' ] if b [' role' ] == role )
49- binding [' members' ].append (member )
58+ binding = next (b for b in policy [" bindings" ] if b [" role" ] == role )
59+ binding [" members" ].append (member )
5060 print (binding )
5161 return policy
62+
63+
5264# [END iam_modify_policy_add_member]
5365
5466
5567# [START iam_modify_policy_add_role]
5668def modify_policy_add_role (policy , role , member ):
5769 """Adds a new role binding to a policy."""
5870
59- binding = {
60- 'role' : role ,
61- 'members' : [member ]
62- }
63- policy ['bindings' ].append (binding )
71+ binding = {"role" : role , "members" : [member ]}
72+ policy ["bindings" ].append (binding )
6473 print (policy )
6574 return policy
75+
76+
6677# [END iam_modify_policy_add_role]
6778
6879
6980# [START iam_modify_policy_remove_member]
7081def modify_policy_remove_member (policy , role , member ):
7182 """Removes a member from a role binding."""
72- binding = next (b for b in policy [' bindings' ] if b [' role' ] == role )
73- if ' members' in binding and member in binding [' members' ]:
74- binding [' members' ].remove (member )
83+ binding = next (b for b in policy [" bindings" ] if b [" role" ] == role )
84+ if " members" in binding and member in binding [" members" ]:
85+ binding [" members" ].remove (member )
7586 print (binding )
7687 return policy
88+
89+
7790# [END iam_modify_policy_remove_member]
7891
7992
@@ -82,17 +95,22 @@ def set_policy(project_id, policy):
8295 """Sets IAM policy for a project."""
8396
8497 credentials = service_account .Credentials .from_service_account_file (
85- filename = os .environ ['GOOGLE_APPLICATION_CREDENTIALS' ],
86- scopes = ['https://www.googleapis.com/auth/cloud-platform' ])
98+ filename = os .environ ["GOOGLE_APPLICATION_CREDENTIALS" ],
99+ scopes = ["https://www.googleapis.com/auth/cloud-platform" ],
100+ )
87101 service = googleapiclient .discovery .build (
88- 'cloudresourcemanager' , 'v1' , credentials = credentials )
89-
90- policy = service .projects ().setIamPolicy (
91- resource = project_id , body = {
92- 'policy' : policy
93- }).execute ()
102+ "cloudresourcemanager" , "v1" , credentials = credentials
103+ )
104+
105+ policy = (
106+ service .projects ()
107+ .setIamPolicy (resource = project_id , body = {"policy" : policy })
108+ .execute ()
109+ )
94110 print (policy )
95111 return policy
112+
113+
96114# [END iam_set_policy]
97115
98116
@@ -101,86 +119,94 @@ def test_permissions(project_id):
101119 """Tests IAM permissions of the caller"""
102120
103121 credentials = service_account .Credentials .from_service_account_file (
104- filename = os .environ ['GOOGLE_APPLICATION_CREDENTIALS' ],
105- scopes = ['https://www.googleapis.com/auth/cloud-platform' ])
122+ filename = os .environ ["GOOGLE_APPLICATION_CREDENTIALS" ],
123+ scopes = ["https://www.googleapis.com/auth/cloud-platform" ],
124+ )
106125 service = googleapiclient .discovery .build (
107- 'cloudresourcemanager' , 'v1' , credentials = credentials )
126+ "cloudresourcemanager" , "v1" , credentials = credentials
127+ )
108128
109129 permissions = {
110130 "permissions" : [
111131 "resourcemanager.projects.get" ,
112- "resourcemanager.projects.delete"
132+ "resourcemanager.projects.delete" ,
113133 ]
114134 }
115135
116136 request = service .projects ().testIamPermissions (
117- resource = project_id , body = permissions )
137+ resource = project_id , body = permissions
138+ )
118139 returnedPermissions = request .execute ()
119140 print (returnedPermissions )
120141 return returnedPermissions
142+
143+
121144# [END iam_test_permissions]
122145
123146
124147def main ():
125148 parser = argparse .ArgumentParser (
126149 description = __doc__ ,
127- formatter_class = argparse .RawDescriptionHelpFormatter )
150+ formatter_class = argparse .RawDescriptionHelpFormatter ,
151+ )
128152
129- subparsers = parser .add_subparsers (dest = ' command' )
153+ subparsers = parser .add_subparsers (dest = " command" )
130154
131155 # Get
132- get_parser = subparsers .add_parser (
133- 'get' , help = get_policy .__doc__ )
134- get_parser .add_argument ('project_id' )
156+ get_parser = subparsers .add_parser ("get" , help = get_policy .__doc__ )
157+ get_parser .add_argument ("project_id" )
135158
136159 # Modify: add member
137160 modify_member_parser = subparsers .add_parser (
138- 'modify_member' , help = get_policy .__doc__ )
139- modify_member_parser .add_argument ('project_id' )
140- modify_member_parser .add_argument ('role' )
141- modify_member_parser .add_argument ('member' )
161+ "modify_member" , help = get_policy .__doc__
162+ )
163+ modify_member_parser .add_argument ("project_id" )
164+ modify_member_parser .add_argument ("role" )
165+ modify_member_parser .add_argument ("member" )
142166
143167 # Modify: add role
144168 modify_role_parser = subparsers .add_parser (
145- 'modify_role' , help = get_policy .__doc__ )
146- modify_role_parser .add_argument ('project_id' )
147- modify_role_parser .add_argument ('project_id' )
148- modify_role_parser .add_argument ('role' )
149- modify_role_parser .add_argument ('member' )
169+ "modify_role" , help = get_policy .__doc__
170+ )
171+ modify_role_parser .add_argument ("project_id" )
172+ modify_role_parser .add_argument ("project_id" )
173+ modify_role_parser .add_argument ("role" )
174+ modify_role_parser .add_argument ("member" )
150175
151176 # Modify: remove member
152177 modify_member_parser = subparsers .add_parser (
153- 'modify_member' , help = get_policy .__doc__ )
154- modify_member_parser .add_argument ('project_id' )
155- modify_member_parser .add_argument ('role' )
156- modify_member_parser .add_argument ('member' )
178+ "modify_member" , help = get_policy .__doc__
179+ )
180+ modify_member_parser .add_argument ("project_id" )
181+ modify_member_parser .add_argument ("role" )
182+ modify_member_parser .add_argument ("member" )
157183
158184 # Set
159- set_parser = subparsers .add_parser (
160- 'set' , help = set_policy .__doc__ )
161- set_parser .add_argument ('project_id' )
162- set_parser .add_argument ('policy' )
185+ set_parser = subparsers .add_parser ("set" , help = set_policy .__doc__ )
186+ set_parser .add_argument ("project_id" )
187+ set_parser .add_argument ("policy" )
163188
164189 # Test permissions
165190 test_permissions_parser = subparsers .add_parser (
166- 'test_permissions' , help = get_policy .__doc__ )
167- test_permissions_parser .add_argument ('project_id' )
191+ "test_permissions" , help = get_policy .__doc__
192+ )
193+ test_permissions_parser .add_argument ("project_id" )
168194
169195 args = parser .parse_args ()
170196
171- if args .command == ' get' :
197+ if args .command == " get" :
172198 get_policy (args .project_id )
173- elif args .command == ' set' :
199+ elif args .command == " set" :
174200 set_policy (args .project_id , args .policy )
175- elif args .command == ' add_member' :
201+ elif args .command == " add_member" :
176202 modify_policy_add_member (args .policy , args .role , args .member )
177- elif args .command == ' remove_member' :
203+ elif args .command == " remove_member" :
178204 modify_policy_remove_member (args .policy , args .role , args .member )
179- elif args .command == ' add_binding' :
205+ elif args .command == " add_binding" :
180206 modify_policy_add_role (args .policy , args .role , args .member )
181- elif args .command == ' test_permissions' :
207+ elif args .command == " test_permissions" :
182208 test_permissions (args .project_id )
183209
184210
185- if __name__ == ' __main__' :
211+ if __name__ == " __main__" :
186212 main ()
0 commit comments