
    ,.                        S r SSKJr  SSKJr  SSKJr  SSK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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SKJr  S rS r " S S\R>                  5      r \RB                  \RD                  " \RF                  RH                  5       " S S\RJ                  5      5       5       r&g)#Create a Flink job from a Java jar.    )absolute_import)division)unicode_literalsN)util)waiter)base)
exceptions)flags)flink_backend)common_args)log)
properties)	resources)yaml)encoding)files)	platformsc                     U S:X  a^  Sn UR                  S5      (       a  Sn O1UR                  S5      (       a  Sn OUR                  S5      (       a  Sn U (       d  [        S	5      eU $ )
z8Returns the job type based on the job_type and job_file.autoNz.pypythonz.sqlsqlz.jarjarzAUnable to determine type of job [{}]. Job input files must end in)endswithUnknownJobType)job_typejob_files     (lib/surface/managed_flink/jobs/create.py
GetJobTyper   (   sk    Hh			6	"	"h			6	"	"h
M  
/    c                 f    SnU R                  S5      (       d  U R                  S5      (       a  SnU$ )z-Returns the input type based on the job_file.file://ar://zartifactregistry://)
startswith)r   
input_types     r   GetInputTyper&   9   s6    * !!X%8%89N%O%OJ	r    c                       \ rS rSrSrSrg)r   C   z.Raised when the job type cannot be determined. N)__name__
__module____qualname____firstlineno____doc____static_attributes__r)   r    r   r   r   C   s    6r    r   c                   <    \ rS rSrSrSS0rS r\S 5       rS r	Sr
g	)
CreateG   r   EXAMPLESz
      To create a Flink job from a Java jar, run:

      $ {command} my-job.jar --project=my-project --location=us-central1
      c                 h   UR                   (       a7  UR                  (       d  US:X  a   [        R                  " UR                   5        UR                  (       a)  [        R
                  R                  UR                  5        UR                  (       a  g[        R                  R                  US5      n[        R                  R                  U5      (       d  g[        R                  R                  US5      n[        R                  R                  U5      (       d  g[        R                  " U5       n[        R                  " U5      nSSS5        [        5       n	U	R!                  [        R                  R                  US5      5        WS   S    H/  n
U
R#                  S5      (       d  M  U	R!                  U
SS 5        M1     [$        R&                  " U	[        R                  R                  UR(                  US   S	   5      5      n[*        R,                  " U R/                  5       5      nUR1                  S
R3                  US   S   5      U[        R                  R                  US5         US   S    V
s/ s H
  oU
SS    PM     sn
S9nUR4                  (       a  UR4                  Ul        UR8                  (       aA  UR;                  UR8                  S9nUR<                  (       a  UR<                  Ul        Xl        URA                  5       nURB                  S:X  a  URE                  URF                  S9Ul$        O4URK                  URL                  URL                  URN                  S9Ul(        Xl)        URU                  US   S	   US9nURV                  (       a  URV                  Ul,        UR[                  SR3                  [\        R^                  R`                  Rb                  Re                  SS9URf                  5      US   S	   US9nUR                  (       a  [        R                  " U5        URh                  (       a  U$ [*        Rj                  " U R/                  5       5      nURl                  Rn                  Rq                  U5      nUR                  (       a  [        R                  " U5        [        R                  " SR3                  URr                  5      5        URt                  (       a  U$ [v        Rx                  R{                  UR4                  SS9n[|        R~                  " [|        R                  " URl                  Rn                  URl                  R                  5      USR3                  UR4                  5      5        U$ ! , (       d  f       GNX= fs  sn
f )z-Process results of BinaryOperation Execution.r   Nzjobgraph.binzjobspec.yamljobjarszfile:   idz{0}name)jobNamejobGraphUrijarUris)vpcfixed)parallelism)r?   minParallelismmaxParallelism)r9   jobSpeczprojects/{0}/locations/{1}T)required)parentjobIdr5   zCreate request issued for [{0}]z*managedflink.projects.locations.operations)
collectionz+Waiting for operations [{0}] to complete...)Bstdoutshow_outputr   Printstderrstatusfailedospathjoinexistsr   
FileReaderr   loadlistappendr$   r   Uploadstaging_location
flink_utilGetMessagesModuleReleaseTrackJobSpecformatr9   displayNamenetworkNetworkConfig
subnetworknetworkConfigAutotuningConfigautotuning_modeFixedr?   r>   Elasticmin_parallelismmax_parallelismthroughputBasedautotuningConfigJob
deploymentdeploymentId.ManagedflinkProjectsLocationsJobsCreateRequestr   VALUEScoreprojectGetlocationdry_runFlinkClientclientprojects_locations_jobsr1   rE   async_submitr   REGISTRYParser   WaitForCloudOperationPollerprojects_locations_operations)selfresponser   temp_dirargsjobgraphjobspecfjobspec_jsonfiles_to_uploadr   destmsgconfigautotuning_configr5   createflink_client	create_opcreate_op_refs                       r   _JobSubmitResponseHandler Create._JobSubmitResponseHandlerT   sJ   D,,E0A	ii 	jjx'ww||Hn5H77>>(##ggll8^4G77>>'""			'	"aYYq\l 
# fO277<<.ABE"6*		 	 s12w' + 
T**L,?,EFD 
&
&t'8'8':
;Ckk\%089h?@*6u*=f*EF*E3c!"g*EF  G yy IIg||  T\\ 2f	 OO$ ,,.w& #		d6F6F	 G*-++**---- +6 +'
  1
''|E*40''
BCc??+22""**...=t}}
 5!$' @ F 	ii||o))$*;*;*=>L##;;BB6JI	ii	II/66v||DEo&&,,#O - M NN##77==	
 	5<<Y^^L O[ 
#	"$ Gs   5V>V/
V,c                    [         R                  " SS9R                  U 5        [        R                  " U SS9  [        R
                  " U 5        [        R                  " U 5        [        R                  " U 5        [        R                  " U 5        [        R                  " U 5        [        R                  " U 5        [        R                  " U 5        [        R                  " U 5        [        R                  " U 5        [        R                  " U 5        [        R                  " U 5        [        R                   " U 5        [        R"                  " U 5        [        R$                  " U 5        [        R&                  " U 5        [        R(                  " U 5        [        R*                  " U 5        [        R,                  " U 5        g )NzProject to run the job in.)help_text_to_overwritezDeployment to run the job in.)r   ProjectArgumentAddToParserr   AddDeploymentArgumentAddShowOutputArgumentAddDryRunArgumentAddAsyncArgumentAddMainClassArgumentAddExtraJarsArgumentAddLocationArgumentAddStagingLocationArgumentAddAutotuningModeArgumentAddJobJarArgumentAddJobTypeArgumentAddNameArgumentAddFixedParallelismArgsAddElasticParallelismArgsAddNetworkConfigArgsAddWorkloadIdentityArgumentAddJobArgsCollectorAddPythonVirtualEnvArgumentAddExtraArchivesArgument)parsers    r   ArgsCreate.Args   s1    ;k&	'F 
'	F#	6"	v&	v&	f%	$$V,	##F+	F#	V$	&!	!!&)	##F+	v&	%%f-	f%	%%f-	""6*r    c           	      (   [         R                  R                  5       nU[         R                  R                  L a  [        R
                  " S5      e[        UR                  5      nUS:X  a^  [        R                  R                  UR                  5      (       d0  [        R                  " SSR                  UR                  5      5      e[        UR                  UR                  5      nUR                  (       a)  UR                   (       d  [        R                  " SS5      eO9UR                   (       a(  UR                  (       d  [        R                  " SS5      eUR"                  (       a(  UR$                  (       a  [        R                  " S	S
5      e[&        R(                  " UR*                  UR,                  UR.                  UR0                  5        UR2                  R5                  S5      (       d  [        R                  " SS5      e[&        R6                  " UR2                  5        US:X  a_  UR8                  (       d  [        R                  " SS5      eUR8                  R5                  S5      (       d  [        R                  " SS5      e[;        5       nXES'   US:X  a0  UR<                  (       a  SR?                  UR<                  5      US'   O5US:X  a/  UR<                  (       a  SR?                  UR<                  5      US'   URA                  S5      (       ar  [B        RD                  " [        RF                  S5      (       aH  SR?                  URA                  S5      [B        RD                  " [        RF                  S5      /5      US'   URH                  (       a
  SUS'   SUS'   [J        RL                  " 5        nUR                  nUS:X  a  [&        RN                  " UR                  5      u  p[P        RR                  " SR                  U5      5        [        R                  R?                  XhRU                  S5      S   5      n[&        RV                  " XyRY                  5       S9  [P        RZ                  " SU-   5        [&        R\                  " 5       n
U
" S20 SS _S!U_SU_S"S#_S$UR$                  _S%UR2                  _S&UR*                  _S'U_S(UR                  _S)UR                   _S*UR^                  _S+UR`                  _S,URb                  _S-UR<                  _S.URd                  _S/URf                  _S0UR8                  _S1[&        Rh                  " U5      _6nU Rk                  XXa5      sS S S 5        $ ! , (       d  f       g = f)3Nz&Job creation not supported on Windows.r"   z
JAR|PY|SQLz$Job definition [{0}] does not exist.znetwork-config-subnetworkzG--network-config-subnetwork must be set if --network-config-vpc is set.znetwork-config-vpczG--network-config-vpc must be set if --network-config-subnetwork is set.zworkload-identityz9--workload-identity cannot be set if --deployment is set.zgs://zstaging-locationz:Staging location must be of the form gs://<bucket>/<path>.r   zpython-venvz4Python virtualenv must be set if job type is python.zDPython Virtualenv location must be of the form gs://<bucket>/<path>.CLOUDSDK_MANAGEDFLINK_JOB_TYPE:HADOOP_CLASSPATHr   trueCLOUDSDK_MANAGEDFLINK_DRY_RUNCLOUDSDK_MANAGEDFLINK_ECHO_CMDr#   z.Downloading {0} file from Artifact Registry.../)	dest_pathartifact_jar_pathz$Successfully downloaded the file to commandrunr   targetgcloudrj   rV   rb   r~   r]   r_   r9   rq   
main_class
extra_jars
extra_argsextra_archivespython_venvenvr)   )6r   OperatingSystemCurrentWINDOWSr
   ToolExceptionr&   r5   rM   rN   rP   InvalidArgumentExceptionr[   r   r   r]   r_   workload_identityrj   r   ValidateAutotuningrb   re   rf   r?   rV   r$   CheckStagingLocationr   dictr   rO   getr   GetEncodedValueenvironrr   r   TemporaryDirectoryCreateRegistryFromArtifactUrir   rI   splitDownloadJarFromArtifactRegistryRelativeNamedebugFlinkClientWrapperr9   rq   r   job_argsarchivesGetEnvArgsForCommandr   )r|   r   
current_osr%   r   r   r~   jar_pathjar_nameregistrycommand_executorr}   s               r   Run
Create.Run   s   **224JY..666$$%MNNdhh'JYrww~~dhh'?'?//

0
7
7
A  $--2H ||__11'
 	
  
\\11 
 	
 $////

E  $$	   ++G44//

F  &&t'<'<= 811B
 	

 ((1111%
 	
 &C,4()8	"%((4??";	U		"%((4??"; ww!""x'?'?


&( ( !$
''$
%

"
"2::/A
B* !	c
 ||-3c
)*.4c
*+		!	!	#xh	w	*HHHH
 			<CCHM	
 77<<..*=b*AB552G2G2I	
 			88CD&99;!   	
 __  00 ..  ,, __ yy == __ __ ]]  !" &&#$ 005%h( ++HOI 
$	#	#s   F4V
Vr)   N)r*   r+   r,   r-   r.   detailed_helpr   staticmethodr   r   r/   r)   r    r   r1   r1   G   s:     ,  
-^@ + +8APr    r1   )'r.   
__future__r   r   r   rM   $googlecloudsdk.api_lib.managed_flinkr   rW   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper	   r
   (googlecloudsdk.command_lib.managed_flinkr   r   $googlecloudsdk.command_lib.util.argsr   googlecloudsdk.corecore_exceptionsr   r   r   r   googlecloudsdk.core.utilr   r   r   r   r&   Errorr   DefaultUniverseOnlyReleaseTracksrY   ALPHABinaryBackedCommandr1   r)   r    r   <module>r      s    * &  ' 	 C . ( . : B < = # * ) $ - * ."7_** 7 D%%++,IPT%% IP - IPr    