1
- # !/usr/bin/env python
2
- #
3
1
# Copyright 2018 Google LLC
4
2
#
5
3
# Licensed under the Apache License, Version 2.0 (the "License");
31
29
def get_policy (project_id ):
32
30
"""Gets IAM policy for a project."""
33
31
34
- # pylint: disable=no-member
35
32
credentials = service_account .Credentials .from_service_account_file (
36
33
filename = os .environ ['GOOGLE_APPLICATION_CREDENTIALS' ],
37
34
scopes = ['https://www.googleapis.com/auth/cloud-platform' ])
@@ -84,7 +81,6 @@ def modify_policy_remove_member(policy, role, member):
84
81
def set_policy (project_id , policy ):
85
82
"""Sets IAM policy for a project."""
86
83
87
- # pylint: disable=no-member
88
84
credentials = service_account .Credentials .from_service_account_file (
89
85
filename = os .environ ['GOOGLE_APPLICATION_CREDENTIALS' ],
90
86
scopes = ['https://www.googleapis.com/auth/cloud-platform' ])
@@ -99,6 +95,32 @@ def set_policy(project_id, policy):
99
95
return policy
100
96
# [END iam_set_policy]
101
97
98
+ # [START iam_test_permissions]
99
+
100
+
101
+ def test_permissions (project_id ):
102
+ """Tests IAM permissions of the caller"""
103
+
104
+ credentials = service_account .Credentials .from_service_account_file (
105
+ filename = os .environ ['GOOGLE_APPLICATION_CREDENTIALS' ],
106
+ scopes = ['https://www.googleapis.com/auth/cloud-platform' ])
107
+ service = googleapiclient .discovery .build (
108
+ 'cloudresourcemanager' , 'v1' , credentials = credentials )
109
+
110
+ permissions = {
111
+ "permissions" : [
112
+ "resourcemanager.projects.get" ,
113
+ "resourcemanager.projects.delete"
114
+ ]
115
+ }
116
+
117
+ request = service .projects ().testIamPermissions (
118
+ resource = project_id , body = permissions )
119
+ returnedPermissions = request .execute ()
120
+ print (returnedPermissions )
121
+ return returnedPermissions
122
+ # [END iam_test_permissions]
123
+
102
124
103
125
def main ():
104
126
parser = argparse .ArgumentParser (
@@ -140,6 +162,11 @@ def main():
140
162
set_parser .add_argument ('project_id' )
141
163
set_parser .add_argument ('policy' )
142
164
165
+ # Test permissions
166
+ test_permissions_parser = subparsers .add_parser (
167
+ 'test_permissions' , help = get_policy .__doc__ )
168
+ test_permissions_parser .add_argument ('project_id' )
169
+
143
170
args = parser .parse_args ()
144
171
145
172
if args .command == 'get' :
@@ -152,6 +179,8 @@ def main():
152
179
modify_policy_remove_member (args .policy , args .role , args .member )
153
180
elif args .command == 'add_binding' :
154
181
modify_policy_add_role (args .policy , args .role , args .member )
182
+ elif args .command == 'test_permissions' :
183
+ test_permissions (args .project_id )
155
184
156
185
157
186
if __name__ == '__main__' :
0 commit comments