
    9                        S r SSK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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\RJ                  5      r&\	RN                  RP                  4S jr)\	RT                  \	RV                  " \	RN                  RX                  5       " S S\	RZ                  5      5       5       r.\	RN                  RP                  4S jr/\	RV                  " \	RN                  R`                  5       " S S \.5      5       r1\.R                   \1l         g)!zVDeploy a container to Cloud Run that will handle workloads that are not ingress based.    N)api_enabler)apis)base)
exceptions)docker_util)artifact_registry)connection_context)container_parser)flags)messages_util)pretty_print)resource_args)resource_name_conversion)stages)config_changes)flags_parser)worker_pools_operations)concept_parsers)presentation_specs)
properties)
console_io)progress_trackerc                       \ rS rSrSrSrSrg)	BuildType-   
Dockerfile
Buildpacks N)__name__
__module____qualname____firstlineno__
DOCKERFILE
BUILDPACKS__static_attributes__r       &lib/surface/run/worker_pools/deploy.pyr   r   -   s    **r&   r   c                    Sn[         R                  " US9nUR                  [        R                  " 5       5        UR                  [        R
                  " U S95        UR                  [        R                  " 5       5        UR                  [        R                  " 5       5        UR                  [        R                  " 5       5        UR                  [        R                  " 5       5        UR                  [        R                  " 5       5        UR                  [        R                  " 5       5        UR                  [        R                  " 5       5        UR                  [        R                  " 5       5        UR                  [        R                  " 5       5        U [         R                   R"                  :X  d  U [         R                   R$                  :X  a$  UR                  [        R&                  " 5       5        U$ )z9Returns an argument group with all container deploy args.z@
Container Flags

  The following flags apply to the container.
)help)release_track)r   ArgumentGroupAddArgumentr   SourceAndImageFlagsMutexEnvVarsFlags
MemoryFlagCpuFlagArgsFlagr   SecretsFlagsDependsOnFlagCommandFlagAddVolumeMountFlagRemoveVolumeMountFlagClearVolumeMountsFlagReleaseTrackALPHABETAGpuFlag)r*   	help_textgroups      r'   ContainerArgGroupr>   2   sX   )
 

)
,%E--/0E++-HIE$$&'EMMO$ENN$%L--/0E'')*E%%'(E,,./E//12E//12 t((...	$++00	0	emmo&	,r&   c                   f    \ rS rSrSrSSS.r\S 5       r\S 5       rS r	S	 r
S
 rS rS rS rSrg)DeployP   )Create or update a Cloud Run worker-pool.z@          Creates or updates a Cloud Run worker-pool.
          af            To deploy a container to the worker-pool `my-backend` on Cloud Run:

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

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

              $ {command} --image=us-docker.pkg.dev/project/image
          )DESCRIPTIONEXAMPLESc                    [         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                  " XR                  5       5        [         R                  " XR                  5       SS9  [         R                  " USS9  [         R                   " 5       R#                  U5        [         R$                  " U5        [         R&                  " U5        [         R(                  " U5        [         R*                  " U5        [         R,                  " U5        [         R.                  " U5        [         R0                  " U5        [         R2                  " U5        [4        R6                  " S[8        R:                  " SS9SSSS	9n[<        R>                  " U/5      R#                  U5        UR@                  RC                  S
5        g )Nworker)r*   resource_kind)rG   WORKER_POOLT)promptzWorkerPool to deploy to.F)requiredprefixesnone)"r   AddBinAuthzPolicyFlagsAddBinAuthzBreakglassFlagr   AddCloudSQLFlagsAddCmekKeyFlag"AddCmekKeyRevocationActionTypeFlagAddDescriptionFlagAddEgressSettingsFlag!AddEncryptionKeyShutdownHoursFlagAddRevisionSuffixArgAddRuntimeFlagAddVolumesFlagsr8   AddScalingFlag AddVpcNetworkGroupFlagsForUpdateRemoveContainersFlagAddToParserAddAsyncFlagAddLabelsFlagsAddGeneralAnnotationFlagsAddServiceAccountFlagAddClientNameAndVersionFlagsAddNoPromoteFlagAddGpuTypeFlagGpuZonalRedundancyFlagr   ResourcePresentationSpecr   GetV2WorkerPoolResourceSpecr   ConceptParserdisplay_info	AddFormat)clsparserworker_pool_presentations      r'   
CommonArgsDeploy.CommonArgse   s   	  (	##F+!!&)	 	,,V4	V$	'	++F3	v&	 	&"2"2"45	..0 
**6J	 ,,V4	v	 	##F+	'	&&v.	6"	 	  (1JJ11>"  !!#;"<=II !!&)r&   c                     U R                  U5        [        U R                  5       5      n[        R                  " XU R                  5       5        g N)rl   r>   r8   r
   AddContainerFlagsri   rj   container_argss      r'   ArgsDeploy.Args   s=    NN6&s'7'7'9:N&& 0 0 2r&   c                     [         R                  " XR                  5       5      nUR                  S[        R
                  " SS95        UR                  [        R                  " U R                  5       5      5        U$ )zBReturns the worker pool config changes with some default settings.r   N)breakglass_justification)r   !GetWorkerPoolConfigurationChangesr8   insertconfig_changes_modBinaryAuthorizationChangeappendSetLaunchStageChange)selfargschangess      r'   _GetBaseChangesDeploy._GetBaseChanges   sh    <<!G NN	44%)	
 NN%::4;L;L;NOPNr&   c                     [         R                  " US5      (       a  UR                  nOSU0n[        U5      S:  a  [        R
                  " SS5      eU$ )N
containers 
   --containerz.Worker pools may include at most 10 containers)r   FlagIsExplicitlySetr   lenc_exceptionsInvalidArgumentException)r}   r~   r   s      r'   _ValidateAndGetContainers Deploy._ValidateAndGetContainers   sT      |44??j:j
