
    81                     \   d Z ddlmZ ddlmZ ddlmZ ddl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 Ze
j*                   e
j,                  e
j.                  j0                         G d de
j2                                      Z e
j,                  e
j.                  j6                         G d de             Z e
j,                  e
j.                  j:                         G d de             Zddde_        ej>                  e_        ej>                  e_        y)z3Command for setting size of managed instance group.    )absolute_import)division)unicode_literalsN)base_classes)arg_parsers)base)
exceptions)flags)scopec                 H   t        j                  | |        |r| j                  dddd       |rq| j                  dt        j                  dt
        j                  d	      d
       | j                  dt        j                  dt
        j                  d	      d       yy)z
Adds args.)requiredz--creation-retries
store_trueTz&When instance creation fails retry it.)actiondefaulthelp--suspended-sizer   )	unlimitedz?Target number of suspended instances in managed instance group.)typer   --stopped-sizez=Target number of stopped instances in managed instance group.N)managed_flagsAddMigSizeFlagadd_argumentr   
BoundedIntsysmaxsizeparsercreation_retriessuspended_stopped_sizess      5lib/surface/compute/instance_groups/managed/resize.py_AddArgsr!   "   s    v4K0KL
5	  7 
##As{{dCN  P ##As{{dCL  N     c                   L    e Zd ZdZed        Zd Zed        Zed        Zd Z	y)Resize Set managed instance group size.c                 ^    t        | dd       t        j                  j                  |        y )NFr   r!   instance_groups_flags%MULTISCOPE_INSTANCE_GROUP_MANAGER_ARGAddArgumentr   s    r    ArgszResize.Args>   s)    uN??KKr"   c                     t         j                  j                  ||t        j                  j
                  t        j                  |            S )N)default_scopescope_lister)r(   r)   ResolveAsResourcecompute_scope	ScopeEnumZONEr
   GetDefaultScopeLister)selfclient	resourcesargss       r    CreateGroupReferencezResize.CreateGroupReferenceE   sD    !GGi+55::"88@  BCr"   c                     | j                   j                  }| j                  j                  |j	                         |j
                  |j                  |j                        }| j                  |d|fg      S )N)instanceGroupManagersizeprojectzoner$   )	apitools_clientinstanceGroupManagersmessages)ComputeInstanceGroupManagersResizeRequestNamer<   r=   r>   MakeRequestsr6   igm_refr8   servicerequests        r    _MakeIgmResizeRequestzResize._MakeIgmResizeRequestL   sh    $$::GooGG$\\^YY\\	 H G
 (G <=>>r"   c                     | j                   j                  }| j                  j                  |j	                         |j
                  |j                  |j                        }| j                  |d|fg      S )N)r;   r<   r=   regionr$   )	r?   regionInstanceGroupManagersrA   /ComputeRegionInstanceGroupManagersResizeRequestrC   r<   r=   rK   rD   rE   s        r    _MakeRmigResizeRequestzResize._MakeRmigResizeRequestV   sh    $$@@GooMM$\\^YY~~	 N G
 (G <=>>r"   c                    t        j                  | j                               }|j                  }| j	                  ||j
                  |      }|j                         dk(  r| j                  |||      S |j                         dk(  r| j                  |||      S t        dj                  |j                                     Nzcompute.instanceGroupManagersz#compute.regionInstanceGroupManagerszUnknown reference type {0})r   ComputeApiHolderReleaseTrackr6   r9   r7   
CollectionrI   rN   
ValueErrorformatr5   r8   holderr6   rF   s        r    Runz
Resize.Run`   s    **4+<+<+>?F]]F''0@0@$GG>>''>>DD(($??
1889K9K9MN
OOr"   N)
__name__
__module____qualname____doc__staticmethodr,   r9   rI   rN   rX    r"   r    r$   r$   9   sM     ) C ? ? ? ?Pr"   r$   c                   F    e Zd ZdZed        Zed        Zed        Zd Zy)
ResizeBetar%   c                 ^    t        | dd       t        j                  j                  |        y )NTFr   r'   r+   s    r    r,   zResizeBeta.Argsr   s)    eM??KKr"   c                 :   | j                   j                  }| j                  j                  |j	                         | j                  j                  |j                  |j                         |j                  |j                        }| j                  |d|fg      S )N
targetSizenoCreationRetries)r;   *instanceGroupManagersResizeAdvancedRequestr=   r>   ResizeAdvanced)r?   r@   rA   1ComputeInstanceGroupManagersResizeAdvancedRequestrC   *InstanceGroupManagersResizeAdvancedRequestr<   r   r=   r>   rD   rE   s        r    _MakeIgmResizeAdvancedRequestz(ResizeBeta._MakeIgmResizeAdvancedRequesty   s    $$::GII!(JJ#yy*.*?*?&? K  OO 	J 	  *:G DEFFr"   c                 :   | j                   j                  }| j                  j                  |j	                         | j                  j                  |j                  |j                         |j                  |j                        }| j                  |d|fg      S )Nrc   )r;   0regionInstanceGroupManagersResizeAdvancedRequestr=   rK   rg   )r?   rL   rA   7ComputeRegionInstanceGroupManagersResizeAdvancedRequestrC   0RegionInstanceGroupManagersResizeAdvancedRequestr<   r   r=   rK   rD   rE   s        r    _MakeRmigResizeAdvancedRequestz)ResizeBeta._MakeRmigResizeAdvancedRequest   s    $$@@G	@	@!(AA#yy*.*?*?&? B  OO>> 
A 	
#  *:G DEFFr"   c                    t        j                  | j                               }|j                  }| j	                  ||j
                  |      }|j                         dk(  r| j                  |||      S |j                         dk(  r2|j                  s| j                  |||      S | j                  |||      S t        dj                  |j                                     rP   )r   rQ   rR   r6   r9   r7   rS   rj   r   ro   rN   rT   rU   rV   s        r    rX   zResizeBeta.Run   s    **4+<+<+>?F]]F''0@0@$GG>>//FFDD""2267DII(($??
1889K9K9MN
OOr"   N)	rY   rZ   r[   r\   r]   r,   rj   ro   rX   r^   r"   r    r`   r`   n   sI    (  G G G G Pr"   r`   c                   f    e Zd ZdZed        Zed        Zed        Zed        Zed        Z	d Z
y)	ResizeAlphaz!Set managed instance group sizes.c                 ^    t        | dd       t        j                  j                  |        y )NTr   r'   r+   s    r    r,   zResizeAlpha.Args   s%    FT4P??KKr"   c                 b   | j                   0| j                  $| j                  t        j                  g dd      | j
                  sg| j                   t        j                  dd      | j                  t        j                  dd      | j                  t        j                  dd      y y )N)--sizer   r   z+At least one of the sizes must be specifiedru   z?Size must be specified when --no-creation-retries flag is used.r   z--no-creation-retriesr   )r<   suspended_sizestopped_sizer	   OneOfArgumentsRequiredExceptionr   RequiredArgumentExceptionConflictingArgumentsException)r8   s    r    _ValidateArgszResizeAlpha._ValidateArgs   s    		d119!66
