
    D                         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 Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zy)z3Client for interaction with LAKE API CRUD DATAPLEX.    )absolute_import)division)unicode_literals)util)storage_api)iam_utilc                    t        j                         j                  | j                         t        j                         j	                  |            }t        j
                         j                  j                  |      S )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                     t        j                         j                  | j                               }t        j                         j
                  j                  |      S )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                     t        |       }t        j                  t        j                         j
                  |||       t        | |      S )zAdd iam policy binding request.)r   r   AddBindingToIamPolicyr   r   GoogleIamV1Bindingr   r   memberroler
   s       r   AddIamPolicyBindingr#   .   s@    !&
  ##%88&&$P	h	''r   c                 ^    t        |       }t        j                  |||       t        | |      S )z"Remove iam policy binding request.)r   r   RemoveBindingFromIamPolicyr   r    s       r   RemoveIamPolicyBindingr&   6   s+    !&
%%ffd;	h	''r   c                     |j                   D ]"  }|j                  |k(  s||j                  v s" y |j                   j                   | |dj	                  |                   y)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                 ~    t        j                  |t        j                         j                        }t        | |      S )z)Set iam policy binding request from file.)r   ParsePolicyFiler   r   GoogleIamV1Policyr   )r   policy_filer
   s      r   SetIamPolicyFromFiler4   H   s6    ####%779& 
h	''r   c                     t        j                         j                  |       }t        j                  |||       t        j                         j                  | |      S )z Deauthorize Account for Buckets.)r   StorageClientr   r   r%   r   )
bucket_refr!   r"   r
   s       r   $RemoveServiceAccountFromBucketPolicyr8   P   sI    $$&33J?&
%%ffd;		"	"	$	1	1*f	EEr   c                     | j                   D ]=  }|j                  |k(  s||j                  v s"| j                   j                  |        y y)z Deauthorize Account for Dataset.TF)r)   r"   r(   remove)r-   r!   r"   r.   s       r   %RemoveServiceAccountFromDatasetPolicyr;   W   sG    $$ezzTf(9(99""5) % 
r   c                    g }| j                  d      r|j                  d       | j                  d      r|j                  d       | j                  d      r|j                  d       | j                  d      r|j                  d       |S )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                 f    t        j                  | t        j                         j                        S )=Waits for the given google.longrunning.Operation to complete.r   WaitForOperationr   r   	operations    r   rI   rI   n   s,    		&	&$$&??
A Ar   c                 l    t        j                  | t        j                         j                  dd      S )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   