
                         n    S 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.    )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#   3   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   SetIamPolicyFromFiler1   E   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   $RemoveServiceAccountFromBucketPolicyr5   M   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   %RemoveServiceAccountFromDatasetPolicyr8   T   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   GenerateUpdateMaskrB   ]   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   rF   rF   k   s,    		&	&$$&??
A Ar   c                 j    [         R                  " U [         R                  " 5       R                  SSS9$ )rD   i'  i )sleep_mspre_start_sleep_msrE   rG   s    r   WaitForLongOperationrL   r   s0    		&	&$$&??	
! !r   N)__doc__googlecloudsdk.api_lib.dataplexr   r
   googlecloudsdk.api_lib.storager   googlecloudsdk.command_lib.iamr   r   r   r    r#   r,   r1   r5   r8   rB   rF   rL    r   r   <module>rR      sO    : A 6 3(((FA!r   