
    b                         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  G d de
j"                        Zy)z>Command for removing instances from unmanaged instance groups.    )absolute_import)division)unicode_literals)base_classes)instance_groups_utils)arg_parsers)base)flags)scopec                   &    e Zd ZdZed        Zd Zy)RemoveInstancesa  Removes resources from an unmanaged instance group by instance name.

    *{command}* removes instances from an unmanaged instance group using
  the instance name.

  This does not delete the actual instance resources but removes
  it from the instance group.
  c                     t        j                         t        _        t        j                  j	                  |        | j                  ddt        j                  d      dd       y )Nz--instancesT   )
min_lengthINSTANCEz=The names of the instances to remove from the instance group.)requiredtypemetavarhelp)instance_groups_flagsMakeZonalInstanceGroupArgr   ZONAL_INSTANCE_GROUP_ARGAddArgumentadd_argumentr   ArgList)parsers    Alib/surface/compute/instance_groups/unmanaged/remove_instances.pyArgszRemoveInstances.Args(   sZ     	779 ,,,88@
  A.L  N    c                    t        j                  | j                               }|j                  }t        j
                  j                  ||j                  t        j                  j                  t        j                  |            }g }|j                  D ]H  }|j                  j                  ||j                  |j                   dd      }|j#                  |       J t%        j&                  ||j                          |D cg c],  }|j(                  j+                  |j-                               . }}|j(                  j/                  |      }	|j(                  j1                  |j3                         |	|j                   |j                        }
|j5                  |j6                  j8                  d|
fg      S c c}w )	N)default_scopescope_lister)projectzonezcompute.instances)params
collection)instance)	instances)instanceGroup$instanceGroupsRemoveInstancesRequestr$   r#   r   )r   ComputeApiHolderReleaseTrackclientr   r   ResolveAsResource	resourcescompute_scope	ScopeEnumZONEr
   GetDefaultScopeListerr(   Parser#   r$   appendr   ValidateInstanceInZonemessagesInstanceReferenceSelfLink$InstanceGroupsRemoveInstancesRequest+ComputeInstanceGroupsRemoveInstancesRequestNameMakeRequestsapitools_clientinstanceGroups)selfargsholderr-   	group_refinstance_referencesr'   refinstrequest_payloadrequests              r   RunzRemoveInstances.Run5   s   **4+<+<+>?F]]F 	00BB&""'116644V< 	C 	>  NN""
"**nn ) # *c   % # 001D1:A
 ()'D 	))4==?)C'  ) ooJJ% K 'O ooIInn&-<^^!!	 J G !7!7!F!F!2G!=  > ? ?)s   1F>N)__name__
__module____qualname____doc__staticmethodr   rI    r   r   r   r      s"     
N 
N&?r   r   N)rM   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper   r	   "googlecloudsdk.command_lib.computer
   r   r0   2googlecloudsdk.command_lib.compute.instance_groupsr   SilentCommandr   rO   r   r   <module>rV      s;    E &  ' 7 @ / ( 4 E ]=?d(( =?r   