
    0                        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  \R2                  \R4                  R6                  4S j5       r\R2                  \R:                  " \R4                  R6                  5       " S S\R<                  5      5       5       r\R:                  " \R4                  R@                  5       " S S\5      5       r!\R:                  " \R4                  RD                  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)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ContainerArgGroupr.   %   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)UpdateE   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        [Z        R\                  " U/5      R+                  U5        UR^                  Ra                  S5        g )NSERVICET)promptz'Service to update the configuration of.F)r   prefixesnone)1r
   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AddIngressFlagr   ConceptParserdisplay_info	AddFormat)clsparserservice_presentations      r-   
CommonArgsUpdate.CommonArgsZ   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.	 !!#7"89EEfM
!!&)r/   c                     [         R                  U5        [        U R                  5       5      n[        R
                  " XU R                  5       5        g N)r1   rk   r.   rQ   r   AddContainerFlagsrh   ri   container_argss      r-   ArgsUpdate.Args   s?    
f&s'7'7'9:N&& 0 0 2r/   c                 ~    [         R                  " U[        R                  R                  U R                  5       5      $ rn   )r   GetConnectionContextr
   ProductRUNrQ   selfargss     r-   _ConnectionContextUpdate._ConnectionContext   s/    22emm!2!2!4 r/   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)ry   changes
flags_textignore_emptys       r-   _AssertChangesUpdate._AssertChanges   sb    GAJBB
 

 11228&2D 
 	r/   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
   GetServiceConfigurationChangesrQ   r   input_flagsinsertr   DeleteAnnotationChanger   BINAUTHZ_BREAKGLASS_ANNOTATIONappendSetLaunchStageAnnotationChange)ry   rz   existing_servicer   r   s        r-   _GetBaseChangesUpdate._GetBaseChanges   s    2249J9J9LMG!1!1<@NN	--55	
 NN55d6G6G6IJ Nr/   c                     gNF )ry   s    r-   _IsMultiRegionUpdate._IsMultiRegion   s    r/   c                     g rn   r   )ry   r   services      r-   _GetMultiRegionRegionsUpdate._GetMultiRegionRegions   s    r/   c                 T    [         R                  " US5      (       a  UR                  $ g )Niap)r
   FlagIsExplicitlySetr   rx   s     r-   _GetIapUpdate._GetIap   s!      u--XXor/   c                 P  ^ ^^	^
^^^^^^ T R                  T5      nTR                  R                  R                  5       m[        R
                  " T5        T R                  T5      m[        R                  " U5       m	T	R                  T5      m[        R                  " TT5        T R                  TT5      n[        R                  " TT5        TSL =(       d    [        R                   TR"                  ;   n[$        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R:                  (       a/  [<        R>                  " SRA                  TRB                  US95        OjU(       a6  [<        R>                  " [        RD                  " TTRF                  5      5        O-[<        R>                  " SRA                  TRB                  S95        TsSSS5        $ ! [.        R0                   a]  n[        R2                  " T[5        U5      5      (       a1  UR7                  [$        R8                  " 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
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_ReleaseServicerQ   r
   r   r   VALUEScore	verbosityGet)changes_trackerrz   clientdeployment_stagesr   r   r   progress_messagery   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_messagez3Service [{{bold}}{serv}{{reset}}] has been updated.)r   )$r{   CONCEPTSr   Parser
   ValidateResourcer   r   Connect
GetServicer   MaybeLogDefaultGpuTypeMessager   r   ValidateClearVpcConnectorr   LATEST_REVISION_KEYspec_trafficr   AdjustsTemplater   r   ServiceStagesr	   	HttpErrorShouldRetryNoZonalRedundancystrr   GpuZonalRedundancyChanger   r   Successr   name%GetSuccessMessageForSynchronousDeploy
no_traffic)ry   rz   conn_contextr   
has_latestcreates_revisionr   r   er   r   r   r   r   r   r   r   s   ``       @@@@@@@@r-   Run
Update.Run   sJ    **40L--''--/K	;'
,,t
C		&	&|	4!!+.g11$@$$T73g ::7DI
T/
PW88G<P<PP  (77@ 77I ..!&(7Z"2*o 
)-$()# .!'* 
$f\\. % 	
 


AA4?? 

CJJ|| K 
 e 
5	4f !! 	--dCF;;
..55',
 $G,''	g 
5	4s?   =C(J&H#.B+J#J7AJJJJJ
J%r   r   )__name__
__module____qualname____firstlineno____doc__detailed_helpr   classmethodrk   rr   r{   r   r   r   r   r   r   __static_attributes__r   r/   r-   r1   r1   E   sp     Q		-% 
 4* 4*l  

cr/   r1   c                   ,    \ rS rSrSrSr\S 5       rSrg)
BetaUpdatei,  r3   c`--update-env-vars`, `--memory`, `--concurrency`, `--timeout`, `--connectivity`, `--image`, `--iap`c                 T   U R                  U5        [        R                  R                  U5        [        R                  " U5        [        U R                  5       5      nUR                  [        R                  " 5       5        [        R                  " XU R                  5       5        g rn   )rk   r
   SERVICE_MESH_FLAGrO   
AddIapFlagr.   rQ   r   ReadinessProbeFlagr   ro   rp   s      r-   rr   BetaUpdate.Args5  sx    NN6 
''/	V&s'7'7'9:Nu779:&& 0 0 2r/   r   N	r   r   r   r   r   r   r   rr   r   r   r/   r-   r   r   ,  s#    P. 
 
 
r/   r   c                   ,    \ rS rSrSrSr\S 5       rSrg)AlphaUpdateiC  r3   r   c                    U R                  U5        [        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                  " 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 rn   )rk   r
   r   AddRuntimeFlagAddDescriptionFlagr   rO   IDENTITY_FLAG ENABLE_WORKLOAD_CERTIFICATE_FLAGMESH_DATAPLANE_FLAGAddOverflowScalingFlagAddCpuUtilizationFlagAddConcurrencyUtilizationFlagAddClearPresetFlagr.   rQ   r   r   r   ro   rp   s      r-   rr   AlphaUpdate.ArgsL  s   NN6 
V	 	V$	''/	##F+	**66v>	))&1	  (	'	''/	V$&s'7'7'9:Nu779:&& 0 0 2r/   r   Nr   r   r/   r-   r   r   C  s#    P. 
  r/   r   N)$r   googlecloudsdk.api_lib.runr   r   googlecloudsdk.callioper   googlecloudsdk.command_lib.runr   r   r   r	   r
   r   r   r   r   r   r   (googlecloudsdk.command_lib.util.conceptsr   r   googlecloudsdk.corer   googlecloudsdk.core.consoler   UniverseCompatiblerQ   GAr.   ReleaseTracksCommandr1   BETAr   ALPHAr   r   r/   r-   <module>r     s$   B 1 . ( 9 = ; 5 0 8 7 8 E @ 1 D G * 8 $($5$5$8$8  > D%%(()bT\\ b * bJ D%%**+  ,, D%%++,*  -> nn r/   