
    0                      |   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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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dlmZ ddlmZ ddlmZ ej2                  j4                  fdZej8                   ej:                  ej2                  j4                         G d dej<                                      Z ej:                  ej2                  j@                         G d de             Z! ej:                  ej2                  jD                         G d de!             Z#y)Update a Cloud Run Job.    )absolute_import)division)print_function)unicode_literals)base)config_changes)connection_context)container_parser)flags)messages_util)pretty_print)resource_args)serverless_operations)stages)concept_parsers)presentation_specs)log)progress_trackerc                 :   d}t        j                  |      }|j                  t        j                  dd             |j                  t        j
                  |              |j                  t        j                                |j                  t        j                                | t         j                  j                  t         j                  j                  fv r#|j                  t        j                                |j                  t        j                                |j                  t        j                                |j                  t        j                                |j                  t        j                                |j                  t        j                                 |j                  t        j"                                |j                  t        j$                                |j                  t        j&                                |S )z=Returns an argument group with all per-container update args.z
Container Flags

  If the --container or --remove-containers flag is specified the following
  arguments may only be specified after a --container flag.
helpz/us-docker.pkg.dev/cloudrun/container/job:latestF)imagerequiredrelease_track)r   ArgumentGroupAddArgumentr   ImageArgMutexEnvVarsFlags
MemoryFlagCpuFlagReleaseTrackALPHABETAGpuFlagArgsFlagSecretsFlagsCommandFlagDependsOnFlagAddVolumeMountFlagRemoveVolumeMountFlagClearVolumeMountsFlagStartupProbeFlag)r   	help_textgroups      lib/surface/run/jobs/update.pyContainerArgGroupr2   &   su   ) 

)
,%nnA E++-HIE$$&'EMMO$t((..0A0A0F0FGG	emmo&ENN$%E&&()E%%'(E'')*E,,./E//12E//12E**,-	,    c                   @    e Zd ZdZdddZed        Zed        Zd Z	y)	Updater   z-          Updates a Cloud Run job.
          z          To update the container image of Cloud Run job `my-job`:

              $ {command} my-job --image=us-docker.pkg.dev/project/image
          )DESCRIPTIONEXAMPLESc                    t        j                  dt        j                  d      ddd      }t	        j
                  |       t	        j                  |       t	        j                  |       t	        j                  |       t	        j                  |       t	        j                  |       t	        j                  |       t	        j                  |       t	        j                  |d       t	        j                  |       t	        j                  |       t	        j                   |d	       t	        j"                  |       t	        j$                  |d	       t	        j&                  |d
       t	        j(                  |       t	        j*                  || j-                                |j/                         }t	        j0                  |       |j3                  d      }t	        j4                  |d       t	        j6                  |       t9        j:                  |g      j=                  |       |j>                  jA                  d       y )NJOBT)promptzJob to update.F)r   prefixesjob)resource_kind)
with_clear)hiddenz=--async cannot be used if executing the job after the update.r   )implies_execute_nownone)!r   ResourcePresentationSpecr   GetJobResourceSpecr   AddLabelsFlagsAddParallelismFlagAddTasksFlagAddMaxRetriesFlagAddTaskTimeoutFlagsAddServiceAccountFlagAddCloudSQLFlagsAddVpcConnectorArgs AddVpcNetworkGroupFlagsForUpdateAddEgressSettingsFlagAddClientNameAndVersionFlagsAddBinAuthzPolicyFlagsAddBinAuthzBreakglassFlagAddCmekKeyFlagAddSandboxArgAddGeneralAnnotationFlagsAddVolumesFlagsr#   add_mutually_exclusive_groupAddAsyncFlagadd_argument_groupAddWaitForCompletionFlagAddExecuteNowFlagr   ConceptParserAddToParserdisplay_info	AddFormat)clsparserjob_presentationpolling_groupexecute_groups        r1   
CommonArgszUpdate.CommonArgsW   s    *BB((5 
 	V$	v	F#	f%	'	6"	f%	**6G	'	&&v.	  D9	##F+	E2	t,	##F+	&#"2"2"45779M	}%!44L 5 NM	""=dK	M*!!#3"45AA&I
!!&)r3   c                     t         j                  |        t               }t        j                  | |       t        j                         j                  |        y )N)r5   rc   r2   r   AddContainerFlagsr   RemoveContainersFlagr[   )r_   container_argss     r1   ArgszUpdate.Args   s?    
f&(N&&v~>	 ,,V4r3   c           
      l   |j                   j                  j                         }t        j                  |       t        j                  |t        j                  j                  | j                               }t        j                  || j                               }|j                  t        j                  | j                                      |j                  xs |j                  }d}t!        j"                  |      5 }t%        j&                  t)        j*                  ||dd             |rd}nd}t-        j.                  |t1        j2                  ||j                        d|j4                  	      5 }	|j7                  |||	|j4                  
      }
