
                            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r\R6                   " S S\R8                  5      5       rSSS.\l        g)z,Command for deleting managed instance group.    )absolute_import)division)unicode_literals)base_classes)managed_instance_groups_utils)path_simplifier)utils)base)flags)scope)
propertiesprogress_tracker)text)zipih  c                   @    \ rS rSrSr\S 5       rS rS rS r	S r
Srg	)
Delete)   z-Delete Compute Engine managed instance group.c                 @    [         R                  R                  U SS9  g )Ndelete)operation_type)instance_groups_flags&MULTISCOPE_INSTANCE_GROUP_MANAGERS_ARGAddArgument)parsers    5lib/surface/compute/instance_groups/managed/delete.pyArgsDelete.Args-   s!    @@LLx M )    c           	      j   U(       a  [        [        U6 5      S   O/ nU Vs/ s HS  n[        US5      (       d  M  UR                  c  M%  UR                  S[
        R                  " UR                  U5      4PMU     nnU Vs/ s HS  n[        US5      (       d  M  UR                  c  M%  UR                  S[
        R                  " UR                  U5      4PMU     nnU(       a  [        [        U6 5      S   O/ nU(       a  [        [        U6 5      S   O/ nUR                  R                  n	U	R                  n
[
        R                  " XV-   [
        R                  " UUUR                  S9S9n/ nU H  nUR                  (       a:  U	R                  nU
R!                  ["        R$                  " UR                  5      S9nO9U	R&                  nU
R)                  ["        R$                  " UR                  5      S9nUR*                  Ul        X$l        UR1                  USU45        M     U$ s  snf s  snf )	aV  Generates Delete requestes for autoscalers attached to instance groups.

Args:
  holder: ComputeApiHolder, object encapsulating compute api.
  project: str, project this request should apply to.
  mig_requests: Messages which will be sent to delete instance group
    managers.

Returns:
  Messages, which will be sent to delete autoscalers.
   zoneregion)zonesregionsclient)migsautoscalers)r"   )r#   r   )listr   hasattrr"   instanceGroupManagerr   CreateZoneRef	resourcesr#   CreateRegionRefr&   apitools_clientMESSAGES_MODULEAutoscalersForMigsAutoscalersForLocationsr(   ComputeAutoscalersDeleteRequestr   NameregionAutoscalers%ComputeRegionAutoscalersDeleteRequestname
autoscalerprojectappend)selfholderr9   mig_requestsrequest	zone_migsregion_migsr$   r%   r&   messagesautoscalers_to_deleterequestsr8   services                  r   !_GenerateAutoscalerDeleteRequests(Delete._GenerateAutoscalerDeleteRequests2   s     3?4\*+A.BL BNKAMgGV,2 292'../==&&12AM  K DPQCOgx04 6=^^4G00(1AA(('34CO  Q
 )2Di!!$rE,7d3$%a(RG]]**F%%H9LL$1II=="# H+
	$$:: %%joo6 ; 8 **@@"''
(9(9: A < &??gooow'23 , OEKQs"   H+H+
2H+H0H0*2H0c                     [        S U 5       5      n[        S U 5       5      nU(       a  U(       d  gU(       a  U(       d  gg)z!Gets common scope for references.c              3   :   #    U  H  n[        US 5      v   M     g7f)r"   Nr*   .0refs     r   	<genexpr>4Delete._GetCommonScopeNameForRefs.<locals>.<genexpr>e   s     84C73''4   c              3   :   #    U  H  n[        US 5      v   M     g7f)r#   NrI   rJ   s     r   rM   rN   f   s     <tWS(++trO   r"   r#   N)any)r;   refshas_zone
has_regions       r   _GetCommonScopeNameForRefs!Delete._GetCommonScopeNameForRefsc   s5    8488H<t<<J
	Hr   c                    UR                   n/ nU H  nUR                  5       S:X  a@  UR                  nUR                  UR	                  5       UR
                  UR                  S9nO|UR                  5       S:X  a@  UR                  nUR                  UR	                  5       UR
                  UR                  S9nO([        SR                  UR                  5       5      5      eUR                  USU45        M     U$ )z>Returns a list of delete messages for instance group managers.zcompute.instanceGroupManagers)r+   r9   r"   z#compute.regionInstanceGroupManagers)r+   r9   r#   zUnknown reference type {0}r   )r0   
CollectioninstanceGroupManagers)ComputeInstanceGroupManagersDeleteRequestr4   r9   r"   regionInstanceGroupManagers/ComputeRegionInstanceGroupManagersDeleteRequestr#   
ValueErrorformatr:   )r;   r&   igm_refsrA   rC   rL   rD   r>   s           r   _CreateDeleteRequestsDelete._CreateDeleteRequestso   s     %%HH		<	<..DD!$KK E  >>DD44JJ!$KK:: K 
 5<<S^^=MNOOoow'23! " Or   c           	         [         R                  " U R                  5       5      n[        R                  R
                  R                  R                  SS9n[        R                  R                  XR                  [        R                  R                  [        R                   " UR"                  U5      S9nU R%                  U5      n[&        R(                  " XES S9  [+        U R-                  UR"                  R.                  U5      5      n/ n/ nU R1                  X#US9n	U	(       aw  [2        R4                  " S[6        R8                  " [;        U	5      S5      -   SS	9 n
UR"                  R=                  U	UU
S
9nS S S 5        U(       a  [&        R>                  " U5        / n[2        R4                  " S[6        R8                  " [;        U5      S5      -   SS	9 n
XrR"                  R=                  XhU
[@        S9-  nS S S 5        U(       a  [&        R>                  " U5        U$ ! , (       d  f       N= f! , (       d  f       N>= f)NT)required)default_scopescope_lister)
scope_nameprompt_title)r=   z	Deleting r8   F)autotickr   zManaged Instance Group)r   timeout)!r   ComputeApiHolderReleaseTrackr   VALUEScorer9   Getr   r   ResolveAsResourcer-   compute_scope	ScopeEnumZONEr   GetDefaultScopeListerr&   rU   r	   PromptForDeletionr)   r`   r/   rE   r   ProgressTrackerr   	PluralizelenMakeRequestsRaiseToolException_TIMEOUT_IN_SEC)r;   argsr<   r9   r_   rf   rC   r-   errorsautoscaler_delete_requeststrackers              r   Run
Delete.Run   s   **4+<+<+>?F$$,,00$0?GDD""-2I2I2N2N44V]]GL 	 	N  00:J	d< D..%%x1 2H IF!%!G!Gh "H "0!++
,-|= = MM..&$ / &	 
  ( F		)	)dnnS]4LMM
 
==--
Wo .  i	
 v&/ 
 
s   H"H/
H,/
H= N)__name__
__module____qualname____firstlineno____doc__staticmethodr   rE   rU   r`   r   __static_attributes__r   r   r   r   r   )   s,    5) )/b
0/r   r   z-Delete Compute Engine managed instance groupszX        *{command}* deletes one or more Compute Engine managed instance
groups.
        )briefDESCRIPTIONN)r   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   r   r	   googlecloudsdk.callioper
   "googlecloudsdk.command_lib.computer   r   rp   2googlecloudsdk.command_lib.compute.instance_groupsr   googlecloudsdk.corer   googlecloudsdk.core.consoler   googlecloudsdk.core.utilr   	six.movesr   rz   UniverseCompatibleDeleteCommandr   detailed_helpr   r   r   <module>r      s}     3 &  ' 7 H : 0 ( 4 E ] * 8 ) 
  LT L L` = r   