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' ])
@@ -100,6 +96,31 @@ def set_policy(project_id, policy):
100
96
# [END iam_set_policy]
101
97
102
98
99
+ # [START iam_test_permissions]
100
+ def test_permissions (project_id ):
101
+ """Tests IAM permissions of the caller"""
102
+
103
+ credentials = service_account .Credentials .from_service_account_file (
104
+ filename = os .environ ['GOOGLE_APPLICATION_CREDENTIALS' ],
105
+ scopes = ['https://www.googleapis.com/auth/cloud-platform' ])
106
+ service = googleapiclient .discovery .build (
107
+ 'cloudresourcemanager' , 'v1' , credentials = credentials )
108
+
109
+ permissions = {
110
+ "permissions" : [
111
+ "resourcemanager.projects.get" ,
112
+ "resourcemanager.projects.delete"
113
+ ]
114
+ }
115
+
116
+ request = service .projects ().testIamPermissions (
117
+ resource = project_id , body = permissions )
118
+ returnedPermissions = request .execute ()
119
+ print (returnedPermissions )
120
+ return returnedPermissions
121
+ # [END iam_test_permissions]
122
+
123
+
103
124
def main ():
104
125
parser = argparse .ArgumentParser (
105
126
description = __doc__ ,
@@ -140,6 +161,11 @@ def main():
140
161
set_parser .add_argument ('project_id' )
141
162
set_parser .add_argument ('policy' )
142
163
164
+ # Test permissions
165
+ test_permissions_parser = subparsers .add_parser (
166
+ 'test_permissions' , help = get_policy .__doc__ )
167
+ test_permissions_parser .add_argument ('project_id' )
168
+
143
169
args = parser .parse_args ()
144
170
145
171
if args .command == 'get' :
@@ -152,6 +178,8 @@ def main():
152
178
modify_policy_remove_member (args .policy , args .role , args .member )
153
179
elif args .command == 'add_binding' :
154
180
modify_policy_add_role (args .policy , args .role , args .member )
181
+ elif args .command == 'test_permissions' :
182
+ test_permissions (args .project_id )
155
183
156
184
157
185
if __name__ == '__main__' :
0 commit comments