
    #                         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  G d de	j&                        Zy)z-Command for adding instances to target pools.    )absolute_import)division)unicode_literals)base_classes)utils)base)
exceptions)flags)logc                   .    e Zd ZdZdZdZed        Zd Zy)AddInstanceszAdd instances to a target pool.

  *{command}* is used to add one or more instances to a target pool.
  For more information on health checks and load balancing, see
  [](https://cloud.google.com/compute/docs/load-balancing-and-autoscaling/)
  Nc                    t        j                  d      | _        | j                  j                  |dd       t	        j
                  d      | _        | j                  j                  |       t        j                  |ddd	       y )
Nzadd tozadd to the target poolINSTANCE)operation_typecust_metavarz to which to add the instances.)help_suffix	instanceszZDEPRECATED, use --instances-zone. If not specified, you will be prompted to select a zone.)resource_typer   explanation)	instance_flagsInstanceArgumentForTargetPoolINSTANCE_ARGAddArgumentr
   'TargetPoolArgumentForAddRemoveInstancesTARGET_POOL_ARGcompute_flagsAddZoneFlag)clsparsers     1lib/surface/compute/target_pools/add_instances.pyArgszAddInstances.Args*   s    %CCHMC  / ! !  GG57C##F+!/GI    c                 ,   t        j                  | j                               }|j                  }|j                  r=|j
                  s1|j                  |_        t        j                  d|j
                         | j                  j                  ||j                  t        j                  |            }|D cg c],  }|j                  j                  |j                               . }}t!        d |D              }t#        |      dkD  rt%        j&                  d      |j)                         }|j*                  r$||j*                  k7  rt%        j&                  d      ||_        | j,                  j                  ||j                        }	|j                  j/                  |	j*                  |	j0                  |	j3                         |j                  j5                  |            }
|j7                  |j8                  j:                  d	|
fg      S c c}w )
NzGThe --zone flag is deprecated. Use equivalent --instances-zone=%s flag.)scope_lister)instancec              3   Z   K   | ]#  }t        j                  |j                         % y w)N)r   ZoneNameToRegionNamezone).0instance_refs     r    	<genexpr>z#AddInstances.Run.<locals>.<genexpr>O   s)      <-:\ 33L4E4EF-:s   )+   z<Instances must all be in the same region as the target pool.)r   )regionproject
targetPooltargetPoolsAddInstanceRequestAddInstance)r   ComputeApiHolderReleaseTrackclientr(   instances_zoner   warningr   ResolveAsResource	resourcesr   GetDefaultScopeListermessagesInstanceReferenceSelfLinksetlenr	   ArgumentErrorpopr-   r   $ComputeTargetPoolsAddInstanceRequestr.   NameTargetPoolsAddInstanceRequestMakeRequestsapitools_clienttargetPools)selfargsholderr4   instance_refsr*   r   unique_regionsr-   target_pool_refrequests              r    RunzAddInstances.Run=   s   **4+<+<+>?F]]Fyy,, IId	kk ./3/B/BD %%77"88@ 8 BM *+)L 	))<3H3H3J)K)  +  <-:< <N >Q$$
HJ J !F {{v,$$
HJ J DK**<<T=C=M=MOO ooBB%%''"'')OO99I9N C QG !7!7!C!C!.!9  : ; ;?+s   81H)	__name__
__module____qualname____doc__r   r   classmethodr!   rN    r"   r    r   r      s,     ,/I I$.;r"   r   N)rR   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer	   r
   r   ,googlecloudsdk.command_lib.compute.instancesr   /googlecloudsdk.command_lib.compute.target_poolsgooglecloudsdk.corer   SilentCommandr   rT   r"   r    <module>r]      s?    4 &  ' 7 0 ( 9 E P A #L;4%% L;r"   