
                            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  ej6                  ej8                  j:                  ej8                  j<                  ej8                  j>                         G d dej@                               Z!dddde!_"        y)z,Command for deleting managed instance group.    )absolute_import)division)unicode_literals)base_classes)managed_instance_groups_utils)poller)waiter)arg_parsers)base)flags)scope)instance_configs_messages)
properties)mapc                   V    e Zd ZdZed        Zed        Zed        Zed        Zd Z	y)Deletez8Delete per-instance configs from managed instance group.c                     t         j                  j                  | d       t        j                  |        | j	                  dddt        j                  d      d	       y )
Ndelete)operation_typez--instancesINSTANCET   )
min_lengthz3Names of instances to delete instance-configs from.)metavarrequiredtypehelp)instance_groups_flags%MULTISCOPE_INSTANCE_GROUP_MANAGER_ARGAddArgument AddMigStatefulUpdateInstanceFlagadd_argumentr
   ArgList)parsers    Flib/surface/compute/instance_groups/managed/instance_configs/delete.pyArgszDelete.Args)   s]    ??KKx L )::6B
  A.B  D    c                 |    |D cg c]+  }| j                   j                  |      j                         - }}|S c c}w )N)	resourcesParseURLName)holder	instancesinstanceinstance_namess       r$   _GetInstanceNameListFromUrlListz&Delete._GetInstanceNameListFromUrlList5   sI     DMCLx!!(+0029   s   09c                     | j                   j                  }|j                  t        j	                  | |            }|j                  |j                         ||j                  |j                        S )z4Returns a delete message for instance group manager.names)instanceGroupManager0instanceGroupManagersDeletePerInstanceConfigsReqprojectzone)	clientmessages0InstanceGroupManagersDeletePerInstanceConfigsReqr   r/   ;ComputeInstanceGroupManagersDeletePerInstanceConfigsRequestr*   r5   r6   r+   igm_refr,   r8   reqs        r$   #_GetDeletePerInstanceConfigRequestsz*Delete._GetDeletePerInstanceConfigRequests<   sm     }}%%H

C
C44VYG D ICOO$\\^9<\\	 P  r&   c                     | j                   j                  }|j                  t        j	                  | |            }|j                  |j                         ||j                  |j                        S )z=Returns a delete message for regional instance group manager.r1   )r3   1regionInstanceGroupManagerDeleteInstanceConfigReqr5   region)	r7   r8   1RegionInstanceGroupManagerDeleteInstanceConfigReqr   r/   AComputeRegionInstanceGroupManagersDeletePerInstanceConfigsRequestr*   r5   rA   r;   s        r$   )_GetRegionDeletePerInstanceConfigRequestsz0Delete._GetRegionDeletePerInstanceConfigRequestsI   sm     }}%%H

D
D44VYG E ICMM%,\\^BE~~	 N r&   c           
         t        j                  | j                               }t        j                  j
                  j                  j                  d      }t        j                  j                  ||j                  t        j                  j                  t        j                   |j"                  |            }t%        t'        t(        t+        j,                  |||j.                                    }|j1                         dk(  r6d}|j"                  j2                  j4                  }| j7                  |||      }nq|j1                         dk(  r6d}|j"                  j2                  j8                  }| j;                  |||      }n(t=        dj?                  |j1                                     |jA                  |      }	|j                  jC                  |	jD                  |	      }
tG        jH                  |      }tK        jL                  ||
d
      }|jN                  r:tQ        jR                  ||||jT                        }tK        jL                  ||d      S |S )NT)r   )default_scopescope_listerzcompute.instanceGroupManagerszcompute.zoneOperationsz#compute.regionInstanceGroupManagerszcompute.regionOperationszUnknown reference type {0})
collectionzDeleting instance configs.)r+   r<   r,   minimal_actionzApplying updates to instances.)+r   ComputeApiHolderReleaseTrackr   VALUEScorer5   Getr   r   ResolveAsResourcer(   compute_scope	ScopeEnumZONEr   GetDefaultScopeListerr7   listr   strr   CreateInstanceReferencesr,   
Collectionapitools_clientinstanceGroupManagersr>   regionInstanceGroupManagersrD   
ValueErrorformatDeletePerInstanceConfigsParseselfLinkr   Pollerr	   WaitForupdate_instancer   CallApplyUpdatesToInstancesinstance_update_minimal_action)selfargsr+   r5   r<   r,   operation_collectionservicedelete_request	operationoperation_refoperation_pollerdelete_resultapply_operation_refs                 r$   Runz
Delete.RunX   s$   **4+<+<+>?F$$,,00$0?G$JJ  ##!.!8!8!=!= % ; ;}}g!/	 ! 0  S6OO#Wdnn>? @I >>5--CCg??
'9&n				!F	F7--IIgEE
'9&n 3::



  ! ! 00@I$$**'; + =M }}W-NN#3]#?AM 
#
?
?!!@@B ^^,.A<> >r&   N)
__name__
__module____qualname____doc__staticmethodr%   r/   r>   rD   ro    r&   r$   r   r   $   s]     A	D 	D   
 
  /r&   r   z:Delete per-instance configs from a managed instance group.aX          *{command}* deletes one or more per-instance configs from a Google
        Compute Engine managed instance group.

        Changes are applied immediately to the corresponding instances, by
        performing the necessary action (for example, REFRESH), unless
        overridden by providing the ``--no-update-instance'' flag.
        al          To delete the per-instance config from ``my-instance'', run:

          $ {command} my-group --region=europe-west4 --instances=my-instance

        This removes all metadata and detaches all disks that were defined in
        the per-instance config (except for disks that are also defined in the
        instance template, which remain attached).
        )briefDESCRIPTIONEXAMPLESN)#rs   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   )googlecloudsdk.api_lib.compute.operationsr   googlecloudsdk.api_lib.utilr	   googlecloudsdk.callioper
   r   "googlecloudsdk.command_lib.computer   r   rP   2googlecloudsdk.command_lib.compute.instance_groupsr   Kgooglecloudsdk.command_lib.compute.instance_groups.managed.instance_configsr   googlecloudsdk.corer   	six.movesr   ReleaseTracksrK   GABETAALPHADeleteCommandr   detailed_helpru   r&   r$   <module>r      s     3 &  ' 7 H < . / ( 4 E ] q *  D%%(($*;*;*@*@%%++-aT a-aL 	E		 r&   