:
79 9   		22MO 	O 
			(667I7NP 	P				&667G7NP 	P 
' !r"   c                     | j                   j                         }|j                  |j                  |_        |j                  |j                  |_        |j                  |j                  |_        |S )N)rA   InstanceGroupManagerr<   rd   rv   targetSuspendedSizerw   targetStoppedSize)r6   r8   igm_patch_resources      r    _MakeIgmPatchResourcez!ResizeAlpha._MakeIgmPatchResource   sh    ==?yy&*ii#&/3/B/B,$-1->->*r"   c                    | j                   j                  }| j                  j                  |j	                         t
        j                  | |      |j                  |j                        }| j                  |d|fg      S )N)r;   instanceGroupManagerResourcer=   r>   Patch)
r?   r@   rA   (ComputeInstanceGroupManagersPatchRequestrC   rr   r   r=   r>   rD   rE   s        r    _MakeIgmPatchRequestz ResizeAlpha._MakeIgmPatchRequest   st    $$::GooFF$\\^%0%F%FD&\\ G G '7 ;<==r"   c                    | j                   j                  }| j                  j                  |j	                         t
        j                  | |      |j                  |j                        }| j                  |d|fg      S )N)r;   r   r=   rK   r   )
r?   rL   rA   .ComputeRegionInstanceGroupManagersPatchRequestrC   rr   r   r=   rK   rD   rE   s        r    _MakeRmigPatchRequestz!ResizeAlpha._MakeRmigPatchRequest   st    $$@@GooLL$\\^%0%F%FD&~~ M G '7 ;<==r"   c                 v   | j                  |       t        j                  | j                               }|j                  }| j                  ||j                  |      }|j                         dk(  r2|j                  s| j                  |||      S | j                  |||      S |j                         dk(  r]|j                  s| j                  |||      S |j                  |j                  | j                  |||      S | j                  |||      S t!        dj#                  |j                                     rP   )r{   r   rQ   rR   r6   r9   r7   rS   r   rj   r   ro   rv   rw   r   rN   rT   rU   rV   s        r    rX   zResizeAlpha.Run   s$   t**4+<+<+>?F]]F''0@0@$GG>>""11&'4HH&&vw==DD""2267DII				(D,=,=,I))&'4@@ (($??
1889K9K9MN
OOr"   N)rY   rZ   r[   r\   r]   r,   r{   r   r   r   rX   r^   r"   r    rr   rr      so    ) 
 P P$   > > > >,Pr"   rr   r%   a`  
        *{command}* resize a managed instance group to a provided size.

If you resize down, the Instance Group Manager service deletes instances from
the group until the group reaches the desired size. Instances are deleted
in arbitrary order but the Instance Group Manager takes into account some
considerations before it chooses which instance to delete. For more information,
see https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/resize.

If you resize up, the service adds instances to the group using the current
instance template until the group reaches the desired size.
)briefDESCRIPTION) r\   
__future__r   r   r   r   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   r   r	   "googlecloudsdk.command_lib.computer
   r   r1   2googlecloudsdk.command_lib.compute.instance_groupsr(   :googlecloudsdk.command_lib.compute.instance_groups.managedr   r!   UniverseCompatibleReleaseTracksrR   GACommandr$   BETAr`   ALPHArr   detailed_helpr^   r"   r    <module>r      s#    : &  ' 
 7 / ( . 4 E ] ]N. D%%(()0PT\\ 0P * 0Pf D%%**+8P 8P ,8Pv D%%++,fP* fP -fPT 0  "//
 "00 r"   