
    T                        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  \R6                  \R8                  " \R:                  R<                  \R:                  R>                  5       " S S\R@                  5      5       5       r!g)z>Command for updating instances split for worker-pool resource.    )apis)base)
exceptions)flags)pretty_print)resource_args)stages)instance_split_printer)config_changes)flags_parser)instance_split)worker_pools_operations)concept_parsers)presentation_specs)progress_tracker)resource_printerc                   N    \ rS rSrSrSSS.r\S 5       r\S 5       rS r	S	 r
S
rg)AdjustInstanceSplit#   z<Adjust the instance assignments for a Cloud Run worker-pool.z"          {description}
          a*            To assign 10% of instances to revision my-worker-pool-s5sxn and
          90% of instances to revision my-worker-pool-cp9kw run:

              $ {command} my-worker-pool --to-revisions=my-worker-pool-s5sxn=10,my-worker-pool-cp9kw=90

          To increase the instances to revision my-worker-pool-s5sxn to 20% and
          by reducing the instances to revision my-worker-pool-cp9kw to 80% run:

              $ {command} my-worker-pool --to-revisions=my-worker-pool-s5sxn=20

          To rollback to revision my-worker-pool-cp9kw run:

              $ {command} my-worker-pool --to-revisions=my-worker-pool-cp9kw=100

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

              $ {command} my-worker-pool --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
          instances to always float to the latest revision:

              $ {command} my-worker-pool --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WORKER_POOLT)promptz'WorkerPool to update instance split of.F)requiredprefixes)r   ResourcePresentationSpecr   GetV2WorkerPoolResourceSpecr   ConceptParserAddToParserr   AddAsyncFlagAddUpdateInstanceSplitFlagsAddBinAuthzBreakglassFlagr   RegisterFormatterr
   INSTANCE_SPLIT_PRINTER_FORMATInstanceSplitPrinterdisplay_info	AddFormat)clsparserworker_pool_presentations      5lib/surface/run/worker_pools/update_instance_split.py
CommonArgsAdjustInstanceSplit.CommonArgsI   s    1JJ11>1  !!#;"<=II 
v	%%f-	##F+&&<<33 !!<<    c                 &    U R                  U5        g )N)r-   )r)   r*   s     r,   ArgsAdjustInstanceSplit.Argsa   s    NN6r/   c                 6   [         R                  " XR                  5       5      nU(       d  [        R                  " S5      e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.z1No instance split configuration change requested.r   N)breakglass_justification)
r   !GetWorkerPoolConfigurationChangesReleaseTrackserverless_exceptionsNoConfigurationChangeErrorinsertconfig_changes_modBinaryAuthorizationChangeappendSetLaunchStageChange)selfargschangess      r,   _GetBaseChanges#AdjustInstanceSplit._GetBaseChangese   s    <<!G !<<
=  NN	44%)	
 NN%::4;L;L;NOPNr/   c                   ^ TR                   R                  R                  5       n[        R                  " U5        U4S jn[
        R                  " SSUS9n[        R                  " U5      nU R                  T5      n[        R                  " S[        R                  " 5       STR                  S9   UR                  UU5      nTR                  (       a  [         R"                  " S5        O9UR%                  5         [&        R(                  " UR*                  5      sS	S	S	5        $  S	S	S	5        g	! , (       d  f       g	= f)
z)Update the instance split for the worker.c                 p   > TR                   R                  R                  5       R                  nUS-   U -   $ )N-)CONCEPTSworker_poolParselocationsId)endpointregionr?   s     r,   DeriveRegionalEndpoint7AdjustInstanceSplit.Run.<locals>.DeriveRegionalEndpoint|   s0    }}((..0<<fc\H$$r/   runv2)address_override_funczUpdating instance split...zUpdating instance split failed)failure_messagesuppress_outputz'Updating instance split asynchronously.N)rF   rG   rH   r   ValidateResourcer   GetGapicClientInstancer   WorkerPoolsOperationsrA   r   StagedProgressTrackerr	   UpdateInstanceSplitStagesasync_UpdateInstanceSplitr   Successresultr   GetInstanceSplitPairsmetadata)r>   r?   worker_pool_refrL   
run_clientworker_pools_clientr   responses    `      r,   RunAdjustInstanceSplit.Runw   s   mm//557O	?+% ,,t+AJ 2GG ))$/N		/	/$((*8	
 %88

h
 
FG33H4E4EF
 
 	H
 
 
s   3A*D11
D? N)__name__
__module____qualname____firstlineno____doc__detailed_helpclassmethodr-   r1   rA   rb   __static_attributes__rd   r/   r,   r   r   #   sM     E	-B  .  $Gr/   r   N)"ri   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper   googlecloudsdk.command_lib.runr   r7   r   r   r   r	   *googlecloudsdk.command_lib.run.printers.v2r
   !googlecloudsdk.command_lib.run.v2r   r:   r   r   r   (googlecloudsdk.command_lib.util.conceptsr   r   googlecloudsdk.core.consoler   googlecloudsdk.core.resourcer   UniverseCompatibleReleaseTracksr6   ALPHABETACommandr   rd   r/   r,   <module>rz      s    E , ( N 0 7 8 1 M R : < E D G 8 9 D%%++T->->-C-CDqG$,, qG E qGr/   