
                            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
 jr\R$                  " \R&                  R(                  5       " S S\R*                  5      5       r\R$                  " \R&                  R.                  \R&                  R0                  5       " S S\5      5       rg)z:Command for replacing instances of managed instance group.    )absolute_import)division)unicode_literals)base_classes)base)flags)rolling_action)update_instances_utilsc                     [         R                  " U 5        [         R                  " U 5        U(       a  [         R                  " U 5        [         R                  " U 5        g)z
Adds args.N)instance_groups_managed_flagsAddMaxSurgeArgAddMaxUnavailableArgAddMinReadyArgAddReplacementMethodFlag)parsersupports_min_readys     Elib/surface/compute/instance_groups/managed/rolling_action/replace.py_AddArgsr      s=    ..v644V<!00888@    c                   .    \ rS rSrSr\S 5       rS rSrg)StartUpdate&   Replaces instances in a managed instance group.

Deletes the existing instance and creates a new instance from the target
template. The Updater creates a brand new instance with all new instance
properties, such as new internal and external IP addresses.
c                 X    [        U 5        [        R                  R                  U 5        g )Nr   instance_groups_flags%MULTISCOPE_INSTANCE_GROUP_MANAGER_ARGAddArgumentr   s    r   ArgsStartUpdate.Args/   s!    V??KKr   c           	      x   [         R                  " U R                  5       5      nUR                  nUR                  nUR
                  R                  R                  R                  n[        R                  " SSUR                  UR
                  5      nUR                  [        R                  " XUXV5      /5      $ )Nz--max-surgez	max-surge)r   ComputeApiHolderReleaseTrackclient	resourcesmessages InstanceGroupManagerUpdatePolicyMinimalActionValueValuesEnumREPLACEr
   ParseFixedOrPercent	max_surgeMakeRequestsr	   CreateRequest)selfargsholderr%   r&   minimal_actionr,   s          r   RunStartUpdate.Run5   s    **4+<+<+>?F]]F  IooFF2277 &::{DNNFOOEI$$T9%3	@   r    N)	__name__
__module____qualname____firstlineno____doc__staticmethodr    r3   __static_attributes__r5   r   r   r   r   &   s       
r   r   c                   (    \ rS rSrSr\S 5       rSrg)StartUpdateBetaD   r   c                 V    [        U SS9  [        R                  R                  U 5        g )NT)r   r   r   s    r   r    StartUpdateBeta.ArgsM   s#    V-??KKr   r5   N)r6   r7   r8   r9   r:   r;   r    r<   r5   r   r   r>   r>   D   s      r   r>   N)F)r:   
__future__r   r   r   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   2googlecloudsdk.command_lib.compute.instance_groupsr   r   :googlecloudsdk.command_lib.compute.instance_groups.managedr   r	   :googlecloudsdk.command_lib.compute.managed_instance_groupsr
   r   ReleaseTracksr$   GACommandr   BETAALPHAr>   r5   r   r   <module>rM      s    A &  ' 7 ( ] m U ]A D%%(()$,,  *: D%%**D,=,=,C,CDk  Er   