in analytics-hub/snippets/create_listing_python/main.py [0:0]
def create_set_iam_policy_request(client: bigquery_analyticshub_v1.AnalyticsHubServiceClient, listing_id: str, role: str, member: str):
existingPolicy = listing_get_iam_policy(client, listing_id)
existingPolicyDict = MessageToDict(existingPolicy)
if existingPolicyDict:
policy = {
"etag": base64.b64decode(existingPolicyDict['etag']),
"bindings": []
}
bindingForRoleFound = False
if 'bindings' in existingPolicyDict:
policy['bindings'] = existingPolicyDict['bindings'].copy()
for binding in policy['bindings']:
if binding['role'] == role:
binding['members'].append(member)
bindingForRoleFound = True
if not bindingForRoleFound:
policy['bindings'].append({
"role": role,
"members": [ member ]
})
request = iam_policy_pb2.SetIamPolicyRequest(
resource=listing_id,
policy=policy
)
return request
return False