
    Y9                     ^   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SKJr  SSKJr  S	\R                  4S
 jrS rS	\R                  4S jrS	\R                  4S jrS rS rS rS rS rS	\R                  4S jrS	\R                  4S jrS	\R                  4S jrS rS rS rg)z7Client for interaction with Datascan API CRUD DATAPLEX.    )absolute_import)division)unicode_literals)util)messages)parser_extensions)iam_utilargsc                     [         R                  " 5       nU R                  S5      (       a  UR                  U R                  S9nU$ UR                  U R
                  S9nU$ )zGenerate Data From Arguments.data_source_entity)entity)resource)dataplex_apiGetMessageModuleIsKnownAndSpecifiedGoogleCloudDataplexV1DataSourcer   data_source_resource)r
   moduledatas      /lib/googlecloudsdk/api_lib/dataplex/datascan.pyGenerateDatar      sn    ((*&	23311&& 2 D 
+ 11** 2 D 
+    c                 0   [         R                  " 5       nU R                  S5      (       aZ  [         R                  " U R                  5      nUb5  [
        R                  " [         R                  " U5      UR                  5      nU$ UR                  5       nU$ )(Generate DataQualitySpec From Arguments.data_quality_spec_file)	r   r   IsSpecified
ReadObjectr   messages_utilDictToMessageWithErrorCheckSnakeToCamelDict$GoogleCloudDataplexV1DataQualitySpec)r
   r   dataqualityspecs      r   GenerateDataQualitySpecr#   )   s    ((*&	.//"--d.I.IJO"%AA

'
'
8

5
5o 
 AACO	r   c                    [         R                  " 5       nU R                  S5      (       aZ  [         R                  " U R                  5      nUb5  [
        R                  " [         R                  " U5      UR                  5      nU$ S/S-  u  p4pVU R                  S5      (       a8  UR                  [        S U R                  R                  S5       5       5      S9nU R                  S5      (       a8  UR                  [        S	 U R                  R                  S5       5       5      S9nU R                  S
5      (       a  [        U R                   5      nU R                  S5      (       a  U R"                  nUR                  UUUUS9nU R                  S5      (       a+  UR%                  UR'                  U R(                  S9S9Ul        U$ )z(Generate DataProfileSpec From Arguments.data_profile_spec_fileN   exclude_field_namesc              3   @   #    U  H  oR                  5       v   M     g 7fNstrip.0vals     r   	<genexpr>*GenerateDataProfileSpec.<locals>.<genexpr>I         )L#))++)L   ,)
fieldNamesinclude_field_namesc              3   @   #    U  H  oR                  5       v   M     g 7fr)   r*   r,   s     r   r/   r0   Q   r1   r2   sampling_percent
row_filter)excludeFieldsincludeFieldssamplingPercent	rowFilterexport_results_table)resultsTable)bigqueryExport)r   r   r   r   r%   r   r   r    $GoogleCloudDataplexV1DataProfileSpecr   2GoogleCloudDataplexV1DataProfileSpecSelectedFieldslistr'   splitr5   floatr7   r8   3GoogleCloudDataplexV1DataProfileSpecPostScanActionsAGoogleCloudDataplexV1DataProfileSpecPostScanActionsBigQueryExportr=   postScanActions)r
   r   dataprofilespecexclude_fieldsinclude_fieldsr7   r8   s          r   GenerateDataProfileSpecrK   9   s   ((*&	.//"--d.I.IJO"%AA

'
'
8

5
5oL 
C EI6A:@N$4 566

C
C )-)A)A)G)G)L  D    566

C
C )-)A)A)G)G)L  D    233t445--??jAA$$(	 B O  677(.(b(baa44 b  )c )o%
 
r   c                 8   [         R                  " 5       nUR                  5       nUR                  5       Ul        U R                  S5      (       a  U R                  UR                  l        U R                  S5      (       a4  UR                  R                  U R                  5      UR                  l
        U R                  S5      (       a  U R                  UR                  l        U R                  S5      (       a  U R                  UR                  l        UR                  5       Ul        U R                  S5      (       a  U R"                  UR                   l        U R                  S5      (       a  U R&                  UR                   l        UR+                  5       UR                   l        U R                  S5      (       a%  U R.                  UR                   R,                  l        U R                  S5      (       a/   [3        U R4                  5      UR                   R,                  l        U R                  S
5      (       a%  U R:                  UR                   R,                  l        U R                  S5      (       a%  U R>                  UR                   R,                  l         U R                  S5      (       a%  U RB                  UR                   R,                  l"        URG                  5       UR                   l$        U R                  S5      (       a%  U RJ                  UR                   RH                  l         U R                  S5      (       a%  U RL                  UR                   RH                  l"        U$ ! [8         a    [9        S	U R4                   35      ef = f)z*Generate DataDiscoverySpec From Arguments.bigquery_publishing_connectionbigquery_publishing_table_type#bigquery_publishing_dataset_project$bigquery_publishing_dataset_locationstorage_include_patternsstorage_exclude_patternscsv_delimitercsv_header_row_countz1csv_header_row_count must be an integer, but got csv_quote_charactercsv_encodingcsv_disable_type_inferencejson_encodingjson_disable_type_inference)'r   r   &GoogleCloudDataplexV1DataDiscoverySpec>GoogleCloudDataplexV1DataDiscoverySpecBigQueryPublishingConfigbigqueryPublishingConfigr   rM   
connectionTableTypeValueValuesEnumrN   	tableTyperO   projectrP   location3GoogleCloudDataplexV1DataDiscoverySpecStorageConfigstorageConfigrQ   includePatternsrR   excludePatterns=GoogleCloudDataplexV1DataDiscoverySpecStorageConfigCsvOptions
csvOptionsrS   	delimiterintrT   
headerRows
ValueErrorrU   quoterV   encodingrW   typeInferenceDisabled>GoogleCloudDataplexV1DataDiscoverySpecStorageConfigJsonOptionsjsonOptionsrX   rY   )r
   r   datadiscoveryspecs      r   GenerateDataDiscoverySpecrr   i   s.   ((*&CCE KKM , 
>??++ ..9 
>??;A  <A  <A  <Z  <Z++<..8 
CDD00 ..6 
DEE11 ..7
 @@B ! 
899%% ##3 
899%% ##3 JJL !!, 
o..;?;M;M##..8	455>A

#
#?%%00; 
3447;7O7O##..4	n--:>:K:K##..7	:;;'' ##..D KKM !!- 
o..;?;M;M##//8	;<<(( ##//E 
3  ''(* s    .M6 6#Nc                  L    [         R                  " 5       n U R                  5       $ )z.Generate DataDocumentationSpec From Arguments.)r   r   *GoogleCloudDataplexV1DataDocumentationSpec)r   s    r   GenerateDataDocumentationSpecru      s    ((*&		:	:	<<r   c                 b    [         R                  " 5       nUR                  U R                  S9nU$ )r   )cron)r   r   $GoogleCloudDataplexV1TriggerScheduleschedule)r
   r   ry   s      r   GenerateSchedulerz      s,    ((*&88dmm8L(	/r   c                     [         R                  " 5       nUR                  5       nU R                  S5      (       a  [	        U 5      Ul        U$ UR                  5       Ul        U$ )r   ry   )r   r   GoogleCloudDataplexV1Triggerr   rz   ry   $GoogleCloudDataplexV1TriggerOnDemandonDemand)r
   r   triggers      r   GenerateTriggerr      s[    ((*&//1'	j!!'-G 
. BBDG	.r   c                     [         R                  " 5       n[        U S5      (       a  U R                  nO[        U S5      (       a  U R                  OSnUR                  U[        U 5      S9nU$ )&Generate ExecutionSpec From Arguments.fieldincremental_fieldN)r   r   )r   r   hasattrr   r   *GoogleCloudDataplexV1DataScanExecutionSpecr   )r
   r   r   executionspecs       r   %GenerateExecutionSpecForCreateRequestr      sp    ((*&T7JJE #*$0C"D"D$ 
 CCd# D - 
r   c                 `    [         R                  " 5       nUR                  [        U 5      S9nU$ )r   )r   )r   r   r   r   )r
   r   r   s      r   %GenerateExecutionSpecForUpdateRequestr      s6    ((*&CCd# D - 
r   c                    / nSSSSSS.n0 SS_S	S
_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS _S!S"_S#S$_S%S&_S'S(_S)S*S+.EnUR                  5        H.  u  pEU R                  U5      (       d  M  UR                  U5        M0     UR                  5        H.  u  pEU R                  U5      (       d  M  UR                  U5        M0     U$ ),z Create Update Mask for Datascan.descriptiondisplayNamelabelszexecutionSpec.trigger.onDemandzexecutionSpec.trigger.schedule)r   display_namer   	on_demandry   r%   dataProfileSpecr   dataQualitySpecr8   zdataProfileSpec.rowFilterr7   zdataProfileSpec.samplingPercentr5   zdataProfileSpec.includeFieldsr'   zdataProfileSpec.excludeFieldsrN   z4dataDiscoverySpec.bigqueryPublishingConfig.tableTyperM   z5dataDiscoverySpec.bigqueryPublishingConfig.connectionrP   z3dataDiscoverySpec.bigqueryPublishingConfig.locationrO   z2dataDiscoverySpec.bigqueryPublishingConfig.projectrQ   z/dataDiscoverySpec.storageConfig.includePatternsrR   z/dataDiscoverySpec.storageConfig.excludePatternsrS   z4dataDiscoverySpec.storageConfig.csvOptions.delimiterrT   z5dataDiscoverySpec.storageConfig.csvOptions.headerRowsrU   z0dataDiscoverySpec.storageConfig.csvOptions.quoterV   z3dataDiscoverySpec.storageConfig.csvOptions.encodingrW   z@dataDiscoverySpec.storageConfig.csvOptions.typeInferenceDisabledz4dataDiscoverySpec.storageConfig.jsonOptions.encodingzAdataDiscoverySpec.storageConfig.jsonOptions.typeInferenceDisabled)rX   rY   )itemsr   appendr   )r
   update_maskargs_to_maskargs_to_mask_attrargr.   s         r   GenerateUpdateMaskr      s   +"#32,& 1& 1& /& ;	&
 <& <& '
@& '
A& -
?&  ,
>#&& !
;)&, !
;/&2 M3&4 
A7&: O;&< K=&> #
LA&D N
MI&P $$&hc ' $))+hc$$ , 
r   c           	         [         R                  " 5       nUR                  U R                  U R                  [         R
                  " UR                  U 5      [        U 5      [        U 5      S9nU R                  S:X  a4  U R                  S5      (       a  [        S5      e[        U 5      Ul         U$ U R                  S:X  aT  U R                  S5      (       a  [        S5      eU R                  S5      (       a  [        U 5      Ul        U$ [        S5      eU R                  S	:X  a  [!        U 5      Ul        U$ U R                  S
:X  a  [%        5       Ul        U$ )z,Create Datascan for Message Create Requests.)r   r   r   r   executionSpecPROFILEr   7Data quality spec file specified for data profile scan.QUALITYr%   7Data profile spec file specified for data quality scan.zGIf scan-type="QUALITY" , data-quality-spec-file is a required argument.	DISCOVERYDOCUMENTATION)r   r   GoogleCloudDataplexV1DataScanr   r   CreateLabelsr   r   	scan_typer   rk   rK   r   r   r#   r   rr   dataDiscoverySpecru   dataDocumentationSpecr
   r   requests      r    GenerateDatascanForCreateRequestr   $  sT   ((*&00""##&&

.
. 9$? 1 ' 
^^y  899
C  !8 =g" 
.! ~~" 899
C  
		2	3	3 7 =g 
.   ~~$ 9$ ?G 
. ~~($A$CG!	.r   c                    [         R                  " 5       nUR                  U R                  U R                  [         R
                  " UR                  U 5      [        U 5      S9nU R                  S:X  a3  U R                  S5      (       a  [        S5      e[        U 5      Ul        U$ U R                  S:X  aa  U R                  S5      (       a  [        S5      eU R                  S5      (       a  [        U 5      Ul        U$ UR                  5       Ul         U$ U R                  S:X  a  [!        U 5      Ul        U$ U R                  S	:X  a  [%        5       Ul        U$ )
z,Create Datascan for Message Update Requests.)r   r   r   r   r   r   r   r   r%   r   r   r   )r   r   r   r   r   r   r   r   r   rk   rK   r   r   r#   r   r!   rr   r   ru   r   r   s      r    GenerateDatascanForUpdateRequestr   J  sR   ((*&00""##&&

.
. :$? 1 ' 
^^y  899
C  6d;G 
. ~~" 899
C  
		2	3	3 7 =g 
. !' K K Mg
 
.	 ~~$ 9$ ?G 
. ~~($A$CG!	.r   c                     [         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)r   googleIamV1SetIamPolicyRequest)r   r   5DataplexProjectsLocationsDataScansSetIamPolicyRequestRelativeNameGoogleIamV1SetIamPolicyRequestGetClientInstanceprojects_locations_dataScansSetIamPolicy)datascan_refr   set_iam_policy_reqs      r   r   r   k  su    #446ll((*%1%B%B%D%c%c &d & m  
	'	'	)	F	F	S	S
 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   x  s3    ##<002DD& 
l	++r   c                 j    [         R                  " U [         R                  " 5       R                  5      $ )z=Waits for the given google.longrunning.Operation to complete.)r   WaitForOperationr   r   )	operations    r   r   r     s)    		&	&//1NN
 r   N)__doc__
__future__r   r   r   googlecloudsdk.api_lib.dataplexr   r   googlecloudsdk.api_lib.utilr   r   googlecloudsdk.callioper   googlecloudsdk.command_lib.iamr	   	Namespacer   r#   rK   rr   ru   rz   r   r   r   r   r   r   r   r   r    r   r   <module>r      s    > &  ' @ A 5 3(22  -"3"="= -`K$5$?$? K\= 9.88 9x#+<+F+F #L+<+F+F B
,r   