
    I'                        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rSS jr\
R0                  " \
R2                  R4                  5       " S S\
R6                  5      5       rSSSS.\l        \
R0                  " \
R2                  R<                  \
R2                  R>                  5       " S S\5      5       r \R:                  \ l        g)z9Command for updating instances of managed instance group.    )absolute_import)division)unicode_literals)base_classes)managed_instance_groups_utils)arg_parsers)base)flags)scope)rolling_action)update_instances_utilstemplatec           	      `   [         R                  " U 5        [         R                  " U 5        [         R                  " U 5        U(       a  [         R                  " U 5        [         R
                  " U 5        U R                  S[        R                  " [        [        S.S9SSSS9  U R                  S[        R                  " [        [        [        S	.S9[        R                  S
SS9  [         R                  " U 5        [         R                  " U SS5        [         R                  " U SS5        g)z
Adds args.	--version)r   name)specztemplate=TEMPLATE,[name=NAME]ztOriginal instance template resource to be used. Each version has the following format: template=TEMPLATE,[name=NAME]T)typemetavarhelprequired--canary-version)r   ztarget-sizer   z:template=TEMPLATE,target-size=FIXED_OR_PERCENT,[name=NAME]zNew instance template resource to be used. Each version has the following format: template=TEMPLATE,target-size=FIXED_OR_PERCENT,[name=NAME])r   categoryr   r   FN)instance_groups_managed_flags
AddTypeArgAddMaxSurgeArgAddMaxUnavailableArgAddMinReadyArgAddReplacementMethodFlagadd_argumentr   ArgDictstrr	   COMMONLY_USED_FLAGSAddForceArgAddMinimalActionArgAddMostDisruptiveActionArgparsersupports_min_readys     Jlib/surface/compute/instance_groups/managed/rolling_action/start_update.py_AddArgsr*   #   s   **62..v644V<!00888@-0%2 3-,    	" ''JI  
K  ++F333FE4H::65$O    c                   4    \ rS rSrSr\S 5       rS rS rSr	g)StartUpdateGAD   1Start update instances of managed instance group.c                 T    [        US9  [        R                  R                  U5        g )N)r'   r*   instance_groups_flags%MULTISCOPE_INSTANCE_GROUP_MANAGER_ARGAddArgumentclsr'   s     r)   ArgsStartUpdateGA.ArgsH   s!    F??KKr+   c                     [         R                  " SUR                  5        [        R                  " U R                  5       5      nUR                  nU R                  XUR                  5      nUR                  U/5      $ )Nr   )
r   ValidateCanaryVersionFlagcanary_versionr   ComputeApiHolderReleaseTrackclientCreateRequest	resourcesMakeRequests)selfargsholderr>   requests        r)   RunStartUpdateGA.RunN   sj    445G595H5HJ**4+<+<+>?F]]F  v/?/?@Gy))r+   c           	      	   [         R                  n[        R                  R                  n[
        R                  " U5      nUR                  XXVS9nUR                  5       S;  a(  [        SR                  UR                  5       5      5      e[        R                  " SUR                  UR                  5      n[        R                  " SSUR                   UR                  5      n	[        R                  " SSUR"                  UR                  5      n
[$        R&                  " Xr5      n[(        UR*                  ;   a  UR*                  [(           Ul        / nUR/                  [        R0                  " US	UR*                  UUR                  5      5        UR2                  (       ai  [(        UR2                  ;   a  UR2                  [(           Ul        UR/                  [        R0                  " US
UR2                  UUR                  5      5        [$        R4                  " XX1R6                  5        UR8                   Vs0 s H  nUR:                  UR<                  _M     nnU H6  nUR<                  (       a  M  UR?                  UR:                  5      Ul        M8     UR                  RA                  U	U
US9nURC                  S5      (       aE  [        RD                  " SURF                  UR                  R@                  RH                  5      Ul%        URC                  S5      (       aE  [        RD                  " SURL                  UR                  R@                  RN                  5      Ul(        [S        US5      (       a  URT                  Ul+        [S        US5      (       a2  [        RX                  " URZ                  UR                  5      nUUl.        [^        R`                  " XX!5        UR                  Rc                  S XS9n[S        US5      (       aU  URd                  Rf                  nUR                  Ri                  URk                  5       UURl                  URn                  S9nOe[S        US5      (       aT  URd                  Rp                  nUR                  Rs                  URk                  5       UURl                  URt                  S9nWSW4$ s  snf )N)default_scopescope_lister)zcompute.instanceGroupManagersz#compute.regionInstanceGroupManagerszUnknown reference type {0}z--typez--max-surgez	max-surgez--max-unavailablezmax-unavailabler   r   )maxSurgemaxUnavailabler   minimal_actionz--minimal-actionmost_disruptive_allowed_actionz --most-disruptive-allowed-action	min_readyreplacement_method)instanceTemplateupdatePolicyversionszone)instanceGroupManagerinstanceGroupManagerResourceprojectrT   region)rU   rV   rW   rX   Patch);r2   r3   compute_scope	ScopeEnumZONEr
   GetDefaultScopeListerResolveAsResource
Collection
ValueErrorformatr   ParseUpdatePolicyTyper   messagesParseFixedOrPercent	max_surgemax_unavailabler   GetInstanceGroupManagerOrThrowTEMPLATE_NAME_KEYversionr   appendParseVersionr;   ValidateVersionsforcerS   rQ   r   get InstanceGroupManagerUpdatePolicyIsSpecifiedParseInstanceActionFlagrM   MinimalActionValueValuesEnumminimalActionrN   *MostDisruptiveAllowedActionValueValuesEnummostDisruptiveAllowedActionhasattrrO   minReadySecParseReplacementMethodrP   replacementMethodr   $ValidateAndFixUpdaterAgainstStatefulInstanceGroupManagerapitools_clientinstanceGroupManagers(ComputeInstanceGroupManagersPatchRequestNamerW   rT   regionInstanceGroupManagers.ComputeRegionInstanceGroupManagersPatchRequestrX   )rB   rC   r>   r@   resource_argrI   rJ   igm_refupdate_policy_typere   rf   igm_inforS   ri   igm_version_namesupdate_policyrP   igm_resourceservicerE   s                       r)   r?   StartUpdateGA.CreateRequestW   s*   (NNL!++00M..v6L,,} - QG  $  3::



  ! ! 0EE$))V__.&::{DNNFOOEI,@@.0D0DO -KKH DLL(ll#45dmHOO++LLOO	
 	d11	1++,=>oo
 
-
- !!oo "2283<jjJ  (((G 	  ',,.(   \\\(,,W-E-EF  OODD& E !M
 ())
 
8
8 $"5"5oo>>++	%-m!
 899
 
8
8011oo>>993;m/ t[!!"&..mt)**1HH

!
!6??4(:m%77 ??77M 8 NLw&&<<gII&||~'3//||	 J g
 
(	#	#&&BBgOO&||~'3//	 P !g
 GW$$os   =!S N)
__name__
__module____qualname____firstlineno____doc__classmethodr7   rF   r?   __static_attributes__r   r+   r)   r-   r-   D   s"    9 
*p%r+   r-   z-Updates instances in a managed instance groupz        *{command}* updates instances in a managed instance group,
        according to the given versions and the given update policy.

        An instance template version can be either a global or regional resource.
        a  
      Running:

            {command} example-managed-instance-group \
            --version='template=example-global-instance-template'

      Sets the group's instance template version to a global instance template
      resource 'example-global-instance-template'.

      To use a regional instance template, specify the full or partial URL of the template.

      Running:

            {command} example-managed-instance-group \
            --version='template=projects/example-project/regions/us-central1/instanceTemplates/example-regional-instance-template'

      Sets the group's instance template version to a regional instance template
      resource 'example-regional-instance-template'.
      )briefDESCRIPTIONEXAMPLESc                   (    \ rS rSrSr\S 5       rSrg)StartUpdate   r/   c                 V    [        USS9  [        R                  R                  U5        g )NTr&   r1   r5   s     r)   r7   StartUpdate.Args   s#    Ft4??KKr+   r   N)r   r   r   r   r   r   r7   r   r   r+   r)   r   r      s    9 r+   r   N)F)!r   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper   r	   "googlecloudsdk.command_lib.computer
   r   rZ   2googlecloudsdk.command_lib.compute.instance_groupsr2   :googlecloudsdk.command_lib.compute.instance_groups.managedr   r   :googlecloudsdk.command_lib.compute.managed_instance_groupsr   rh   r*   ReleaseTracksr=   GACommandr-   detailed_helpALPHABETAr   r   r+   r)   <module>r      s    @ &  ' 7 H / ( 4 E ] m U ] PB D%%(()B%DLL B% *B%J =
 < D%%++T->->-C-CD-  E *77 r+   