:11
I  r&   c                    UR                  5        VVs0 s H;  u  p#UR                  S5      (       a  [        R                  " US5      (       d  M9  X#_M=     nnn[	        U5      S:  av  UR                  5        VVs/ s H%  u  p#[        R                  " US5      (       a  M#  UPM'     nnnU(       a  [
        R                  " U5      e[        R                  " SS5      eUR                  5        H  u  p#[        R                  " US5      (       a  M#  [        R                  " 5       (       a  [        R                  " U5      Ul        MZ  U(       a  SR                  U5      nOSn[        R                  " SU5      e   U$ s  snnf s  snnf )	Nimagesource   r   z2At most one container can be deployed from source.zwContainer {} requires a container image to deploy (e.g. `gcr.io/cloudrun/hello:latest`) if no build source is provided.zjRequires a container image to deploy (e.g. `gcr.io/cloudrun/hello:latest`) if no build source is provided.z--image)itemsIsSpecifiedr   r   r   r   RequiredImageArgumentExceptionr   r   r   	CanPromptPromptForDefaultSourcer   formatRequiredArgumentException)r}   r   name	containerbuild_from_sourceneeds_imagemessages          r'   _ValidateAndGetBuildFromSource%Deploy._ValidateAndGetBuildFromSource   sj     *//11OD%%g..((H=	 	1   ! "3!8!8!:!:od**9h? !:  
 
