
                            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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j6                   G d dej8                               Zddde_        y)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                   8    e Zd ZdZed        Zd Zd Zd Zd Z	y)Deletez-Delete Compute Engine managed instance group.c                 F    t         j                  j                  | d       y )Ndelete)operation_type)instance_groups_flags&MULTISCOPE_INSTANCE_GROUP_MANAGERS_ARGAddArgument)parsers    5lib/surface/compute/instance_groups/managed/delete.pyArgszDelete.Args-   s!    @@LLx M )    c           	         |rt        t        |       d   ng }|D cg c]G  }t        |d      r9|j                  -|j                  dt        j                  |j                  |      fI }}|D cg c]G  }t        |d      r9|j                  -|j                  dt        j                  |j                  |      fI }}|rt        t        |       d   ng }|rt        t        |       d   ng }|j                  j                  }	|	j                  }
t        j                  ||z   t        j                  |||j                              }g }|D ]  }|j                  r<|	j                  }|
j!                  t#        j$                  |j                              }n;|	j&                  }|
j)                  t#        j$                  |j                              }|j*                  |_        ||_        |j1                  |d|f        |S c c}w c c}w )	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holderr7   mig_requestsrequest	zone_migsregion_migsr"   r#   r$   messagesautoscalers_to_deleterequestsr6   services                  r   !_GenerateAutoscalerDeleteRequestsz(Delete._GenerateAutoscalerDeleteRequests2   s    3?4\*+A.BL BNKAMgGV,1I ../==&&12AM  K DPQCOgx0W^^5O 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gooow'23 , OEKQs   AH/AHc                 `    t        d |D              }t        d |D              }|r|sy|r|syy)z!Gets common scope for references.c              3   4   K   | ]  }t        |d         yw)r    Nr(   .0refs     r   	<genexpr>z4Delete._GetCommonScopeNameForRefs.<locals>.<genexpr>e   s     84C73'4   c              3   4   K   | ]  }t        |d         yw)r!   NrF   rG   s     r   rJ   z4Delete._GetCommonScopeNameForRefs.<locals>.<genexpr>f   s     <tWS(+trK   r    r!   N)any)r9   refshas_zone
has_regions       r   _GetCommonScopeNameForRefsz!Delete._GetCommonScopeNameForRefsc   s5    8488H<t<<J
	Hr   c                     |j                   }g }|D ]  }|j                         dk(  rC|j                  }|j                  |j	                         |j
                  |j                        }n~|j                         dk(  rC|j                  }|j                  |j	                         |j
                  |j                        }n(t        dj                  |j                                     |j                  |d|f        |S )z>Returns a list of delete messages for instance group managers.zcompute.instanceGroupManagers)r)   r7   r    z#compute.regionInstanceGroupManagers)r)   r7   r!   zUnknown reference type {0}r   )r.   
CollectioninstanceGroupManagers)ComputeInstanceGroupManagersDeleteRequestr2   r7   r    regionInstanceGroupManagers/ComputeRegionInstanceGroupManagersDeleteRequestr!   
ValueErrorformatr8   )r9   r$   igm_refsr?   rA   rI   rB   r<   s           r   _CreateDeleteRequestsz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           	      v   t        j                  | j                               }t        j                  j
                  j                  j                  d      }t        j                  j                  ||j                  t        j                  j                  t        j                   |j"                  |            }| j%                  |      }t'        j(                  ||d        t+        | j-                  |j"                  j.                  |            }g }g }| j1                  |||      }	|	rut3        j4                  dt7        j8                  t;        |	      d      z   d	      5 }
|j"                  j=                  |	||

      }d d d        |rt'        j>                  |       g }t3        j4                  dt7        j8                  t;        |      d      z   d	      5 }
||j"                  j=                  |||
t@              z  }d d d        |rt'        j>                  |       |S # 1 sw Y   xY w# 1 sw Y   .xY w)NT)required)default_scopescope_lister)
scope_nameprompt_title)r;   z	Deleting r6   F)autotickr   zManaged Instance Group)r   timeout)!r   ComputeApiHolderReleaseTrackr   VALUEScorer7   Getr   r   ResolveAsResourcer+   compute_scope	ScopeEnumZONEr   GetDefaultScopeListerr$   rQ   r	   PromptForDeletionr'   r[   r-   rC   r   ProgressTrackerr   	PluralizelenMakeRequestsRaiseToolException_TIMEOUT_IN_SEC)r9   argsr:   r7   rZ   r`   rA   r+   errorsautoscaler_delete_requeststrackers              r   Runz
Delete.Run   s   **4+<+<+>?F$$,,00$0?GDD&""-2I2I2N2N44V]]GL 	 	N  00:J	Zd< D..%%x1 2H IF!%!G!Gh "H "0!++
,-|= = MM..&$ / &	 
  ( F		)	)dnnS]4LMM
 
6==--
FWo .  i	
 v&/ 
 
s   $H#'H/#H,/H8N)
__name__
__module____qualname____doc__staticmethodr   rC   rQ   r[   ry    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   rj   2googlecloudsdk.command_lib.compute.instance_groupsr   googlecloudsdk.corer   googlecloudsdk.core.consoler   googlecloudsdk.core.utilr   	six.movesr   rt   UniverseCompatibleDeleteCommandr   detailed_helpr   r   r   <module>r      s}     3 &  ' 7 H : 0 ( 4 E ] * 8 ) 
  LT L L` = r   