Ë
    €Ï+  ã                   ó€   — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zy)zDProvides helper methods for dealing with JSON files for Spanner IAM.é    )Úabsolute_import)Údivision)Úunicode_literals)Ú	databases)Ú	instances)Úapis)Úiam_utilc                 óÈ   — t        j                  dd«      }t        j                  | «      }t	        j
                  |j                  |||«       t        j                  | |«      S )z0Adds a policy binding to an instance IAM policy.ÚspannerÚv1)r   ÚGetMessagesModuler   ÚGetIamPolicyr	   ÚAddBindingToIamPolicyÚBindingÚ	SetPolicy)Úinstance_refÚmemberÚroleÚmsgsÚpolicys        ú-lib/googlecloudsdk/command_lib/spanner/iam.pyÚAddInstanceIamPolicyBindingr      óO   € ä	×	Ñ	 	¨4Ó	0€$Ü×!Ñ! ,Ó/€&Ü
× Ñ  §¡¨v°v¸tÔDÜ	×	Ñ	˜\¨6Ó	2Ð2ó    c                 ó¢   — t        j                  dd«      }t        j                  ||j                  «      \  }}t        j                  | ||«      S )z#Sets the IAM policy on an instance.r   r   )r   r   r	   ÚParsePolicyFileWithUpdateMaskÚPolicyr   r   )r   r   r   Ú
field_masks       r   ÚSetInstanceIamPolicyr   #   sH   € ä	×	Ñ	 	¨4Ó	0€$Ü×=Ñ=¸fØ>B¿k¹kóKÑ€&ˆ*ä	×	Ñ	˜\¨6°:Ó	>Ð>r   c                 ó†   — t        j                  | «      }t        j                  |||«       t        j                  | |«      S )z5Removes a policy binding from an instance IAM policy.)r   r   r	   ÚRemoveBindingFromIamPolicyr   )r   r   r   r   s       r   ÚRemoveInstanceIamPolicyBindingr"   +   ó7   € ä×!Ñ! ,Ó/€&Ü
×%Ñ% f¨f°dÔ;Ü	×	Ñ	˜\¨6Ó	2Ð2r   c                 óÈ   — t        j                  dd«      }t        j                  | «      }t	        j
                  |j                  |||«       t        j                  | |«      S )z/Adds a policy binding to a database IAM policy.r   r   )r   r   r   r   r	   r   r   r   )Údatabase_refr   r   r   r   s        r   ÚAddDatabaseIamPolicyBindingr&   2   r   r   c                 óš   — t        j                  dd«      }t        j                  ||j                  «      }t        j                  | |«      S )z"Sets the IAM policy on a database.r   r   )r   r   r	   ÚParsePolicyFiler   r   r   )r%   r   r   s      r   ÚSetDatabaseIamPolicyr)   :   s=   € ä	×	Ñ	 	¨4Ó	0€$Ü×#Ñ# F¨D¯K©KÓ8€&Ü	×	Ñ	˜\¨6Ó	2Ð2r   c                 ó†   — t        j                  | «      }t        j                  |||«       t        j                  | |«      S )z4Removes a policy binding from a database IAM policy.)r   r   r	   r!   r   )r%   r   r   r   s       r   ÚRemoveDatabaseIamPolicyBindingr+   A   r#   r   N)Ú__doc__Ú
__future__r   r   r   Úgooglecloudsdk.api_lib.spannerr   r   Úgooglecloudsdk.api_lib.utilr   Úgooglecloudsdk.command_lib.iamr	   r   r   r"   r&   r)   r+   © r   r   Ú<module>r2      s>   ðñ Kå &Ý Ý 'å 4Ý 4Ý ,Ý 3ò3ò?ò3ò3ò3ó3r   