77DD11
M  -224&&y(;;!!"99$?)
#VD\  
 66 # 5* Qs   8E>E>;"F!Fc                 .    [         R                  " 5       /$ ro   )r   get_run_api)r}   s    r'   _GetRequiredApisDeploy._GetRequiredApis   s    ##%&&r&   c                    [        [        UR                  5       5      5      u  pVS nS nS n	UR                  n
[        R
                  " [        R                  R                  R                  R                  SS9[        R                  " U5      SS9n[        R                  " XS9(       a  Un	SR                  UR                  5       UR                   S9Ul        U
S-   n[$        R&                  R)                  U5      (       a  [*        R,                  nO)[/        X`R1                  5       5      n[*        R2                  nU(       a  S OUR"                  nS	R                  UR4                  S
9nUUU
UU	U4$ )NT)rJ   zcloud-run-source-deploy)
project_idlocation_idrepo_id)skip_activation_promptz{repo}/{worker_pool})repoworker_poolz/Dockerfilez6Building using {build_type} and deploying container to)
build_type)nextiterr   r   r   
DockerRepor   VALUEScoreprojectGetr   
RepoRegionShouldCreateRepositoryr   GetDockerStringworkerPoolsIdr   ospathexistsr   r#   _CreateBuildPackr8   r$   value)r}   r~   r   already_activated_servicesworker_pool_refr   rr   packr   repo_to_creater   ar_repodocker_filer   operation_messages                  r'   _BuildFromSourceDeploy._BuildFromSource   sY     %6%<%<%> ?@DDJN""F$$$$))1155t5D%006)G
 // n 288$$&#11 9 N =(K	ww~~k""''jn.?.?.ABd''jDn22E 	Af
((f) 
 	 r&   c                    ^ U R                  T5      nU R                  U5      nTR                  R                  R	                  5       n[
        R                  " U5        U R                  5       nU(       a"  UR                  S5        UR                  S5        [        R                  " [        R                  R                  R                  R                  5       U5      n[         R"                  " T[
        R$                  R&                  U R)                  5       5      nU4S jn[*        R,                  " SSUS9n	[.        R0                  " U	5      n
U
R3                  U5      n[4        R6                  " TU5        SnSnSnSnSnSnU(       a  U R9                  TX6U5      u  nnnnnn[:        R<                  " [4        R>                  " UUUS	S
95        U RA                  T5      nSnUc  US-  nUS-  n[B        RD                  " U[F        RH                  " [K        U5      USLS9STRL                  S9 nU
RO                  UUU R)                  5       UUUUUUUUSS9nU(       d/  [P        RR                  " SRU                  URV                  5      5      e SSS5        TRL                  (       a.  [:        RX                  " SRU                  URV                  S95        gWR[                  5         SRU                  URV                  S9nUR\                  (       aW  UR\                  R^                  (       a<  [`        Rb                  " UR\                  R^                  5      nUSRU                  US9-  n[:        RX                  " US-   5        g! , (       d  f       N= f)z+Deploy a WorkerPool container to Cloud Run.zartifactregistry.googleapis.comzcloudbuild.googleapis.comc                 p   > TR                   R                  R                  5       R                  nUS-   U -   $ )N-)CONCEPTSr   ParselocationsId)endpointregionr~   s     r'   DeriveRegionalEndpoint*Deploy.Run.<locals>.DeriveRegionalEndpoint&  s0    }}((..0<<fc\H$$r&   runv2)address_override_funcNzDeploying container tozworker pool)resource_kind_lower	Deployingz new worker poolz...)include_buildinclude_create_repozDeployment failed)failure_messagesuppress_outputT)	trackerprefetchbuild_image
build_packbuild_source build_from_source_container_namer   r   force_new_revisionzCannot deploy worker pool [{}]zNWorker pool [{{bold}}{worker_pool}{{reset}}] is being deployed asynchronously.)r   z,Worker pool [{{bold}}{worker_pool}{{reset}}]z" revision [{{bold}}{rev}{{reset}}])revz has been deployed.)2r   r   r   r   r   r   ValidateResourcer   r{   r   check_and_enable_apisr   r   r   r   r   r	   GetConnectionContextProductRUNr8   r   GetGapicClientInstancer   WorkerPoolsOperationsGetWorkerPoolr   *MaybeLogDefaultGpuTypeMessageForV2Resourcer   r   InfoGetStartDeployMessager   r   StagedProgressTrackerr   WorkerPoolStagesboolasync_ReleaseWorkerPoolr   ArgumentErrorr   r   Successresultmetadatalatest_created_revisionr   GetNameFromFullChildName)r}   r~   r   r   r   required_apisr   conn_contextr   
run_clientworker_pools_clientr   r   r   r   r   r   container_namer   headerr   responsemsgr   s    `                      r'   Run
Deploy.Run  sc   //5J;;JGmm//557O	?+))+M<=67!,!B!B&&**,m" &::L% ,,t+AJ 2GG &33ODK<<T;OKJL0NN 


!





 ++ -		
 ))$/NF""f
eOF		/	/01 .d :	
 ,
 
$66





!#+9'%?! 7 h &&,33--
 	
 1
> {{"F/L/LFM
 oo:AA%33 B c 
		x00HH&??55
 	3::s:CC3!667]
 
s   -AM??
Nr   N)r   r    r!   r"   __doc__detailed_helpclassmethodrl   rs   r   r   r   r   r   r   r%   r   r&   r'   r@   r@   P   sb     2		-  $* $*L  
)V'0ds8r&   r@   c                     SU R                   0/nU[        R                  R                  :w  aE  [	        U SS5      nUb5  SR                  U5      nUS   R                  SSR                  US9/05        U$ )	z&A helper method to cofigure buildpack.r   commandN r   envszGOOGLE_ENTRYPOINT="{command}")r  )r   r   r8   GAgetattrjoinupdater   )r   r*   r   command_argr  s        r'   r   r     sz    IOO
$	%$d''***)Y5K%g
1gnn3::7:KL
M 
+r&   c                   (    \ rS rSrSr\S 5       rSrg)AlphaDeployi  rB   c                     U R                  U5        [        R                  " U5        [        R                  " U5        [	        U R                  5       5      n[        R                  " XU R                  5       5        g ro   )rl   r   AddWorkerPoolMinInstancesFlagAddWorkerPoolMaxInstancesFlagr>   r8   r
   rp   rq   s      r'   rs   AlphaDeploy.Args  sY    NN6	''/	''/&s'7'7'9:N&& 0 0 2r&   r   N)r   r    r!   r"   r   r  rs   r%   r   r&   r'   r  r    s    1 r&   r  )2r   enumos.pathr   googlecloudsdk.api_lib.runr   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper   r   r   $googlecloudsdk.command_lib.artifactsr   googlecloudsdk.command_lib.runr   r	   r
   r   r   r   r   r   r   !googlecloudsdk.command_lib.run.v2r   ry   r   r   (googlecloudsdk.command_lib.util.conceptsr   r   googlecloudsdk.corer   googlecloudsdk.core.consoler   r   Enumr   r8   r  r>   UniverseCompatibleReleaseTracksr:   Commandr@   r   r9   r  r   r&   r'   <module>r      s   ]   2 , ( > < < = ; 5 0 8 7 8 C 1 R : E D G * 2 8		 
 %)$5$5$8$8 < D%%**+o8T\\ o8 , o8d	 /3.?.?.B.B 
 D%%++,&  - nn r&   