
                            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  SSKJr  SSKJr  SSKJr  SSKJ r   \
RB                  \
RD                  " \
RF                  RH                  5       " S S\
RJ                  5      5       5       r&\
RD                  " \
RF                  RN                  5       " S S\&5      5       r(\
RD                  " \
RF                  RR                  5       " S S\&5      5       r*g) z;Command for updating env vars and other configuration info.    )absolute_import)division)print_function)unicode_literals)
k8s_object)traffic_pair)base)display)config_changes)connection_context)
exceptions)flags)	platforms)pretty_print)resource_args)serverless_operations)stages)traffic_printer)concept_parsers)presentation_specs)
properties)progress_tracker)resource_printerc                   N    \ rS rSrSrSSS.r\S 5       rS r\S 5       r	S	 r
S
rg)AdjustTraffic+   7Adjust the traffic assignments for a Cloud Run service.z"          {description}
          a            To assign 10% of traffic to revision myservice-s5sxn and
          90% of traffic to revision myservice-cp9kw run:

              $ {command} myservice --to-revisions=myservice-s5sxn=10,myservice-cp9kw=90

          To increase the traffic to revision myservice-s5sxn to 20% and
          by reducing the traffic to revision myservice-cp9kw to 80% run:

              $ {command} myservice --to-revisions=myservice-s5sxn=20

          To rollback to revision myservice-cp9kw run:

              $ {command} myservice --to-revisions=myservice-cp9kw=100

          To assign 100% of traffic to the current or future LATEST revision
          run:

              $ {command} myservice --to-latest

          You can also refer to the current or future LATEST revision in
          --to-revisions by the string "LATEST". For example, to set 10% of
          traffic to always float to the latest revision:

              $ {command} myservice --to-revisions=LATEST=10

         )DESCRIPTIONEXAMPLESc                    [         R                  " S[        R                  " SS9SSSS9n[        R
                  " U5        [        R                  " U5        [        R                  " U5        [        R                  " U/5      R                  U5        [        R                  " [        R                  [        R                  5        UR                   R#                  [        R                  5        g )NSERVICET)promptz'Service to update the configuration of.F)requiredprefixes)r   ResourcePresentationSpecr   GetServiceResourceSpecr   AddAsyncFlagAddUpdateTrafficFlagsAddTrafficTagsFlagsr   ConceptParserAddToParserr   RegisterFormatterr   TRAFFIC_PRINTER_FORMATTrafficPrinterdisplay_info	AddFormat)clsparserservice_presentations      *lib/surface/run/services/update_traffic.py
CommonArgsAdjustTraffic.CommonArgsQ   s    -FF,,D91 
v	'	f%!!#7"89EEfM&&..&& !!/"H"HI    c                     g)NF )selfs    r4   IsMultiRegionAdjustTraffic.IsMultiRegione   s    r7   c                 &    U R                  U5        g Nr5   r1   r2   s     r4   ArgsAdjustTraffic.Argsh       NN6r7   c                    [         R                  " U[        R                  R                  U R                  5       U R                  5       S9nUR                  R                  R                  5       n[        R                  " U5        [        R                  " U5      nU(       d  [        R                  " S5      eUR                  S[        R                   " ["        R$                  5      5        UR'                  [        R(                  " U R                  5       5      5        [*        R,                  " 5       [*        R.                  :H  n[0        R2                  " U5       n[4        R6                  " 5       n [8        R:                  " SUSUR<                  S9 nUR?                  UUUUR<                  [@        RB                  RD                  RF                  RI                  5       S:H  U R                  5       5      n	SSS5        UR<                  (       a  [b        Rd                  " S
5        Oa[L        RN                  " W	RP                  U	RR                  UU	RT                  RV                  U	RT                  RX                  5      n
U
sSSS5        $  SSS5        g! , (       d  f       N= f!   URK                  U5      n	U	(       a  [L        RN                  " U	RP                  U	RR                  UU	RT                  RV                  U	RT                  RX                  5      n
[Z        R\                  " XXR_                  5       S	9Ra                  5         e = f! , (       d  f       g= f)zUpdate the traffic split for the service.

Args:
  args: Args!

Returns:
  List of traffic.TrafficTargetStatus instances reflecting the change.
)is_multiregionz*No traffic configuration change requested.r   zUpdating traffic...zUpdating traffic failed)failure_messagesuppress_outputdebugN)r/   z Updating traffic asynchronously.)3r   GetConnectionContextr   ProductRUNReleaseTrackr;   CONCEPTSserviceParseValidateResourceGetServiceConfigurationChangesr   NoConfigurationChangeErrorinsertr   DeleteAnnotationChanger   BINAUTHZ_BREAKGLASS_ANNOTATIONappendSetLaunchStageAnnotationChanger   GetPlatformPLATFORM_MANAGEDr   Connectr   UpdateTrafficStagesr   StagedProgressTrackerasync_UpdateTrafficr   VALUEScore	verbosityGet
GetServicer   GetTrafficTargetPairsspec_trafficstatus_trafficstatuslatestReadyRevisionNameurlr
   	DisplayerGetDisplayInfoDisplayr   Success)r:   argsconn_contextservice_refchanges
is_managedclientdeployment_stagestrackerserv	resourcess              r4   RunAdjustTraffic.Runl   s    &::))+	L --''--/K	;'2248G11
6  NN	--55	
 NN55d6G6G6IJ &&(I,F,FFJ		&	&|	4 44633!5 KK	

 %%kk$$..224?!$
: 
?@ 66KK//KKOO
	 U 
5	4B 	AC 
5	4
 
  -"88!!kk11kkoo) 

)2E2E2GGI= 
5	4sK   M3!J"A"J6J">A?M
J	J"MJ""B"MM
Mr9   N)__name__
__module____qualname____firstlineno____doc__detailed_helpclassmethodr5   r;   rA   rx   __static_attributes__r9   r7   r4   r   r   +   sO     @	-B J J&  Lr7   r   c                   (    \ rS rSrSr\S 5       rSrg)BetaAdjustTraffic   r   c                 &    U R                  U5        g r>   r?   r@   s     r4   rA   BetaAdjustTraffic.Args   rC   r7   r9   Nrz   r{   r|   r}   r~   r   rA   r   r9   r7   r4   r   r      s    ? r7   r   c                   (    \ rS rSrSr\S 5       rSrg)AlphaAdjustTraffic   r   c                 R    U R                  U5        [        R                  " U5        g r>   )r5   r   AddBinAuthzBreakglassFlagr@   s     r4   rA   AlphaAdjustTraffic.Args   s    NN6 
##F+r7   r9   Nr   r9   r7   r4   r   r      s    ?, ,r7   r   N)+r~   
__future__r   r   r   r   googlecloudsdk.api_lib.runr   r   googlecloudsdk.callioper	   r
   googlecloudsdk.command_lib.runr   r   r   r   r   r   r   r   r   'googlecloudsdk.command_lib.run.printersr   (googlecloudsdk.command_lib.util.conceptsr   r   googlecloudsdk.corer   googlecloudsdk.core.consoler   googlecloudsdk.core.resourcer   UniverseCompatibleReleaseTracksrL   GACommandr   BETAr   ALPHAr   r9   r7   r4   <module>r      s    B &  % ' 1 3 ( + 9 = 5 0 4 7 8 @ 1 C D G * 8 9 D%%(()KDLL K * K\ D%%**+  , D%%++,, , -,r7   