
    ]4                        S 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  \R4                  \R6                  R8                  4S j5       r\R4                  \R<                  " \R6                  R8                  5       " S S\R>                  5      5       5       r \R<                  " \R6                  RB                  5       " S S\ 5      5       r"\R<                  " \R6                  RF                  5       " S S\"5      5       r$\ R                   \$l         g)z;Command for updating env vars and other configuration info.    )
k8s_object)traffic)base)config_changes)connection_context)container_parser)
exceptions)flags)iap_util)messages_util)pretty_print)resource_args)resource_change_validators)serverless_operations)stages)concept_parsers)presentation_specs)
properties)progress_trackerc                    Sn[         R                  " US9nUR                  [        R                  " SS95        UR                  [        R
                  " 5       5        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"                  " 5       5        UR                  [        R$                  " 5       5        UR                  [        R&                  " 5       5        U$ )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.
    )helpFrequired)release_track)r   ArgumentGroupAddArgumentr
   ImageArgPortArg	Http2FlagMutexEnvVarsFlags
MemoryFlagCpuFlagCommandFlagArgsFlagSecretsFlagsDependsOnFlagAddVolumeMountFlagRemoveVolumeMountFlagClearVolumeMountsFlagStartupProbeFlagLivenessProbeFlagGpuFlag)r   	help_textgroups      "lib/surface/run/services/update.pyContainerArgGroupr0   '   s   ) 

)
,%ENNE23EMMO$EOO%&E++-HIE$$&'EMMO$E%%'(ENN$%E&&()E'')*E,,./E//12E//12E**,-E++-.EMMO$	,    c                   t    \ rS rSrSrSSS.rSr\S 5       r\S 5       r	S	 r
S
 rSS jrS rS rS rS rSrg)UpdateG   HUpdate Cloud Run environment variables and other configuration settings.z"          {description}
          z          To update one or more env vars:

              $ {command} myservice --update-env-vars=KEY1=VALUE1,KEY2=VALUE2
         )DESCRIPTIONEXAMPLESzZ`--update-env-vars`, `--memory`, `--concurrency`, `--timeout`, `--connectivity`, `--image`c                    [         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        [         R&                  " U5        [         R(                  " 5       R+                  U5        [         R,                  " XR/                  5       5        [         R0                  " U5        [         R2                  " U5        [         R4                  " U5        [         R6                  " U5        [         R8                  R+                  U5        [:        R<                  " S[>        R@                  " SS9SSSS9n[         RB                  " U5        [         RD                  " U5        [         RF                  " U5        [         RH                  " U5        [         RJ                  " U5        [         RL                  " U5        [         RN                  " U5        [         RP                  " U5        [         RR                  " U5        [         RT                  " U5        [         RV                  " U5        [         RX                  " U5        [         RZ                  " U5        [\        R^                  " U/5      R+                  U5        UR`                  Rc                  S5        g )NSERVICET)promptz'Service to update the configuration of.F)r   prefixesnone)2r
   AddBinAuthzPolicyFlagsAddBinAuthzBreakglassFlagAddCloudSQLFlagsAddCmekKeyFlag"AddCmekKeyRevocationActionTypeFlagAddCpuThrottlingFlagAddCustomAudiencesFlagAddDefaultUrlFlagAddDeployHealthCheckFlagAddEgressSettingsFlag!AddEncryptionKeyShutdownHoursFlagAddGpuTypeFlagGpuZonalRedundancyFlagAddRevisionSuffixArgAddSandboxArgAddSessionAffinityFlagAddStartupCpuBoostFlagAddVpcConnectorArgs AddVpcNetworkGroupFlagsForUpdateRemoveContainersFlagAddToParserAddVolumesFlagsReleaseTrackAddServiceMinMaxInstancesFlagAddInvokerIamCheckFlagAddScalingFlagAddEndpointVisibilityEnumCONFIG_MAP_FLAGSr   ResourcePresentationSpecr   GetServiceResourceSpecAddConcurrencyFlagAddTimeoutFlagAddAsyncFlagAddLabelsFlagsAddGeneralAnnotationFlagsAddMinInstancesFlagAddMaxInstancesFlagAddNoTrafficFlagAddDeployTagFlagAddServiceAccountFlagAddClientNameAndVersionFlagsAddIngressFlag
AddIapFlagr   ConceptParserdisplay_info	AddFormat)clsparserservice_presentations      r/   
CommonArgsUpdate.CommonArgs\   s    
  (	##F+	6"	 	,,V4	v&	  (	F#	""6*	'	++F3	 	  (	v&		  (	  (	f%	**62	 ,,V4	&"2"2"45	''/	  (	 	##F+	&&v. .FF,,D91 
V$	 	v	 	##F+	f%	f%	6"	6"	'	&&v.	 	V!!#7"89EEfM
!!&)r1   c                     [         R                  U5        [        U R                  5       5      n[        R
                  " XU R                  5       5        g N)r3   rn   r0   rS   r   AddContainerFlagsrk   rl   container_argss      r/   ArgsUpdate.Args   s?    
f&s'7'7'9:N&& 0 0 2r1   c                 ~    [         R                  " U[        R                  R                  U R                  5       5      $ rq   )r   GetConnectionContextr
   ProductRUNrS   selfargss     r/   _ConnectionContextUpdate._ConnectionContext   s/    22emm!2!2!4 r1   c                     U(       a  g U(       a1  [        U5      S:X  aH  [        US   [        R                  5      (       a%  [        R
                  " SR                  U5      5      eg g )N   r   zHNo configuration change requested. Did you mean to include the flags {}?)len
isinstancer   'SetClientNameAndVersionAnnotationChanger	   NoConfigurationChangeErrorformat)r|   changes
flags_textignore_emptys       r/   _AssertChangesUpdate._AssertChanges   sb    GAJBB
 

 11228&2D 
 	r1   Nc                 T   [         R                  " XR                  5       5      nU R                  X@R                  U5        UR                  S[        R                  " [        R                  5      5        UR                  [        R                  " U R                  5       5      5        U$ )Nr   )r
   GetServiceConfigurationChangesrS   r   input_flagsinsertr   DeleteAnnotationChanger   BINAUTHZ_BREAKGLASS_ANNOTATIONappendSetLaunchStageAnnotationChange)r|   r}   existing_servicer   r   s        r/   _GetBaseChangesUpdate._GetBaseChanges   s    2249J9J9LMG!1!1<@NN	--55	
 NN55d6G6G6IJ Nr1   c                     gNF )r|   s    r/   _IsMultiRegionUpdate._IsMultiRegion   s    r1   c                     g rq   r   )r|   r   services      r/   _GetMultiRegionRegionsUpdate._GetMultiRegionRegions   s    r1   c                 T    [         R                  " US5      (       a  UR                  $ g )Niap)r
   FlagIsExplicitlySetr   r{   s     r/   _GetIapUpdate._GetIap   s!      u--XXor1   c                   ^ ^^
^^^^^^^ T R                  T5      nTR                  R                  R                  5       m[        R
                  " T5        T R                  T5      m[        R                  R                  R                  R                  SS9nT(       aL  [        R                  " U5      (       a1  [        R                  " T 5      (       d  [        R                   " S5        ["        R$                  " U5       m
T
R'                  T5      m[(        R*                  " TT5        T R-                  TT5      n[.        R0                  " TT5        TSL =(       d    [2        R4                  TR6                  ;   n[8        R:                  " U5      nT R=                  UT5      m[>        R@                  " SU=(       a    UUTTSLS9mU(       a  SmSmS	nOS
mSmSnUU
UUUUUU UU4
S jn U" U5      mTRN                  (       aM  T(       a/  [        RP                  " SRS                  TRT                  US95        O[        R                   " S5        OT(       ak  U(       a6  [        RP                  " [(        RV                  " TTRX                  5      5        OD[        RP                  " SRS                  TRT                  S95        O[        R                   " S5        TsSSS5        $ ! [B        RD                   a]  n	[        RF                  " T[I        U	5      5      (       a1  URK                  [8        RL                  " SS95        U" U5      m Sn	A	GN[U	eSn	A	ff = f! , (       d  f       g= f)zUpdate the service resource.

   Different from `deploy` in that it can only update the service spec but
   no IAM or Cloud build changes.

Args:
  args: Args!

Returns:
  googlecloudsdk.api_lib.run.Service, the updated service
Tr   aI  
 {bold}**[Warning]**{reset} Deploying services with IAP enabled in a project outside of an Organization and may require initial setup via the Cloud Console. Please use the Cloud Run UI to enable IAP for the first time in the project. https://cloud.google.com/run/docs/securing/identity-aware-proxy-cloud-run#custom-oauth-client
NF)include_iam_policy_setinclude_routeinclude_create_revisionregions_listinclude_iapzDeploying...zDeployment failed	deployingzUpdating...zUpdate failedupdatingc                   >
 [         R                  " TTTTR                  S9 nTR                  TU T	R	                  5       UTR                  T
[
        R                  " TS5      =(       d    [
        R                  " TS5      [        R                  R                  R                  R                  5       S:H  TTS9
sS S S 5        $ ! , (       d  f       g = f)N)failure_messagesuppress_outputrevision_suffixtagdebug)asynprefetchgenerate_name
is_verboseiap_enabledmultiregion_regions)r   StagedProgressTrackerasync_ReleaseServicerS   r
   r   r   VALUEScore	verbosityGet)changes_trackerr}   clientdeployment_stagesr   r   r   progress_messager|   r   service_refs     r/   _ReleaseService#Update.Run.<locals>._ReleaseService  s    33+ KK	

 &&!;;++D2CD <..tU;#**//99==?7J"5 ' 
 
 
s   BC
C)gpu_zonal_redundancyzEService [{{bold}}{serv}{{reset}}] is {result_message} asynchronously.)servresult_messagez*Service update/deployment may have failed.z3Service [{{bold}}{serv}{{reset}}] has been updated.)r   )-r~   CONCEPTSr   Parser
   ValidateResourcer   r   r   r   projectr   r   IsOrglessProjectIsIapAlreadyEnabledr   Infor   Connect
GetServicer   MaybeLogDefaultGpuTypeMessager   r   ValidateClearVpcConnectorr   LATEST_REVISION_KEYspec_trafficr   AdjustsTemplater   r   ServiceStagesr	   	HttpErrorShouldRetryNoZonalRedundancystrr   GpuZonalRedundancyChanger   Successr   name%GetSuccessMessageForSynchronousDeploy
no_traffic)r|   r}   conn_context
project_idr   
has_latestcreates_revisionr   r   er   r   r   r   r   r   r   r   s   ``        @@@@@@@@r/   Run
Update.Run   s    **40L--''--/K	;'
,,t
C""''//33T3BJ


#
#J
/
/..t44n	
 
	&	&|	4!!+.g11$@$$T73g ::7DI
T/
PW88G<P<PP  (77@ 77I ..!&(7Z"2*o 
)-$()# .!'* 



  &||N !' ! 

H
I  CCT__   ELL  M  

H
Iq 
5	4f !! 	--dCF;;
..55',
 $G,''	g 
5	4s?   C(M*K#2C'M#M7AMMMMM
M%r   r   )__name__
__module____qualname____firstlineno____doc__detailed_helpr   classmethodrn   ru   r~   r   r   r   r   r   r   __static_attributes__r   r1   r/   r3   r3   G   sp     Q		-% 
 5* 5*n  

xr1   r3   c                   ,    \ rS rSrSrSr\S 5       rSrg)
BetaUpdateiD  r5   c`--update-env-vars`, `--memory`, `--concurrency`, `--timeout`, `--connectivity`, `--image`, `--iap`c                 (   U R                  U5        [        R                  R                  U5        [	        U R                  5       5      nUR                  [        R                  " 5       5        [        R                  " XU R                  5       5        g rq   )
rn   r
   SERVICE_MESH_FLAGrQ   r0   rS   r   ReadinessProbeFlagr   rr   rs   s      r/   ru   BetaUpdate.ArgsM  sj    NN6 
''/&s'7'7'9:Nu779:&& 0 0 2r1   r   N	r   r   r   r   r   r   r   ru   r   r   r1   r/   r   r   D  s#    P. 
 	 	r1   r   c                   ,    \ rS rSrSrSr\S 5       rSrg)AlphaUpdateiZ  r5   r   c                 (   U R                  U5        [        R                  " U5        [        R                  " U5        [        R                  R                  U5        [        R                  R                  U5        [        R                  R                  U5        [        R                  R                  U5        [        R                  R                  U5        [        R                  " U5        [        R                  " U5        [        R                  " U5        [        R                  " U5        [        U R                  5       5      nUR!                  [        R"                  " 5       5        [$        R&                  " XU R                  5       5        g rq   )rn   r
   AddRuntimeFlagAddDescriptionFlagr   rQ   IDENTITY_FLAGIDENTITY_CERTIFICATE_FLAGIDENTITY_TYPE_FLAGMESH_DATAPLANE_FLAGAddOverflowScalingFlagAddCpuUtilizationFlagAddConcurrencyUtilizationFlagAddClearPresetFlagr0   rS   r   r   r   rr   rs   s      r/   ru   AlphaUpdate.Argsc  s   NN6 
 	V$	''/	##F+	##//7	((0	))&1	  (	'	''/	V$&s'7'7'9:Nu779:&& 0 0 2r1   r   Nr   r   r1   r/   r   r   Z  s#    P. 
  r1   r   N)%r   googlecloudsdk.api_lib.runr   r   googlecloudsdk.callioper   googlecloudsdk.command_lib.runr   r   r   r	   r
   r   r   r   r   r   r   r   (googlecloudsdk.command_lib.util.conceptsr   r   googlecloudsdk.corer   googlecloudsdk.core.consoler   UniverseCompatiblerS   GAr0   ReleaseTracksCommandr3   BETAr   ALPHAr   r   r1   r/   <module>r     s)   B 2 . ( 9 = ; 5 0 3 8 7 8 E @ 1 D G * 8 $($5$5$8$8  > D%%(()xT\\ x * xv D%%**+  ,* D%%++,*  -> nn r1   