
    %                     z    S 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S rS rS rS rg)z4Client for interaction with Asset API CRUD DATAPLEX.    )util)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GetMessageModule<DataplexProjectsLocationsLakesZonesAssetsSetIamPolicyRequestRelativeNameGoogleIamV1SetIamPolicyRequestGetClientInstance%projects_locations_lakes_zones_assetsSetIamPolicy)	asset_refr   set_iam_policy_reqs      ,lib/googlecloudsdk/api_lib/dataplex/asset.pyr   r      sr    #44 @@%%'%1%B%B%D%%V%4 A 6 
 
	'	' 
)),,7I*JK    c                     [         R                  " 5       R                  U R                  5       S9n[         R                  " 5       R
                  R                  U5      $ )zGet Iam Policy request.)r   )r	   r
   <DataplexProjectsLocationsLakesZonesAssetsGetIamPolicyRequestr   r   r   GetIamPolicy)r   get_iam_policy_reqs     r   r   r   !   sX    #44 @@%%' A )  
	'	' 
)),,7I*JK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	i	((r   c                 \    [        U 5      n[        R                  " X1U5        [        X5      $ )z"Remove IAM policy binding request.)r   r   RemoveBindingFromIamPolicyr   )zone_refr   r   r   s       r   RemoveIamPolicyBindingr"   2   s'    !&
%%fd;	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   SetIamPolicyFromFiler'   9   s4    ####%779& 
i	((r   c                    [         R                  " 5       nUR                  nUR                  U R                  UR	                  U R
                  5      S9nU R                  S5      (       a   UR                  U R                  5      Ul	        UR                  U R                  U R                  [         R                  " UR                  U 5      US9n[        U 5      nXQR                  5       :w  a  [!        USU5        U$ )z)Create Asset for Message Create Requests.)nametyperesource_read_access_mode)descriptiondisplayNamelabelsresourceSpecdiscoverySpec)r	   r
   &GoogleCloudDataplexV1AssetResourceSpecresource_nameTypeValueValuesEnumresource_typeIsSpecifiedReadAccessModeValueValuesEnumr+   readAccessModeGoogleCloudDataplexV1Assetr,   display_nameCreateLabelsGenerateDiscoverySpec'GoogleCloudDataplexV1AssetDiscoverySpecsetattr)argsmoduleresource_spec_fieldresource_specrequest	discoverys         r   GenerateAssetForCreateRequestrD   A   s    ((*&EE??2243E3EF @ - 
12299**	
  
 --""##&&v'H'H$O 	 . "'
 $D))@@BBG_i0	.r   c                     [        U 5      $ N)rD   r>   s    r   "GenerateAssetForCreateRequestAlpharH   Z       	&t	,,r   c           	      r   [         R                  " 5       nUR                  U R                  U R                  [         R
                  " UR                  U 5      [        U 5      S9nU R                  S5      (       a=  [        USUR                  UR                  R                  U R                  5      S95        U$ )z)Create Asset for Message Update Requests.)r,   r-   r.   r0   r+   r/   )r7   )r	   r
   r8   r,   r9   r:   r;   r5   r=   r1   r6   r+   )r>   r?   assets      r   GenerateAssetForUpdateRequestrL   ^   s    ((*&

+
+""##&&v'H'H$O)$/	 , % 
12255==[[22 	6 	

 
,r   c                     [        U 5      $ rF   )rL   rG   s    r   "GenerateAssetForUpdateRequestAlpharN   v   rI   r   c                 b   [         R                  " 5       nUR                  U R                  U R                  U R
                  S9nU R                  (       a  U R                  Ul        [        U 5      nX1R                  5       :w  a  X2l
        [        U 5      nXAR                  5       :w  a  XBl        U$ )z!Create Discovery Spec for Assets.)enabledincludePatternsexcludePatterns)r	   r
   r<   discovery_enableddiscovery_include_patternsdiscovery_exclude_patternsdiscovery_schedulescheduleGenerateCsvOptions1GoogleCloudDataplexV1AssetDiscoverySpecCsvOptions
csvOptionsGenerateJsonOptions2GoogleCloudDataplexV1AssetDiscoverySpecJsonOptionsjsonOptions)r>   r?   discovery_speccsv_optionsjson_optionss        r   r;   r;   z   s    ((*&AA$$5555 B 7.
 
"55N"4(+LLNN +$T*,NN  !-	r   c                     [         R                  " 5       R                  U R                  U R                  U R
                  U R                  S9$ )N)	delimiterdisableTypeInferenceencoding
headerRows)r	   r
   rY   csv_delimitercsv_disable_type_inferencecsv_encodingcsv_header_rowsrG   s    r   rX   rX      sI    		&	& 
55""::  %%	 6 ''r   c                 p    [         R                  " 5       R                  U R                  U R                  S9$ )N)rd   rc   )r	   r
   r\   json_encodingjson_disable_type_inferencerG   s    r   r[   r[      s7    		&	& 
66!!;; 7 ==r   c                     [        U 5      $ rF   )GenerateUpdateMaskrG   s    r   GenerateUpdateMaskAlpharo      s    	D	!!r   c                 N   / 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 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 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 R                  S5      (       a  UR                  S5        U R                  S5      (       a  UR                  S5        U$ )zCreate Update Mask for Assets.r,   r9   r-   r.   rS   zdiscoverySpec.enabledrT   zdiscoverySpec.includePatternsrU   zdiscoverySpec.excludePatternsrV   zdiscoverySpec.scheduleri   z#discoverySpec.csvOptions.headerRowsrf   z"discoverySpec.csvOptions.delimiterrh   z!discoverySpec.csvOptions.encodingrg   z-discoverySpec.csvOptions.disableTypeInferencerk   z"discoverySpec.jsonOptions.encodingrl   z.discoverySpec.jsonOptions.disableTypeInferencer+   zresourceSpec.readAccessMode)r5   append)r>   update_masks     r   rn   rn      s   +	m$$}%	n%%}%	hx 	)**./	23367	23367	*++/0	'((<=	o&&;<	n%%:;	233FG	o&&;<	344GH	12245	r   c                 j    [         R                  " U [         R                  " 5       R                  5      $ )z=Waits for the given google.longrunning.Operation to complete.)r	   WaitForOperationr   r   )	operations    r   rt   rt      s,    		&	&$$&LL
N Nr   N)__doc__googlecloudsdk.api_lib.dataplexr   r	   googlecloudsdk.command_lib.iamr   r   r   r   r"   r'   rD   rH   rL   rN   r;   rX   r[   ro   rn   rt    r   r   <module>rz      sb    ; A 3KK)()2-0-0'="DNr   