|r7|j9                  ||	|j                  |j4                  | j                               }ddd       |j4                  r2|s0t%        j:                  dj=                  
j>                               n}d}|j                  r|dj=                  |j>                        z  }n |r|dj=                  |j>                        z  }t%        j:                  dj=                  
j>                  |             d}|r,|t)        j@                  | j                         |      z  }|dz  }|t)        jB                  | j                         |
j>                  |      z  }tD        jF                  jI                  |       |
cddd       S # 1 sw Y   RxY w# 1 sw Y   yxY w)zUpdate a Job on Cloud Run.r   NUpdatingr<   zUpdating and running job...zUpdating job...)execute_nowinclude_completionzJob failed to deploy)failure_messagesuppress_output)asynz=Job [{{bold}}{job}{{reset}}] is being updated asynchronously.)r<   zbeen updatedz and completed execution [{}]z# and started running execution [{}]z:Job [{{bold}}{job}{{reset}}] has successfully {operation}.)r<   	operation 
)repeat)%CONCEPTSr<   Parser   ValidateResourcer
   GetConnectionContextProductRUNr#   GetJobConfigurationChangesappendr	   SetLaunchStageAnnotationChangerk   waitr   Connectr   Infor   GetStartDeployMessager   StagedProgressTrackerr   	JobStagesasync_	UpdateJobRunJobSuccessformatnameGetExecutionCreatedMessageGetRunJobMessager   statusPrint)selfargsjob_refconn_contextchangesrk   	execution
operations
header_msgtrackerr<   rp   msgs                r1   Runz
Update.Run   s   mm%%'G	7#%::emm!2!2!4L ..'')+G NN55d6G6G6IJ ""/diiKI		&	&|	4


-
-GZ
 
2
&
11



%$)) 1++ ""7GW4;;"O ''w		4;;8I8I8K) 
[$ff2	

 #	99
6==innM
M)
<CCnn ) 	HOOHH	 P 	
 c	}77
 	
 	t	]++



sxx c 
jjsm 
5	4  
5	4s'   ?A5L*4ALEL*L'	"L**L3N)
__name__
__module____qualname____doc__detailed_helpclassmethodrc   staticmethodrh   r    r3   r1   r5   r5   G   sG      		- %* %*N 5 5Hr3   r5   c                        e Zd ZdZed        Zy)
BetaUpdater   c                 4   | j                  |       t        j                  |       t        j                  |       t	        t
        j                  j                        }t        j                  ||       t        j                         j                  |       y Nr   )rc   r   AddGpuTypeFlagGpuZonalRedundancyFlagr2   r   r#   r%   r   re   rf   r[   r^   r_   rg   s      r1   rh   zBetaUpdate.Args   sg    NN6	 	  (&T5F5F5K5KLN&&v~>	 ,,V4r3   Nr   r   r   r   r   rh   r   r3   r1   r   r      s    5 5r3   r   c                        e Zd ZdZed        Zy)AlphaUpdater   c                 ^   | j                  |       t        t        j                  j                        }t        j                  ||       t        j                         j                  |       t        j                  |       t        j                  |       t        j                  |       y r   )rc   r2   r   r#   r$   r   re   r   rf   r[   AddRuntimeFlagr   r   r   s      r1   rh   zAlphaUpdate.Args   su    NN6&T5F5F5L5LMN&&v~>	 ,,V4	 	 	  (r3   Nr   r   r3   r1   r   r      s    ) )r3   r   N)$r   
__future__r   r   r   r   googlecloudsdk.callioper   googlecloudsdk.command_lib.runr	   r
   r   r   r   r   r   r   r   (googlecloudsdk.command_lib.util.conceptsr   r   googlecloudsdk.corer   googlecloudsdk.core.consoler   r#   GAr2   UniverseCompatibleReleaseTracksCommandr5   r%   r   r$   r   r   r3   r1   <module>r      s	    &  % ' ( 9 = ; 0 8 7 8 @ 1 D G # 8 %)$5$5$8$8 B D%%(()ET\\ E * EP D%%**+
5 
5 ,
5 D%%++,)* ) -)r3   