
                             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 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.    )absolute_import)division)unicode_literals)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%   5   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*   <   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   GenerateAssetForCreateRequestrG   D   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)rG   rA   s    r   "GenerateAssetForCreateRequestAlpharK   ]       	&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/   r0   r1   r3   r.   r2   )r:   )r   r   r;   r/   r<   r=   r>   r8   r@   r4   r9   r.   )rA   rB   assets      r   GenerateAssetForUpdateRequestrO   a   s    ((*&

+
+""##&&v'H'H$O)$/	 , % 
12255==[[22 	6 	

 
,r   c                     [        U 5      $ rI   )rO   rJ   s    r   "GenerateAssetForUpdateRequestAlpharQ   y   rL   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)rA   rB   discovery_speccsv_optionsjson_optionss        r   r>   r>   }   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   r\   csv_delimitercsv_disable_type_inferencecsv_encodingcsv_header_rowsrJ   s    r   r[   r[      sI    		&	& 
55""::  %%	 6 ''r   c                 p    [         R                  " 5       R                  U R                  U R                  S9$ )N)rg   rf   )r   r   r_   json_encodingjson_disable_type_inferencerJ   s    r   r^   r^      s7    		&	& 
66!!;; 7 ==r   c                     [        U 5      $ rI   )GenerateUpdateMaskrJ   s    r   GenerateUpdateMaskAlpharr      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/   r<   r0   r1   rV   zdiscoverySpec.enabledrW   zdiscoverySpec.includePatternsrX   zdiscoverySpec.excludePatternsrY   zdiscoverySpec.schedulerl   z#discoverySpec.csvOptions.headerRowsri   z"discoverySpec.csvOptions.delimiterrk   z!discoverySpec.csvOptions.encodingrj   z-discoverySpec.csvOptions.disableTypeInferencern   z"discoverySpec.jsonOptions.encodingro   z.discoverySpec.jsonOptions.disableTypeInferencer.   zresourceSpec.readAccessMode)r8   append)rA   update_masks     r   rq   rq      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   rw   rw      s,    		&	&$$&LL
N Nr   N)__doc__
__future__r   r   r   googlecloudsdk.api_lib.dataplexr   r   googlecloudsdk.command_lib.iamr   r   r   r!   r%   r*   rG   rK   rO   rQ   r>   r[   r^   rr   rq   rw    r   r   <module>r~      sh    ; &  ' @ 3KK)()2-0-0'="DNr   