
    G                        S r SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	  SSKJ
r
  SS	KJr  S
SS.rS r\
R                  " \
R                   R"                  5       " S S\
R$                  5      5       r\
R                  " \
R                   R(                  5       " S S\5      5       r\
R                  " \
R                   R,                  5       " S S\5      5       r\\l        g)z?Command for adding access configs to virtual machine instances.    )absolute_import)division)unicode_literals)base_classes)	constants)arg_parsers)base)flagsz
*{command}* is used to create access configurations for network
interfaces of Compute Engine virtual machines. This allows you
to assign a public, external IP to a virtual machine.
ah  
To assign an public, externally accessible IP to a virtual machine named
``example-instance'' in zone ``us-central1-a'', run:

  $ {command} example-instance --zone=us-central1-a

To assign the specific, reserved public IP address ``123.456.789.123''
to the virtual machine, run:

  $ {command} example-instance --zone=us-central1-a --address=123.456.789.123
)DESCRIPTIONEXAMPLESc                    U R                  S[        R                  SR                  [        R                  5      S9  U R                  S[        R
                  SS9  [        R                  " U 5        [        R                  " U SS9  U(       a  [        R                  " U SS9  [        R                  " U SS9  [        R                  R                  U 5        g	)
z*Register parser args common to all tracks.z--access-config-namea         Specifies the name of the new access configuration. ``{0}''
      is used as the default if this flag is not provided. Since ONE_TO_ONE_NAT
      is currently the only access-config type, it is not recommended that you
      change this value.
      )defaulthelpz	--addressaA        Specifies the external IP address of the new access
      configuration. If this is not specified, then the service will
      choose an available ephemeral IP address. If an explicit IP
      address is given, then that IP address must be reserved by the
      project and not be in use by another resource.
      )actionr   F)instanceN)add_argumentr   DEFAULT_ACCESS_CONFIG_NAMEformatr   StoreOnceActionr
   AddNetworkInterfaceArgsAddPublicPtrArgsAddPublicDnsArgsAddNetworkTierArgsINSTANCE_ARGAddArgument)parsersupport_public_dnss     2lib/surface/compute/instances/add_access_config.py_Argsr   0   s     	22

 &55
6  8 	((
  	 '%0	6E26E2  (    c                   2    \ rS rSrSrSr\S 5       rS rSr	g)AddAccessConfigInstancesP   =Create a Compute Engine virtual machine access configuration.Fc                 *    [        XR                  S9  g )N)r   )r   _support_public_dns)clsr   s     r   ArgsAddAccessConfigInstances.ArgsV   s    	&%<%<=r    c                    [         R                  " U5        [        R                  " U R	                  5       5      nUR
                  n[         R                  R                  UUR                  [         R                  " U5      S9nUR                  R                  UR                  UR                  UR                  R                  R                  R                  S9nU R                   (       aC  [         R"                  " U5        UR$                  SL a  SUl        OUR(                  SL a  SUl        [         R*                  " U5        UR,                  SL a  SUl        OUR0                  SL a  SUl        UR2                  SLa  UR4                  b  UR4                  Ul        [9        USS5      nUb*  UR                  R                  R;                  U5      Ul        UR                  R?                  UURA                  5       URB                  URD                  URF                  S9nURI                  URJ                  RL                  SU4/5      $ )	z6Invokes request necessary for adding an access config.)scope_lister)namenatIPtypeTFNnetwork_tier)accessConfigr   networkInterfaceprojectzoneAddAccessConfig)'r
   ValidateNetworkTierArgsr   ComputeApiHolderReleaseTrackclientr   ResolveAsResource	resourcesGetInstanceZoneScopeListermessagesAccessConfigaccess_config_nameaddressTypeValueValuesEnumONE_TO_ONE_NATr&   ValidatePublicDnsFlagsno_public_dnssetPublicDns
public_dnsValidatePublicPtrFlagsno_public_ptrsetPublicPtr
public_ptrno_public_ptr_domainpublic_ptr_domainpublicPtrDomainNamegetattrNetworkTierValueValuesEnumnetworkTier&ComputeInstancesAddAccessConfigRequestNamenetwork_interfacer2   r3   MakeRequestsapitools_client	instances)selfargsholderr8   instance_refaccess_configr/   requests           r   RunAddAccessConfigInstances.RunZ   s   	!!$'**4+<+<+>?F]]F%%7755f= 8 ?L
 OO00$$ll__))==LL 1 NM
 ""4(			t	#%*"??d"%)"	  &T!#(m 	D	 #'m !!-**.*@*@m'46L#)??#?#?#=#=l#K  ooDD"""$//$$ E  G !7!7!A!A!2G!=  > ? ?r     N)
__name__
__module____qualname____firstlineno____doc__r&   classmethodr(   r\   __static_attributes__r^   r    r   r"   r"   P   s"    E> >/?r    r"   c                       \ rS rSrSrSrSrg)AddAccessConfigInstancesBeta   r$   Fr^   Nr_   r`   ra   rb   rc   r&   re   r^   r    r   rg   rg      s    Er    rg   c                       \ rS rSrSrSrSrg)AddAccessConfigInstancesAlpha   r$   Tr^   Nri   r^   r    r   rk   rk      s    Er    rk   N)rc   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper   r	   ,googlecloudsdk.command_lib.compute.instancesr
   DETAILED_HELPr   ReleaseTracksr7   GASilentCommandr"   BETArg   ALPHArk   detailed_helpr^   r    r   <module>rx      s    F &  ' 7 4 / ( >

()@ D%%(()8?t11 8? *8?v D%%**+#;  , D%%++,$<  -
 *7  &r    