
    D                         S r SSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	  SSK
Jr  S rS	 rS
 rS rS rS rS rS rS rS rS rg)z3Client for interaction with LAKE API CRUD DATAPLEX.    )absolute_import)division)unicode_literals)util)storage_api)iam_utilc                     [         R                  " 5       R                  U R                  5       [         R                  " 5       R	                  US9S9n[         R
                  " 5       R                  R                  U5      $ )zSet Iam Policy request.)policy)resourcegoogleIamV1SetIamPolicyRequest)dataplex_apiGetMessageModule1DataplexProjectsLocationsLakesSetIamPolicyRequestRelativeNameGoogleIamV1SetIamPolicyRequestGetClientInstanceprojects_locations_lakesSetIamPolicy)lake_refr
   set_iam_policy_reqs      +lib/googlecloudsdk/api_lib/dataplex/lake.pyr   r      sr    #44 55$$&%1%B%B%D%%V%4 6 6 
 
	'	'	)	B	B	O	O
     c                     [         R                  " 5       R                  U R                  5       S9n[         R                  " 5       R
                  R                  U5      $ )zGet Iam Policy request.)r   )r   r   1DataplexProjectsLocationsLakesGetIamPolicyRequestr   r   r   GetIamPolicy)r   get_iam_policy_reqs     r   r   r   %   sX    #44 55$$& 6 (  
	'	'	)	B	B	O	O
 r   c                     [        U 5      n[        R                  " [        R                  " 5       R
                  X1U5        [        X5      $ )zAdd iam policy binding request.)r   r   AddBindingToIamPolicyr   r   GoogleIamV1Bindingr   r   memberroler
   s       r   AddIamPolicyBindingr#   .   s<    !&
  ##%88&$P	h	''r   c                 \    [        U 5      n[        R                  " X1U5        [        X5      $ )z"Remove iam policy binding request.)r   r   RemoveBindingFromIamPolicyr   r    s       r   RemoveIamPolicyBindingr&   6   s'    !&
%%fd;	h	''r   c                     UR                    H&  nUR                  U:X  d  M  X$R                  ;   d  M&    g   UR                   R                  U " USR	                  U5      S95        g)zAdd service account to dataset.Fz{0})userByEmailr"   T)accessr"   r(   appendformat)access_message_typedataset_policyr!   r"   entrys        r    AddServiceAccountToDatasetPolicyr/   =   s[     $$ezzTf(9(99 % f5<<3EFH	r   c                     [         R                  " U[        R                  " 5       R                  5      n[        X5      $ )z)Set iam policy binding request from file.)r   ParsePolicyFiler   r   GoogleIamV1Policyr   )r   policy_filer
   s      r   SetIamPolicyFromFiler4   H   s4    ####%779& 
h	''r   c                     [         R                  " 5       R                  U 5      n[        R                  " X1U5        [         R                  " 5       R                  X5      $ )z Deauthorize Account for Buckets.)r   StorageClientr   r   r%   r   )
bucket_refr!   r"   r
   s       r   $RemoveServiceAccountFromBucketPolicyr8   P   sE    $$&33J?&
%%fd;		"	"	$	1	1*	EEr   c                     U R                    HA  nUR                  U:X  d  M  XR                  ;   d  M&  U R                   R                  U5          g   g)z Deauthorize Account for Dataset.TF)r)   r"   r(   remove)r-   r!   r"   r.   s       r   %RemoveServiceAccountFromDatasetPolicyr;   W   sE    $$ezzTf(9(99""5) % 
r   c                 B   / nU R                  S5      (       a  UR                  S5        U R                  S5      (       a  UR                  S5        U R                  S5      (       a  UR                  S5        U R                  S5      (       a  UR                  S5        U$ )zCreate Update Mask for Lakes.descriptiondisplay_namedisplayNamelabelsmetastore_servicezmetastore.service)IsSpecifiedr*   )argsupdate_masks     r   GenerateUpdateMaskrE   `   s    +	m$$}%	n%%}%	hx 	)***+	r   c                 j    [         R                  " U [         R                  " 5       R                  5      $ )=Waits for the given google.longrunning.Operation to complete.r   WaitForOperationr   r   	operations    r   rI   rI   n   s,    		&	&$$&??
A Ar   c                 j    [         R                  " U [         R                  " 5       R                  SSS9$ )rG   i'  i )sleep_mspre_start_sleep_msrH   rJ   s    r   WaitForLongOperationrO   u   s0    		&	&$$&??	
! !r   N)__doc__
__future__r   r   r   googlecloudsdk.api_lib.dataplexr   r   googlecloudsdk.api_lib.storager   googlecloudsdk.command_lib.iamr   r   r   r#   r&   r/   r4   r8   r;   rE   rI   rO    r   r   <module>rV      sU    : &  ' @ 6 3(((FA!r   