
    66                     
   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Zddl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  ddlm!Z! ddl"m#Z# ddl"m$Z$  G d dejJ                        Z&ejN                  jP                  fdZ)ejT                   ejV                  ejN                  jP                         G d dejX                                      Z- ejV                  ejN                  j\                         G d  d!e-             Z/ ejV                  ejN                  j`                         G d" d#e/             Z1y)$z<Deploy a container to Cloud Run that will run to completion.    )absolute_import)division)print_function)unicode_literalsN)api_enabler)base)
exceptions)docker_util)artifact_registry)config_changes)connection_context)container_parser)flags)messages_util)pretty_print)resource_args)serverless_operations)stages)concept_parsers)presentation_specs)log)
properties)
console_io)progress_trackerc                       e Zd ZdZdZy)	BuildType
Dockerfile
BuildpacksN)__name__
__module____qualname__
DOCKERFILE
BUILDPACKS     lib/surface/run/jobs/deploy.pyr   r   0   s    **r%   r   c                 :   d}t        j                  |      }|j                  t        j                  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 deploy 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:latest)imagerelease_trackr+   )r   ArgumentGroupAddArgumentr   SourceAndImageFlagsMutexEnvVarsFlags
MemoryFlagCpuFlagReleaseTrackALPHABETAGpuFlagArgsFlagSecretsFlagsCommandFlagDependsOnFlagAddVolumeMountFlagRemoveVolumeMountFlagClearVolumeMountsFlagStartupProbeFlag)r+   	help_textgroups      r&   ContainerArgGrouprA   5   sw   ) 

)
,%A% E++-HIE$$&'EMMO$t((..0A0A0F0FGG	emmo&ENN$%E&&()E%%'(E'')*E,,./E//12E//12E**,-	,r%   c                   @    e Zd ZdZdddZed        Zed        Zd Z	y)	Deploy!Create or update a Cloud Run job.z8          Creates or updates a Cloud Run job.
          aa            To deploy a new job `my-data-transformation` to Cloud Run:

              $ {command} my-data-transformation --image=us-docker.pkg.dev/project/image

          You may also omit the job name. Then a prompt will be displayed
          with a suggested default value:

              $ {command} --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 deploy.F)required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   AddLabelsFlagAddParallelismFlagAddTasksFlagAddMaxRetriesFlagAddTaskTimeoutFlagsAddServiceAccountFlagAddSetCloudSQLFlagAddVpcConnectorArg AddVpcNetworkGroupFlagsForUpdateAddEgressSettingsFlagAddClientNameAndVersionFlagsAddBinAuthzPolicyFlagsAddBinAuthzBreakglassFlagAddCmekKeyFlagAddSandboxArgAddGeneralAnnotationFlagsAddVolumesFlagsr3   add_mutually_exclusive_groupAddAsyncFlagadd_argument_groupAddWaitForCompletionFlagAddExecuteNowFlagr   ConceptParserAddToParserdisplay_info	AddFormat)clsparserjob_presentationpolling_groupexecute_groups        r&   
CommonArgszDeploy.CommonArgsk   s   )BB((5 
	V$	v	F#	f%	'	V$	V$	**6G	'	&&v.	  E:	##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
!!&)r%   c                     t         j                  |        t               }t        j                  | |       t        j                         j                  |        y )N)rC   rs   rA   r   AddContainerFlagsr   RemoveContainersFlagrk   )ro   container_argss     r&   ArgszDeploy.Args   s?    
f&(N&&v~>	 ,,V4r%   c                    t        j                  |d      r|j                  }nd|i}t        |      dkD  rt	        j
                  dd      |j                         D ci c]  \  }}|j                  d      s|| }}}t        |      dkD  re|j                         D cg c]  \  }}t        j                  |d      s| }}}|rt        j                  |      t	        j
                  dd	      |j                         D ]v  \  }}t        j                  |d      rt        j                         rt        j                  |      |_        L|rd
j                  |      }nd}t	        j                  d|       t!        j"                         g}|r"|j%                  d       |j%                  d       t!        j&                  t(        j*                  j,                  j.                  j1                         |      }	|j2                  j4                  j7                         }
t        j8                  |
       t;        j<                  |t         j>                  j@                  | jC                               }d}d}d}d}d}|rtE        tG        |jI                                     }|j                  }tK        jL                  t(        j*                  j,                  j.                  j1                  d      tO        jP                  |      d      }tO        jR                  ||	      r|}dj                  |jU                         |
jV                        |_,        |dz   }tZ        j\                  j_                  |      rt`        jb                  }nd|jX                  ig}| jC                         td        jB                  jf                  u rFti        |dd      }|7djk                  |      }|d   jm                  ddj                  |      i       t`        jn                  }|rdn|jX                  }dj                  |jp                         }ts        jt                  tw        jx                  |
jV                  ||d!"             t        jz                  || jC                         #      }|j%                  t}        j~                  | jC                                      |j                  xs |j                  }d}t        j                  |      5 }|j                  |
      }tw        j                  ||       ts        jt                  tw        j                  ||
|d$             |d%nd&}|r"|r d'j                  |j                               }nG|r d(j                  |j                               }n%|rd)j                  |      }nd*j                  |      }t        j                  |t        j                  ||j                  t        |      |du+      d,|j                  -      5 }|j                  |
|| jC                         ||j                  xr | ||||||	.      }|r7|j                  |
||j                  |j                  | jC                               }ddd       |j                  r2|s0ts        j                  d/j                  j                  0             n}d1}|j                  r|d2j                  |j                        z  }n |r|d3j                  |j                        z  }ts        j                  d4j                  j                  |5             d}|r,|tw        j                  | jC                         |      z  }|d6z  }|tw        j                  | jC                         |j                  |7      z  }t        j                  j                  |       |cddd       S c c}}w c c}}w # 1 sw Y   ^xY w# 1 sw Y   yxY w)8zDeploy a Job to Cloud Run.
containers 
   z--containerz&Jobs may include at most 10 containersr*      sourcez2At most one container can be deployed from source.zContainer {} requires a container image to deploy (e.g. `us-docker.pkg.dev/cloudrun/container/job:latest`) if no  build source is provided.z~Requires a container image to deploy (e.g. `us-docker.pkg.dev/cloudrun/container/job:latest`) if no  build source is provided.z--imagezartifactregistry.googleapis.comzcloudbuild.googleapis.comNzDeploying container toT)rJ   zcloud-run-source-deploy)
project_idlocation_idrepo_id)skip_activation_promptz{repo}/{job})reporL   z/Dockerfilecommand r   envzGOOGLE_ENTRYPOINT="{command}")r   z6Building using {build_type} and deploying container to)
build_typezjobs )subgroupr,   rL   CreatingUpdatingzBuilding, {} and running job...zBuilding and {} job...z{} and running job...z	{} job...)execute_nowinclude_completioninclude_buildinclude_create_repozJob failed to deploy)failure_messagesuppress_output)asynbuild_image
build_packbuild_sourcerepo_to_createprefetchalready_activated_servicesz>Job [{{bold}}{job}{{reset}}] is being deployed asynchronously.)rL   zbeen deployedz and completed execution [{}]z# and started running execution [{}]z:Job [{{bold}}{job}{{reset}}] has successfully {operation}.)rL   	operation
)repeat)Wr   FlagIsExplicitlySetrz   lenc_exceptionsInvalidArgumentExceptionitemsIsSpecifiedr	   RequiredImageArgumentExceptionr   	CanPromptPromptForDefaultSourcer~   formatRequiredArgumentExceptionr   get_run_apiappendcheck_and_enable_apisr   VALUEScoreprojectGetCONCEPTSrL   ParseValidateResourcer   GetConnectionContextProductRUNr3   nextitervaluesr
   
DockerRepor   
RepoRegionShouldCreateRepositoryGetDockerStringjobsIdr*   ospathexistsr   r"   r   r4   getattrjoinupdater#   valuer   Infor   %GetBuildEquivalentForSourceRunMessageGetJobConfigurationChangesr   SetLaunchStageAnnotationChanger   waitr   ConnectGetJobMaybeLogDefaultGpuTypeMessageGetStartDeployMessagelowerr   StagedProgressTrackerr   	JobStagesboolasync_	DeployJobRunJobSuccessnameGetExecutionCreatedMessageGetRunJobMessager   statusPrint) selfargsrz   r   	containerbuild_from_sourceneeds_imagemessagerequired_apisr   job_refconn_contextr*   packr~   operation_messager   ar_repodocker_filer   command_argr   changesr   	execution
operationsjob_objr   
header_msgtrackerrL   msgs                                    r&   Runz
Deploy.Run   s@     |4??j:j
:11
A   *//11OD)$$W- 	i1  
 ! "3!8!8!:!:odI**9h? !:  
 
77DD11
M  -224i&&y(;!"99$?)
..4fTl . 
 66 # 5, !,,./M<=67!,!B!B&&**,m" mm%%'G	7#%::emm!2!2!4L EDF0Nt-44678if&&&&++33777F'2248+g
 
	1	1
*D
 ! '--&&(gnn . io ]*k		$))
)//*+$"3"3"9"99	9d;+$hh{+GGNN7>>w>OP ))
d	e
B***+  

=
=nndFW ..'')+G NN55d6G6G6IJ ""/diiKI		&	&|	4
!!'*g11$@

-
-G%6
 !(*Zi	{6==ioo>OP
-44Y__5FG
,33I>
 ''	2
11



%!% !23"0"<	 1++
 ""++1k/)'A # 
  ''w		4;;8I8I8K)3
: 
[$ff2	

 $	99
6==innM
M)
<CCnn ) 	HOOHH	 P 	
 c	}77
 	
 	t	]++



sxx c 
jjsY 
5	4av
 
# 
5	4s3   _!"_ D_/A3_"E_/"_,	'_//_8N)
r   r    r!   __doc__detailed_helpclassmethodrs   staticmethodrx   r   r$   r%   r&   rC   rC   V   sG     *		-  %* %*N 5 5Hr%   rC   c                        e Zd ZdZed        Zy)
BetaDeployrD   c                 4   | j                  |       t        j                  |       t        j                  |       t	        t
        j                  j                        }t        j                  ||       t        j                         j                  |       y Nr,   )rs   r   AddGpuTypeFlagGpuZonalRedundancyFlagrA   r   r3   r5   r   ru   rv   rk   rn   ro   rw   s      r&   rx   zBetaDeploy.Argsi  sg    NN6	 	  (&T5F5F5K5KLN&&v~>	 ,,V4r%   Nr   r    r!   r   r   rx   r$   r%   r&   r   r   e      )5 5r%   r   c                        e Zd ZdZed        Zy)AlphaDeployrD   c                 4   | j                  |       t        j                  |       t        j                  |       t	        t
        j                  j                        }t        j                  ||       t        j                         j                  |       y r   )rs   r   r   r   rA   r   r3   r4   r   ru   rv   rk   r   s      r&   rx   zAlphaDeploy.Argsw  sg    NN6	 	  (&T5F5F5L5LMN&&v~>	 ,,V4r%   Nr   r$   r%   r&   r   r   s  r   r%   r   )2r   
__future__r   r   r   r   enumos.pathr   googlecloudsdk.api_lib.runr   googlecloudsdk.callioper   r	   r   $googlecloudsdk.command_lib.artifactsr
   googlecloudsdk.command_lib.runr   r   r   r   r   r   r   r   r   r   (googlecloudsdk.command_lib.util.conceptsr   r   googlecloudsdk.corer   r   googlecloudsdk.core.consoler   r   Enumr   r3   GArA   UniverseCompatibleReleaseTracksCommandrC   r5   r   r4   r   r$   r%   r&   <module>r     s5   C &  % '   2 ( > < < 9 = ; 5 0 8 7 8 @ 1 D G # * 2 8		 
 %)$5$5$8$8 B D%%(()JT\\ J * JZ D%%**+
5 
5 ,
5 D%%++,
5* 
5 -
5r%   