
                            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  ej0                  ej2                  j4                        ej6                   G d dej8                                      Z ej0                  ej2                  j<                         G d de             Z ej0                  ej2                  j@                         G d de             Z!dddde_"        y)zHCommand to add a dynamic network interface to a Compute Engine instance.    )absolute_import)division)unicode_literals)base_classes)utils)poller)waiter)base)flags)scopec                   .    e Zd ZdZdZdZed        Zd Zy)Add  Add a Dynamic Network Interface to a Compute Engine instance.

  *{command}* adds a Dynamic Network Interface to a Compute Engine instance.
  For example:

    $ {command} instance-name --parent-nic-name=nic1 --vlan=2
    --network=network-1 --subnetwork=subnetwork-1
  Fc                 p   t         j                  j                  |       t        j                  |       t        j
                  |       t        j                  |       t        j                  |       t        j                  |d       t        j                  |       t        j                  |d       t        j                  |       t        j                  |       t        j                  |       t        j                  |       t        j                  |       t        j                   |       t        j"                  |       t        j$                  |       | j&                  r*t        j(                  |       t        j*                  |       | j,                  rt        j.                  |       y y )NT)add_network_interface)instances_flagsINSTANCE_ARGAddArgumentnetwork_interfaces_flagsAddParentNicNameArg
AddVlanArgAddNetworkArgAddSubnetworkArgAddPrivateNetworkIpArgAddNetworkAttachmentArgAddAliasesArgAddStackTypeArgAddNetworkTierArgAddIpv6NetworkTierArgAddAddressArgsAddExternalIpv6AddressArgAddExternalIpv6PrefixLengthArgAddInternalIpv6AddressArgAddInternalIpv6PrefixLengthArgenable_ipv6_assignmentAddIpv6AddressArgAddIpv6PrefixLengthArgsupport_igmp_queryAddIgmpQueryArg)clsparsers     7lib/surface/compute/instances/network_interfaces/add.pyArgszAdd.Args.   s2     ,,V4008''/**62--f533d 44V<**6N,,V4..v6226:++F366v>;;FC66v>;;FC
!!00855f=
..v6     c           
      \   t        j                  | j                               }|j                  }|j                  }|j
                  }|j                  }t        j                  j                  ||j                  t        j                  |j                              }t        j                  ||fi dt        |dd       dt        |dd       d|j                  d|j                   dt"        j$                  j&                  dt        |dd       d	t        |d	d       d
t        |d
d       dt        |dd       dt        |dd       dt        |dd       dt        |dd       dt        |dd       dt        |dd       dt        |dd       dt        |dd       dt        |dd       dt        |dd       dt        |dd       dt        |dd       dt        |dd       dt        |dd       }|j)                  |j                  |j*                  |j                   |      }	|j,                  j/                  |	      }
|j                  j1                  |
j2                  d      }t5        j6                  |j,                        }t9        j:                  ||d|j=                          d      S )N)scope_listernetworksubnet
subnetworkprojectlocationr   network_attachmentparent_nic_namevlanprivate_network_ipalias_ip_ranges_stringaliases
stack_typenetwork_tieripv6_network_tieraddress
no_addressexternal_ipv6_addressexternal_ipv6_prefix_lengthinternal_ipv6_addressinternal_ipv6_prefix_lengthipv6_addressipv6_prefix_length
igmp_query)r4   instancezonenetworkInterfacezcompute.zoneOperations)
collectionz'Adding network interface for instance [])r   ComputeApiHolderReleaseTrackclientapitools_clientmessages	resourcesr   r   ResolveAsResourcer   GetDefaultScopeListerinstances_utilsCreateNetworkInterfaceMessagegetattrr4   rI   compute_scopes	ScopeEnumZONE*ComputeInstancesAddNetworkInterfaceRequestrH   	instancesAddNetworkInterfaceParseselfLinkr   Pollerr	   WaitForName)selfargsholdercompute_client
api_clientrQ   rR   instance_refnetwork_interfacerequest	operationoperation_refoperation_pollers                r,   RunzAdd.RunJ   s   **4+<+<+>?F]]N//J&&H  I"//AA00? B L (EE i. t\40	
 $$ "" &&++ #4)=tD  &7> T64( #4)=tD  'tY= 4t4 T>48 "$(;TB  i.!" 4t4#$ &d,CTJ%& %,/%
', &d,CTJ-. %,/%
/4 T>4856 #4)=tD78 4t49> AA$$&&*	 B G $$88AI$$**'? + M }}Z%9%9:>>
1,2C2C2E1FaH r.   N)	__name__
__module____qualname____doc__r%   r(   classmethodr-   rn    r.   r,   r   r      s,     !7 76=r.   r   c                       e Zd ZdZdZdZy)AddBetar   FNro   rp   rq   rr   r%   r(   rt   r.   r,   rv   rv      s     !r.   rv   c                       e Zd ZdZdZdZy)AddAlphar   TNrw   rt   r.   r,   ry   ry      s      r.   ry   z=Add a Dynamic Network Interface to a Compute Engine instance.zJ*{command}* adds a Dynamic Network Interface to a Compute Engine instance.z      To add a Dynamic Network Interface to a Compute Engine instance, run:
        $ {command} instance-name --parent-nic-name=nic1 --vlan=2
        --network=network-1 --subnetwork=subnetwork-1
    )briefDESCRIPTIONEXAMPLESN)#rr   
__future__r   r   r   googlecloudsdk.api_lib.computer   (googlecloudsdk.api_lib.compute.instancesr   rU   )googlecloudsdk.api_lib.compute.operationsr   googlecloudsdk.api_lib.utilr	   googlecloudsdk.callioper
   "googlecloudsdk.command_lib.computer   r   rX   ,googlecloudsdk.command_lib.compute.instancesr   ?googlecloudsdk.command_lib.compute.instances.network_interfacesr   ReleaseTracksrN   GAUniverseCompatibleUpdateCommandr   BETArv   ALPHAry   detailed_helprt   r.   r,   <module>r      s    O &  ' 7 M < . ( 4 F Q m D%%(()f$

 f  *fR D%%**+c  , D%%++,w  - M	 r.   