
    &                     D   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 Zej2                   ej4                  ej6                  j8                         G d dej:                                      Z ej4                  ej6                  j>                         G d de             Z  ej4                  ej6                  jB                         G d de              Z"y)zCommand for running jobs.    )absolute_import)division)unicode_literals)base)connection_context)container_parser)
exceptions)flags)messages_util)pretty_print)resource_args)serverless_operations)stages)concept_parsers)presentation_specs)log)progress_trackerc                      d} t        j                  |       }|j                  t        j                  d             |j                  t        j
                                |S )zDReturns an argument group with all per-container args for overrides.z|
Container Flags

  If the --container is specified the following arguments may only be specified after a --container flag.
)helpTfor_execution_overrides)r   ArgumentGroupAddArgumentr
   ArgsFlagOverrideEnvVarsFlag)	help_textgroups     lib/surface/run/jobs/execute.pyContainerOverridesGroupr   %   sN    )
 

)
,%ENN4@AE--/0	,    c                   R    e Zd ZdZdddZdZed        Zed        Z	dd	Z
d
 Zd Zy)ExecuteExecute a job.z#
          {description}
          zI
          To execute a job:

              $ {command} my-job
          )DESCRIPTIONEXAMPLESz`--update-env-vars`, `--args`c                    t        j                  dt        j                  d      ddd      }t	        j
                  |g      j                  |       |j                         }t        j                  |       t        j                  |       |j                  j                  d       t        j                  |d       t        j                  |d       y )	NJOBT)promptzJob to execute.F)requiredprefixesnoner   )r   ResourcePresentationSpecr   GetJobResourceSpecr   ConceptParserAddToParseradd_mutually_exclusive_groupr
   AddAsyncFlagAddWaitForCompletionFlagdisplay_info	AddFormatAddTaskTimeoutFlagsAddTasksFlag)clsparserjob_presentationpolling_groups       r   
CommonArgszExecute.CommonArgsE   s    )BB((5 !!#3"45AA&I779M	}%	""=1
!!&)	fdC	vt<r    c                 n    t         j                  |        t               }t        j                  | |       y N)r"   r;   r   r   AddContainerFlags)r8   container_argss     r   ArgszExecute.ArgsW   s(    v,.N&&v~>r    Nc                     t        j                  |d      xr |j                   }|j                  ||j                  |j                  |      S )Nargs)nameupdate_env_varsrB   
clear_args)r
   FlagIsExplicitlySetrB   MakeContainerOverriderD   )self
operationsrB   container_namerE   s        r   _MakeContainerOverrdezExecute._MakeContainerOverrde]   sO     **48J]J++,,YY	 ,  r    c                 .   t        j                  |d      r|j                  j                         D ]a  \  }}t        j                  |d      rt        j                  |d      r4t	        j
                  dj                  || j                               y y )N
containersrB   rD   zrNo container overrides requested to container `{}`. Did you mean to include the flags {} after `--container` flag?)r
   rF   rM   itemsr	   NoConfigurationChangeErrorformatcontainer_flags_text)rH   rB   rJ   r?   s       r   _AssertContainerOverridesz!Execute._AssertContainerOverridesh   s      |4,0OO,A,A,C
(..((F
++N<MN55Ovnd&?&?@ 	 -D 5r    c           
         |j                   j                  j                         }t        j                  |       | j                  |       t        j                  |t        j                  j                  | j                               }t        j                  |      5 }t        j                  dt        j                   |j"                        d|j$                        5 }d}t        j&                  |      r|j)                  |t        j*                  |             g }t        j,                  |      rt        j.                  |      r!|j1                  | j3                  ||             t        j4                  |d      rD|j6                  j9                         D ]'  \  }}	|j1                  | j3                  ||	|             ) |j;                  |j<                  |j>                  |      }|jA                  |||j"                  |j$                  | j                         |      }
ddd       |j$                  r0tC        jD                  djG                  
jH                               n@|j"                  rd	nd
}tC        jD                  djG                  
jH                  |             tJ        jL                  jO                  tQ        jR                  | j                         |
             |
cddd       S # 1 sw Y   xY w# 1 sw Y   yxY w)zExecute a Job on Cloud Run.zCreating execution...)include_completionzExecuting job failed)failure_messagesuppress_outputNrM   zIExecution [{{bold}}{execution}{{reset}}] is being started asynchronously.)	execution	completedzstarted runningzFExecution [{{bold}}{execution}{{reset}}] has successfully {operation}.)rW   	operation)*CONCEPTSjobParser
   ValidateResourcerR   r   GetConnectionContextProductRUNReleaseTrackr   Connectr   StagedProgressTrackerr   ExecutionStageswaitasync_HasExecutionOverridesValidateConfigOverrides)GetExecutionOverridesChangesForValidationHasContainerOverridesHasTopLevelContainerOverrideappendrK   rF   rM   rN   GetExecutionOverridestaskstask_timeoutRunJobr   SuccessrP   rC   r   statusPrintr   GetExecutionCreatedMessage)rH   rB   job_refconn_contextrI   tracker	overridescontainer_overridesrJ   r?   erY   s               r   RunzExecute.Runt   s~   mm%%'G	7#""4(%::emm!2!2!4L 
	&	&|	4
11
!

 
 DII
>0++	
 	&&t,

,
,uFFtL !#
((.11$7!((,,Z> ((|<48OO4I4I4K0..#**.."NN 5L !66jj$++-@) IIKK
7H 
''-vv'?	

 $(99K2C	((.&&I )/ )	
 
jj

2
243D3D3F
J o 
5	4  
5	4s'   AK>EK2"CK>2K;	7K>>Lr=   )__name__
__module____qualname____doc__detailed_helprQ   classmethodr;   staticmethodr@   rK   rR   r{    r    r   r"   r"   3   sU     		- 9= =" ? ?
	
?r    r"   c                        e Zd ZdZed        Zy)BetaExecuter#   c                 f    | j                  |       t               }t        j                  ||       y r=   r;   r   r   r>   r7   r8   r?   s      r   r@   zBetaExecute.Args   &    NN6,.N&&v~>r    Nr|   r}   r~   r   r   r@   r   r    r   r   r          ? ?r    r   c                        e Zd ZdZed        Zy)AlphaExecuter#   c                 f    | j                  |       t               }t        j                  ||       y r=   r   r   s      r   r@   zAlphaExecute.Args   r   r    Nr   r   r    r   r   r      r   r    r   N)#r   
__future__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   UniverseCompatibleReleaseTracksra   GACommandr"   BETAr   ALPHAr   r   r    r   <module>r      s      &  ' ( = ; 5 0 8 7 8 @ 1 D G # 8 D%%(()~dll ~ * ~B D%%**+?' ? ,? D%%++,?; ? -?r    