
    *                        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)zBCommand for updating access configs for virtual machine instances.    )absolute_import)division)unicode_literals)base_classes)base)
exceptions)flags)logz
        *{command}* is used to update access configurations for network
        interfaces of Compute Engine virtual machines. IPv4 and IPv6 access
        configurations cannot be updated together.
        a  
    To update public PTR record in IPv4 access config in network interface 'nic0' of an instance, run:

      $ {command} example-instance --network-interface=nic0 --zone=us-central1-b           --public-ptr --public-ptr-domain=exampledomain.com.

    To update public PTR record in IPv6 access config in default network interface 'nic0' of an instance, run:

      $ {command} example-instance --zone=us-central1-b           --ipv6-public-ptr-domain=exampledomain.com.
  )DESCRIPTIONEXAMPLESc                 8   [         R                  R                  U 5        [         R                  " U 5        [         R                  " U SS9  [         R
                  " U 5        U(       a  [         R                  " U SS9  U(       a  [         R                  " U SSS9  gg)z*Register parser args common to all tracks.F)instanceT)r   
for_updateN)r	   INSTANCE_ARGAddArgumentAddNetworkInterfaceArgsAddPublicPtrArgsAddIpv6PublicPtrArgsAddPublicDnsArgsAddNetworkTierArgs)parsersupport_public_dnssupport_network_tiers      5lib/surface/compute/instances/update_access_config.py_Argsr   1   sq       ('%0V$	6E2	VeE     c                   Z    \ rS rSrSrSrSr\S 5       rS r	S r
S rS rS	 rS
 rS rSrg)UpdateAccessConfigInstances>   =Update a Compute Engine virtual machine access configuration.Fc                 B    [        UU R                  U R                  S9  g )N)r   r   )r   _support_public_dns_support_network_tier)clsr   s     r   Args UpdateAccessConfigInstances.ArgsE   s    	22 668r   c                 f    [         R                  R                  X2[         R                  " U5      S9$ )N)scope_lister)r	   r   ResolveAsResourceGetInstanceZoneScopeLister)selfclient	resourcesargss       r   CreateReference+UpdateAccessConfigInstances.CreateReferenceL   s2    //e&F&Fv&N 0 P Pr   c                     UR                   R                  UR                   R                  R                  R                  S9$ N)type)messagesAccessConfigTypeValueValuesEnumONE_TO_ONE_NATr+   r,   s     r   CreateV4AddressConfig1UpdateAccessConfigInstances.CreateV4AddressConfigP   s9    ??''__))==LL ( N Nr   c                     UR                   R                  UR                   R                  R                  R                  S9$ r2   )r4   r5   r6   DIRECT_IPV6r8   s     r   CreateV6AddressConfig1UpdateAccessConfigInstances.CreateV6AddressConfigT   s9    ??''__))==II ( K Kr   c                     UR                   R                  SUR                  R                  " S0 UR	                  5       D64$ )NGet )apitools_client	instancesr4   ComputeInstancesGetRequestAsDict)r+   r,   instance_refs      r   GetGetRequest)UpdateAccessConfigInstances.GetGetRequestX   s=    "",,eOO66O9L9L9NOQ Qr   c           
          UR                   R                  SUR                  R                  UR                  UR
                  UUR                  UR                  S94$ )NUpdateAccessConfig)r   networkInterfaceaccessConfigprojectzone)rB   rC   r4   )ComputeInstancesUpdateAccessConfigRequestr   network_interfacerM   rN   )r+   r,   r.   rF   access_configs        r   GetUpdateRequest,UpdateAccessConfigInstances.GetUpdateRequest\   s]    "",,.BOOEE%..!%!7!7*$,,!&& F () )r   c                 b   S nU R                   (       a'  UR                  (       a  SnOUR                  (       a  SnS nUR                  (       a  SnOUR                  (       a  SnS nUR
                  (       a  SnOUR                  (       a  SnUb  Ub  [        R                  " SS5      eU R                   (       a  Ub  U R                  U5      nXGl
        U$ Ub:  U R                  U5      nXWl        UR                  c  SOUR                  nXl        U$ Ub4  U R                  U5      nUR
                  c  SOUR
                  nXl        U$ U R                  (       aT  UR                   bG  U R                  U5      nUR"                  R$                  R'                  UR                   5      Ul        U$ g )NTFz--ipv6-public-ptr-domainzLCannot update --public-ptr-domain and --ipv6-public-ptr-domain at same time. )r"   
public_dnsno_public_dns
public_ptrno_public_ptripv6_public_ptr_domainno_ipv6_public_ptrr   InvalidArgumentExceptionr9   setPublicDnssetPublicPtrpublic_ptr_domainpublicPtrDomainNamer=   r#   network_tierr4   r5   NetworkTierValueValuesEnumnetworkTier)	r+   r,   r.   originalset_public_dnsset_ptrset_ipv6_ptrrQ   new_ptrs	            r   Modify"UpdateAccessConfigInstances.Modifyf   s   N	Gg			gL""l		 	 l 8//
$
X 
 N$>008m#1 008m#* ,,4$:P:Pg*1'008m119t?Z?Zg*1'!!d&7&7&C008m
//
&
&
A
A!  r   c                    [         R                  " U5        [         R                  " U5        U R                  (       a  [         R                  " U5        U R
                  (       a  [         R                  " U5        [        R                  " U R                  5       5      nUR                  nU R                  X2R                  U5      nU R                  X45      nUR                  U/5      nU R                  X1US   5      nUc=  [         R"                  R%                  SR'                  US   R(                  5      5        U$ UR                  U R+                  X1XG5      /S9$ )Nr   z/No change requested; skipping update for [{0}].)requests)r	   ValidatePublicPtrFlagsValidateIpv6PublicPtrFlagsr"   ValidatePublicDnsFlagsr#   ValidateNetworkTierArgsr   ComputeApiHolderReleaseTrackr,   r/   r-   rG   MakeRequestsri   r
   statusPrintformatnamerR   )r+   r.   holderr,   rF   get_requestobjectsnew_access_configs           r   RunUpdateAccessConfigInstances.Run   s    	  &	$$T*""4(!!##D)**4+<+<+>?F]]F''0@0@$GL$$V:K!!;-0GF'!*=  	jjHOO
!*// nfLL)  r   rA   N)__name__
__module____qualname____firstlineno____doc__r"   r#   classmethodr%   r/   r9   r=   rG   rR   ri   r|   __static_attributes__rA   r   r   r   r   >   sK    E8 8PNKQ)3jr   r   c                        \ rS rSrSrSrSrSrg)UpdateAccessConfigInstancesBeta   r    FrA   Nr~   r   r   r   r   r"   r#   r   rA   r   r   r   r      s    Er   r   c                        \ rS rSrSrSrSrSrg) UpdateAccessConfigInstancesAlpha   r    TrA   Nr   rA   r   r   r   r      s    Er   r   N)r   
__future__r   r   r   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   r   ,googlecloudsdk.command_lib.compute.instancesr	   googlecloudsdk.corer
   DETAILED_HELPr   ReleaseTracksrr   GAUpdateCommandr   BETAr   ALPHAr   detailed_helprA   r   r   <module>r      s    I &  ' 7 ( . > #	
	,
F D%%(()v$"4"4 v *vr D%%**+ &A   ,  D%%++,'B  - -:  )r   