
    {                        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  G d	 d
e      Z ej&                  ej(                  j*                         G d dej,                               Z ej&                  ej(                  j0                         G d de             Z ej&                  ej(                  j4                         G d de             Zy)z&Command for creating target instances.    )absolute_import)division)unicode_literals)base_classes)base)
exceptions)flagsc                   4    e Zd ZdZdZdZed        Zd Zd Z	y)CreateHelperz(Helper class to creat a target instance.Nc                    |j                   j                  t        j                         t	        j
                         | _        | j                  j                  |       t        j                         | _	        | j                  j                  |       t        j                  |       |j                  dd       |j                   j                  t        j                         y)z4Add flags to create a target instance to the parser.z--descriptionz8An optional, textual description of the target instance.)helpN)display_info	AddFormatr	   DEFAULT_LIST_FORMATinstance_flags!InstanceArgumentForTargetInstanceINSTANCE_ARGAddArgumentTargetInstanceArgumentTARGET_INSTANCE_ARG
AddNetworkadd_argumentAddCacheUpdaterTargetInstancesCompleterclsparsers     .lib/surface/compute/target_instances/create.pyArgszCreateHelper.Args$   s     !!%";";<%GGIC  (#::<C''/	V
G  I ''(F(FG    c                      y N )selfs    r   __init__zCreateHelper.__init__5   s    r    c                 d   |j                   }| j                  j                  ||j                  t	        j
                  |            }|j                  r|j                  s|j                  |_        | j                  j                  ||j                        }|j                  |j                  k7  rt        j                  d      |j                  j                  |j                  |j                         |j                               }|j!                  d      r=t"        j$                  j                  ||j                        j                         |_        |j                  j)                  ||j*                  |j                        }|j-                  |j.                  j0                  d|fg      S )z5Issues request necessary to create a target instance.)scope_listerzBTarget instance zone must match the virtual machine instance zone.)descriptionnameinstancenetwork)targetInstanceprojectzoneInsert)clientr   ResolveAsResource	resourcescompute_flagsGetDefaultScopeListerr.   instance_zoner   compute_exceptionsArgumentErrormessagesTargetInstancer(   NameSelfLinkIsSpecifiedr	   NETWORK_ARGr+   #ComputeTargetInstancesInsertRequestr-   MakeRequestsapitools_clienttargetInstances)r$   argsholderr0   target_instance_refinstance_reftarget_instancerequests           r   RunzCreateHelper.Run8   s   ]]F22DD"88@ E B
 (:(:.33d$$66tV=M=MNL<#4#44,,
NP P oo44$$ %%'&&( 5 *O
 	" % 1 1 C C
  !""*(*  ooAA&#++ %% B 'G
 !7!7!G!G!)7!4  5 6 6r    )
__name__
__module____qualname____doc__r   r   classmethodr   r%   rH   r#   r    r   r   r      s.    0,H H 	!6r    r   c                   &    e Zd ZdZed        Zd Zy)CreateGA  Create a target instance for handling traffic from a forwarding rule.

    *{command}* is used to create a target instance for handling
  traffic from one or more forwarding rules. Target instances
  are ideal for traffic that should be managed by a single
  source. For more information on target instances, see
  [](https://cloud.google.com/compute/docs/protocol-forwarding/#targetinstances)
  c                 .    t         j                  |       y r"   )r   r   r   s     r   r   zCreateGA.Argsg   s    fr    c                 |    t        j                  | j                               }t               j	                  ||      S r"   )r   ComputeApiHolderReleaseTrackr   rH   )r$   rB   rC   s      r   rH   zCreateGA.Runk   s0    **4+<+<+>?F>dF++r    N)rI   rJ   rK   rL   rM   r   rH   r#   r    r   rO   rO   \   s       ,r    rO   c                       e Zd ZdZy)
CreateBetarP   NrI   rJ   rK   rL   r#   r    r   rV   rV   p       r    rV   c                       e Zd ZdZy)CreateAlpharP   NrW   r#   r    r   rZ   rZ   |   rX   r    rZ   N)rL   
__future__r   r   r   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer   r6   r	   r3   ,googlecloudsdk.command_lib.compute.instancesr   3googlecloudsdk.command_lib.compute.target_instancesobjectr   ReleaseTracksrT   GACreateCommandrO   BETArV   ALPHArZ   r#   r    r   <module>rg      s    - &  ' 7 ( O EJ E;66 ;6| D%%((),t!! , *,& D%%**+  , D%%++,*  -r    