
    y%                        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KJr  SS
KJr  SSKJr  SS jr       SS jr\R*                  " \R,                  R.                  \R,                  R0                  \R,                  R2                  5      \R4                   " S S\R6                  5      5       5       rg)z'gcloud dns managed-zone update command.    )absolute_import)division)unicode_literals)managed_zones)util)apis)base)flags)labels_util)
propertiesc                 n   [         R                  " S5      R                  U 5        [         R                  " XU5        [         R                  " 5       R                  U 5        [
        R                  " U 5        [         R                  " 5       R                  U 5        [        R                  R                  U 5        [         R                  " 5       R                  U 5        [         R                  " 5       R                  U 5        [         R                  " 5       R                  U 5        [         R                  " 5       R                  U 5        [         R                  " 5       R                  U 5        [         R                  " 5       R                  U 5        [         R                   " 5       R                  U 5        g)z2Helper function to retrieve necessary flag values.z+The name of the managed-zone to be updated.N)r
   GetZoneResourceArgAddToParserAddCommonManagedZonesDnssecArgsGetManagedZonesDescriptionArgr   AddUpdateLabelsFlagsGetManagedZoneNetworksArgr	   
ASYNC_FLAGGetForwardingTargetsArgGetDnsPeeringArgsGetPrivateForwardingTargetsArgGetReverseLookupArgGetManagedZoneLoggingArgGetManagedZoneGkeClustersArgGetLocationArg)parsermessagesapi_versions      'lib/surface/dns/managed_zones/update.py_CommonArgsr       s   3K''+F%%'33F;""6*!!#//7//f%!--f5''/&&(44V<))&1  "..v6$$&226:$$V,    Nc	           
        ^ ^ [         R                  " U5      n	U	R                  UR                  [         R                  " Xq5      SS9m[
        R                  " UT R                  U5      n
[        R                  " UT R                  R                  R                  UU 4S j5      n/ nUR                  5       (       a/  UR                  T R                  TUR                  5       5      5        0 nU(       a  X-S'   U(       a  X=S'   U(       a  XMS'   U(       a  X]S'   U(       a  XmS'   U
(       d  UR                  (       d  U(       a<  UR                  T R                   " TUR"                  4U
UR                  S	US
.UD65        U$ )a  Helper function to perform the update.

Args:
  zones_client: the managed zones API client.
  args: the args provided by the user on the command line.
  private_visibility_config: zone visibility config.
  forwarding_config: zone forwarding config.
  peering_config: zone peering config.
  reverse_lookup_config: zone reverse lookup config.
  cloud_logging_config: Stackdriver logging config.
  api_version: the API version of this request.
  cleared_fields: the fields that should be included in the request JSON as
    their default value (fields that are their default value will be omitted
    otherwise).

Returns:
  The update labels and PATCH call response.
zdns.managedZones)
collectionc                  :   > TR                  T 5      R                  $ N)Getlabels)zone_refzones_clients   r   <lambda>_Update.<locals>.<lambda>]   s    lx(//r!   private_visibility_configforwarding_configpeering_configreverse_lookup_configcloud_logging_configN)dnssec_configdescriptionr'   cleared_fields)r   GetRegistryParsezoneGetParamsForRegistrycommand_utilParseDnssecConfigArgsr   r   ProcessUpdateArgsLazyManagedZoneLabelsValue	GetOrNoneappendUpdateLabelsr2   Patchasync_)r)   argsr,   r-   r.   r/   r0   r   r3   registryr1   labels_updateupdate_resultskwargsr(   s   `             @r   _UpdaterG   2   sj   : k*(^^
ii
2#  ( 44
L!!;- 33
''33/- .!!(M,C,C,EF &*C&'"3-&;"#%9!"d&&&KK	
 ((()	
 	

 
r!   c                   >    \ rS rSrSr\S 5       r\S 5       rS rSr	g)UpdateGA   a^  Update an existing Cloud DNS managed-zone.

Update an existing Cloud DNS managed-zone.

## EXAMPLES

To change the description of a managed-zone, run:

  $ {command} my-zone --description="Hello, world!"

To change the description of a zonal managed-zone in us-east1-a, run:

  $ {command} my-zone --description="Hello, world!" --location=us-east1-a
c                     U R                  5       [        R                   R                  [        R                   R                  4;   $ r%   )ReleaseTrackr	   BETAALPHA)clss    r   _BetaOrAlphaUpdateGA._BetaOrAlpha   s;    "  r!   c                     [         R                  " U R                  5       5      n[        R                  " SU5      n[        XUS9  g )Ndns)r   )r   GetApiFromTrackrL   r   GetMessagesModuler    )rO   r   r   r   s       r   ArgsUpdateGA.Args   s7    &&s'7'7'9:K%%e[9Hk:r!   c                   ^ [         R                  " U R                  5       U5      mTS:X  a  UR                  OS n[        R
                  R                  TU5      nUR                  nS nUR                  S5      (       d  UR                  S5      (       a*  [        R                  " UUR                  UR                  S9nS nUR                  (       a  UR                  (       a~  S[        R                   R"                  R$                  R'                  5        S3R)                  UR                  UR                  5      nUR+                  5       nUR-                  US9Ul        S n/ n	UR0                  c  UR2                  b  UR0                  / :X  a  U	R5                  S5        UR0                  (       a  UR0                  O/ n
U4S	 jnU
 Vs/ s H
  o" U5      PM     nnU Vs/ s H  nUR7                  US9PM     nnUR2                  / :X  a  U	R5                  S
5        UR2                  (       a  UR2                  O/ nU Vs/ s H  nUR9                  US9PM     nnUR;                  UUS9nS nUR                  S5      (       a!  UR<                  (       a  UR?                  5       nS nUR                  S5      (       a!  URA                  5       nURB                  Ul"        [G        UUUUUUUTU	S9	$ s  snf s  snf s  snf )Nv2forwarding_targetsprivate_forwarding_targets)r   server_listprivate_server_listzhttps://www.z*/compute/v1/projects/{}/global/networks/{})
networkUrlz privateVisibilityConfig.networksc                    > [         R                  " T5      R                  U SS[        R                  R
                  R                  R                  0S9R                  5       $ )Nzcompute.networksproject)r#   params)	r   r4   r5   r   VALUEScorer`   	GetOrFailSelfLink)networkr   s    r   GetNetworkSelfLink(UpdateGA.Run.<locals>.GetNetworkSelfLink   sT    [)U-!:#4#4#9#9#A#A#K#KL  
 XZ	
r!   z#privateVisibilityConfig.gkeClusters)gkeClusterName)networksgkeClustersmanaged_reverse_lookuplog_dns_queries)r,   r-   r.   r/   r0   r   r3   )$r   GetApiFromTrackAndArgsrL   locationr   ClientFromApiVersionr   IsSpecifiedr8   2ParseManagedZoneForwardingConfigWithForwardingPathrZ   r[   target_projecttarget_networkr   rb   rc   universe_domainr&   formatManagedZonePeeringConfig%ManagedZonePeeringConfigTargetNetworktargetNetworkrj   gkeclustersr>   )ManagedZonePrivateVisibilityConfigNetwork,ManagedZonePrivateVisibilityConfigGKECluster"ManagedZonePrivateVisibilityConfigrl   ManagedZoneReverseLookupConfigManagedZoneCloudLoggingConfigrm   enableLoggingrG   )selfrB   ro   r)   r   r-   r.   peering_networkvisibility_configr3   rj   rg   nnetwork_urlsnurlnetwork_configsr{   namegkecluster_configsr/   r0   r   s                        @r   RunUpdateGA.Run   s   --d.?.?.A4HK +t 3t}}H ''66{HML$$H,--1A1A$2 2 
I
I11"&"A"A  Nt22**//??CCEF G, ,,2F!!4#6#6-   88:n

8
8( 9  "  N}} D$4$4$@ 
"	@A"&--Rh	
 6>>X(+Xl> #"d 
<
<
<
M"   
		R	CD(,(8(8D$$bk "	 "d 
?
?! @  "	   #EE"0B F  !122''&EEG)**%CCE+/+?+?("3+%31%
 
E ?s   	K- K2?K7 N)
__name__
__module____qualname____firstlineno____doc__classmethodrP   rV   r   __static_attributes__r   r!   r   rI   rI      s5    
   ; ;
mr!   rI   )v1)NNNNNr   N)r   
__future__r   r   r   googlecloudsdk.api_lib.dnsr   r   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper	   googlecloudsdk.command_lib.dnsr
   r8   $googlecloudsdk.command_lib.util.argsr   googlecloudsdk.corer   r    rG   ReleaseTracksrL   rN   rM   GAUniverseCompatibleUpdateCommandrI   r   r!   r   <module>r      s    . &  ' 4 + , ( 0 ? < *-, #Nb T..33T5F5F5I5I Jt!! J Jr!   