
                            d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z ddlm
Z ddlmZ dd	lmZ dd
Z ej$                  ej&                  j(                         G d dej*                               Z ej$                  ej&                  j.                  ej&                  j0                         G d de             Zy)z:Command for replacing instances of managed instance group.    )absolute_import)division)unicode_literals)base_classes)base)flags)rolling_action)update_instances_utilsc                     t        j                  |        t        j                  |        |rt        j                  |        t        j                  |        y)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                   &    e Zd ZdZed        Zd Zy)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    t        |        t        j                  j                  |        y )Nr   instance_groups_flags%MULTISCOPE_INSTANCE_GROUP_MANAGER_ARGAddArgumentr   s    r   ArgszStartUpdate.Args/   s!    V??KKr   c           	      v   t        j                  | j                               }|j                  }|j                  }|j
                  j                  j                  j                  }t        j                  dd|j                  |j
                        }|j                  t        j                  |||||      g      S )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   RunzStartUpdate.Run5   s    **4+<+<+>?F]]F  IooFF2277 &::{DNNFOOEI$$T69%3Y	@   r   N)__name__
__module____qualname____doc__staticmethodr   r1    r   r   r   r   &   s       
r   r   c                        e Zd ZdZed        Zy)StartUpdateBetar   c                 \    t        | d       t        j                  j                  |        y )NT)r   r   r   s    r   r   zStartUpdateBeta.ArgsM   s#    V-??KKr   N)r2   r3   r4   r5   r6   r   r7   r   r   r9   r9   D   s      r   r9   N)F)r5   
__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ALPHAr9   r7   r   r   <module>rF      s    A &  ' 7 ( ] m U ]A D%%(()$,,  *: D%%**D,=,=,C,CDk  Er   