24
24
import google .api_core .exceptions
25
25
import google .api_core .retry
26
26
from google .cloud import bigquery_connection_v1 , resourcemanager_v3
27
- from google .iam .v1 import iam_policy_pb2 , policy_pb2
28
27
29
28
logger = logging .getLogger (__name__ )
30
29
@@ -161,7 +160,9 @@ def _ensure_iam_binding(
161
160
project = f"projects/{ project_id } "
162
161
service_account = f"serviceAccount:{ service_account_id } "
163
162
role = f"roles/{ iam_role } "
164
- request = iam_policy_pb2 .GetIamPolicyRequest (resource = project )
163
+ request = {
164
+ "resource" : project
165
+ } # Use a dictionary to avoid problematic google.iam namespace package.
165
166
policy = self ._cloud_resource_manager_client .get_iam_policy (request = request )
166
167
167
168
# Check if the binding already exists, and if does, do nothing more
@@ -171,9 +172,15 @@ def _ensure_iam_binding(
171
172
return
172
173
173
174
# Create a new binding
174
- new_binding = policy_pb2 .Binding (role = role , members = [service_account ])
175
+ new_binding = {
176
+ "role" : role ,
177
+ "members" : [service_account ],
178
+ } # Use a dictionary to avoid problematic google.iam namespace package.
175
179
policy .bindings .append (new_binding )
176
- request = iam_policy_pb2 .SetIamPolicyRequest (resource = project , policy = policy )
180
+ request = {
181
+ "resource" : project ,
182
+ "policy" : policy ,
183
+ } # Use a dictionary to avoid problematic google.iam namespace package.
177
184
self ._cloud_resource_manager_client .set_iam_policy (request = request )
178
185
179
186
# We would wait for the IAM policy change to take effect
0 commit comments