
    H                        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 r\
R(                  " \
R*                  R,                  \
R*                  R.                  \
R*                  R0                  5      \
R2                   " S S\
R4                  5      5       5       rSSS.\l        g)zACommand for deleting instances managed by managed instance group.    )absolute_import)division)unicode_literals)base_classes)instance_groups_utils)arg_parsers)base)flags)scopec                    U R                   R                  [        R                  " 5       5        U R	                  S[
        R                  " SS9SSSS9  [        R                  R                  U 5        [        R                  " U 5        g)	z7Add parser configuration common for all release tracks.z--instances   )
min_lengthINSTANCETzNames of instances to delete.)typemetavarrequiredhelpN)display_info	AddFormat	mig_flags'GetCommonPerInstanceCommandOutputFormatadd_argumentr   ArgListinstance_groups_flags%MULTISCOPE_INSTANCE_GROUP_MANAGER_ARGAddArgumentAddGracefulValidationArgparsers    ?lib/surface/compute/instance_groups/managed/delete_instances.py_AddCommonDeleteInstancesArgsr!      sv    779;!,*  , ==II$$V,    c                   @    \ rS rSrSr\S 5       rS rS rS r	S r
Srg	)
DeleteInstances.   z3Delete instances managed by managed instance group.c                     [        U 5        g )N)r!   r   s    r    ArgsDeleteInstances.Args4   s
    !&)r"   c                    U R                  U5        [        R                  " U R                  5       5      nUR                  n[
        R                  n[        R                  R                  n[        R                  " U5      nUR                  UUR                  UUS9nUR                  5       S:X  a  SnU R                  UR                   Xq5      n	O[UR                  5       S:X  a  SnU R#                  UR                   Xq5      n	O([%        SR'                  UR                  5       5      5      eUR)                  S5      =(       a    UR*                  n
[,        R.                  " USU	UUUR0                  S	U
S
9$ )N)default_scopescope_listerzcompute.instanceGroupManagers+instanceGroupManagersDeleteInstancesRequestz#compute.regionInstanceGroupManagers1regionInstanceGroupManagersDeleteInstancesRequestzUnknown reference type {0}"skip_instances_on_validation_errorr$   T)
api_holdermethod_namerequest_templateinstances_holder_fieldigm_ref	instancesper_instance_status_enabledr.   )/_UpdateDefaultOutputFormatForGracefulValidationr   ComputeApiHolderReleaseTrackclientr   r   compute_scope	ScopeEnumZONEr
   GetDefaultScopeListerResolveAsResource	resources
Collection%_CreateZonalIgmDeleteInstancesRequestmessages(_CreateRegionalIgmDeleteInstancesRequest
ValueErrorformatIsSpecifiedr.   r   *SendInstancesRequestsAndPostProcessOutputsr4   )selfargsholderr9   resource_argr*   r+   r3   r2   requestr.   s              r    RunDeleteInstances.Run8   si   88>**4+<+<+>?F]]F(NNL!++00M..v6L,,#!	 - #G >>L::
//7*g				!F	FR==
//7*g 3::



  ! ! 	=> 	433 '
 !KK% 5..$(+MO Or"   c                     UR                  UR                  5       UR                  / S9UR                  UR                  S9nUR                  S5      (       a  UR                  UR                  l        U$ )Nr4   )instanceGroupManagerr,   projectzoner.   )	2ComputeInstanceGroupManagersDeleteInstancesRequestName+InstanceGroupManagersDeleteInstancesRequestrR   rS   rF   r.   r,   skipInstancesOnValidationErrorrH   rB   r3   rI   rL   s        r    rA   5DeleteInstances._CreateZonalIgmDeleteInstancesRequestb   sp    II$\\^4<	4	4r	4	B\\ J G <==)-)P)P ::%Nr"   c                     UR                  UR                  5       UR                  / S9UR                  UR                  S9nUR                  S5      (       a  UR                  UR                  l        U$ )NrP   )rQ   r-   rR   regionr.   )	8ComputeRegionInstanceGroupManagersDeleteInstancesRequestrU   1RegionInstanceGroupManagersDeleteInstancesRequestrR   r[   rF   r.   r-   rW   rX   s        r    rC   8DeleteInstances._CreateRegionalIgmDeleteInstancesRequestn   sp    OO$\\^:B	:	:R	:	H~~ P G <==)-)P)P @@%Nr"   c                     UR                  S5      (       a  g UR                  (       a  [        R                  " SS9Ul        g g )NrE   T)with_validation_error)rF   r.   r   r   rE   )rH   rI   s     r    r6   ?DeleteInstances._UpdateDefaultOutputFormatForGracefulValidationz   s9    !!..EE $&dk /r"    N)__name__
__module____qualname____firstlineno____doc__staticmethodr'   rM   rA   rC   r6   __static_attributes__rb   r"   r    r$   r$   .   s/     <* *(OT

&r"   r$   z>Delete instances that are managed by a managed instance group.a$  
        *{command}* is used to delete one or more instances from a managed
instance group. Once the instances are deleted, the size of the group is
automatically reduced to reflect the changes.

The command returns the operation status per instance, which might be ``FAIL'',
``SUCCESS'', ``SKIPPED'', or ``MEMBER_NOT_FOUND''. ``MEMBER_NOT_FOUND'' is
returned only for regional groups when the gcloud command-line tool wasn't able
to resolve the zone from the instance name. ``SKIPPED'' is returned only when
the `--skip-instances-on-validation-error` flag is used and the instance is not
a member of the group or is already being deleted or abandoned.

If you want to keep the underlying virtual machines but still remove them
from the managed instance group, use the abandon-instances command instead.
)briefDESCRIPTIONN)rg   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper   r	   "googlecloudsdk.command_lib.computer
   r   r:   2googlecloudsdk.command_lib.compute.instance_groupsr   :googlecloudsdk.command_lib.compute.instance_groups.managedr   r!   ReleaseTracksr8   GABETAALPHAUniverseCompatibleCommandr$   detailed_helprb   r"   r    <module>ry      s    H &  ' 7 @ / ( 4 E ] Y- D%%(($*;*;*@*@%%++-P&dll P& -P&j 	I		! r"   