
                             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 Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)z4Client for interaction with Asset API CRUD DATAPLEX.    )absolute_import)division)unicode_literals)util)iam_utilc                    t        j                         j                  | j                         t        j                         j	                  |            }t        j
                         j                  j                  |      S )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                     t        j                         j                  | j                               }t        j                         j
                  j                  |      S )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                     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	i	((r   c                 ^    t        |       }t        j                  |||       t        | |      S )z"Remove IAM policy binding request.)r   r   RemoveBindingFromIamPolicyr   )zone_refr   r    r	   s       r   RemoveIamPolicyBindingr%   5   s+    !&
%%ffd;	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   SetIamPolicyFromFiler*   <   s6    ####%779& 
i	((r   c                    t        j                         }|j                  }|j                  | j                  |j	                  | j
                              }| j                  d      r |j                  | j                        |_	        |j                  | j                  | j                  t        j                  |j                  |       |      }t        |       }||j                         k7  rt!        |d|       |S )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99**	
  
 --""##&&v'H'H$O 	 . "'
 $D))&@@BBG_i0	.r   c                     t        |       S N)rG   rA   s    r   "GenerateAssetForCreateRequestAlpharK   ]       	&t	,,r   c           	      p   t        j                         }|j                  | j                  | j                  t        j
                  |j                  |       t        |             }| j                  d      r@t        |d|j                  |j                  j                  | j                                     |S )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55==[[22 	6 	

 
,r   c                     t        |       S rI   )rO   rJ   s    r   "GenerateAssetForUpdateRequestAlpharQ   y   rL   r   c                 `   t        j                         }|j                  | j                  | j                  | j
                        }| j                  r| j                  |_        t        |       }||j                         k7  r||_
        t        |       }||j                         k7  r||_        |S )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(+FLLNN +N$T*,VNN  !-N	r   c                     t        j                         j                  | j                  | j                  | j
                  | j                        S )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                 t    t        j                         j                  | j                  | j                        S )N)rg   rf   )r   r   r_   json_encodingjson_disable_type_inferencerJ   s    r   r^   r^      s7    		&	& 
66!!;; 7 ==r   c                     t        |       S rI   )GenerateUpdateMaskrJ   s    r   GenerateUpdateMaskAlpharr      s    	D	!!r   c                    g }| j                  d      r|j                  d       | j                  d      r|j                  d       | j                  d      r|j                  d       | j                  d      r|j                  d       | j                  d      r|j                  d       | j                  d	      r|j                  d
       | j                  d      r|j                  d       | j                  d      r|j                  d       | j                  d      r|j                  d       | j                  d      r|j                  d       | 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 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67	2367	*+/0	'(<=	o&;<	n%:;	23FG	o&;<	34GH	1245	r   c                 f    t        j                  | t        j                         j                        S )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   