26
26
27
27
28
28
# [START iam_get_policy]
29
- def get_policy (project_id ):
29
+ def get_policy (project_id , version = 1 ):
30
30
"""Gets IAM policy for a project."""
31
31
32
32
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
+ )
35
36
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
+ )
39
47
print (policy )
40
48
return policy
49
+
50
+
41
51
# [END iam_get_policy]
42
52
43
53
44
54
# [START iam_modify_policy_add_member]
45
55
def modify_policy_add_member (policy , role , member ):
46
56
"""Adds a new member to a role binding."""
47
57
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 )
50
60
print (binding )
51
61
return policy
62
+
63
+
52
64
# [END iam_modify_policy_add_member]
53
65
54
66
55
67
# [START iam_modify_policy_add_role]
56
68
def modify_policy_add_role (policy , role , member ):
57
69
"""Adds a new role binding to a policy."""
58
70
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 )
64
73
print (policy )
65
74
return policy
75
+
76
+
66
77
# [END iam_modify_policy_add_role]
67
78
68
79
69
80
# [START iam_modify_policy_remove_member]
70
81
def modify_policy_remove_member (policy , role , member ):
71
82
"""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 )
75
86
print (binding )
76
87
return policy
88
+
89
+
77
90
# [END iam_modify_policy_remove_member]
78
91
79
92
@@ -82,17 +95,22 @@ def set_policy(project_id, policy):
82
95
"""Sets IAM policy for a project."""
83
96
84
97
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
+ )
87
101
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
+ )
94
110
print (policy )
95
111
return policy
112
+
113
+
96
114
# [END iam_set_policy]
97
115
98
116
@@ -101,86 +119,94 @@ def test_permissions(project_id):
101
119
"""Tests IAM permissions of the caller"""
102
120
103
121
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
+ )
106
125
service = googleapiclient .discovery .build (
107
- 'cloudresourcemanager' , 'v1' , credentials = credentials )
126
+ "cloudresourcemanager" , "v1" , credentials = credentials
127
+ )
108
128
109
129
permissions = {
110
130
"permissions" : [
111
131
"resourcemanager.projects.get" ,
112
- "resourcemanager.projects.delete"
132
+ "resourcemanager.projects.delete" ,
113
133
]
114
134
}
115
135
116
136
request = service .projects ().testIamPermissions (
117
- resource = project_id , body = permissions )
137
+ resource = project_id , body = permissions
138
+ )
118
139
returnedPermissions = request .execute ()
119
140
print (returnedPermissions )
120
141
return returnedPermissions
142
+
143
+
121
144
# [END iam_test_permissions]
122
145
123
146
124
147
def main ():
125
148
parser = argparse .ArgumentParser (
126
149
description = __doc__ ,
127
- formatter_class = argparse .RawDescriptionHelpFormatter )
150
+ formatter_class = argparse .RawDescriptionHelpFormatter ,
151
+ )
128
152
129
- subparsers = parser .add_subparsers (dest = ' command' )
153
+ subparsers = parser .add_subparsers (dest = " command" )
130
154
131
155
# 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" )
135
158
136
159
# Modify: add member
137
160
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" )
142
166
143
167
# Modify: add role
144
168
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" )
150
175
151
176
# Modify: remove member
152
177
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" )
157
183
158
184
# 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" )
163
188
164
189
# Test permissions
165
190
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" )
168
194
169
195
args = parser .parse_args ()
170
196
171
- if args .command == ' get' :
197
+ if args .command == " get" :
172
198
get_policy (args .project_id )
173
- elif args .command == ' set' :
199
+ elif args .command == " set" :
174
200
set_policy (args .project_id , args .policy )
175
- elif args .command == ' add_member' :
201
+ elif args .command == " add_member" :
176
202
modify_policy_add_member (args .policy , args .role , args .member )
177
- elif args .command == ' remove_member' :
203
+ elif args .command == " remove_member" :
178
204
modify_policy_remove_member (args .policy , args .role , args .member )
179
- elif args .command == ' add_binding' :
205
+ elif args .command == " add_binding" :
180
206
modify_policy_add_role (args .policy , args .role , args .member )
181
- elif args .command == ' test_permissions' :
207
+ elif args .command == " test_permissions" :
182
208
test_permissions (args .project_id )
183
209
184
210
185
- if __name__ == ' __main__' :
211
+ if __name__ == " __main__" :
186
212
main ()
0 commit comments