
    e'                        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KJr  SS jrSS jr\
R,                  " \
R.                  R0                  \
R.                  R2                  \
R.                  R4                  5      \
R6                   " S S\
R8                  5      5       5       rg)z'gcloud dns managed-zone create command.    )absolute_import)division)unicode_literals)util)apis)base)
exceptions)flags)labels_util)log)
propertiesc                    [         R                  " S5      R                  U 5        [         R                  " 5       R                  U 5        [         R                  " 5       R                  U 5        [         R
                  " XU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        [         R                  " 5       R                  U 5        [         R                  " 5       R                  U 5        [         R                   " 5       R                  U 5        [         R"                  " 5       R                  U 5        g)z+Adds the common arguments for all versions.z+The name of the managed-zone to be created.N)r
   GetDnsZoneArgAddToParserGetManagedZonesDnsNameArgGetManagedZonesDescriptionArgAddCommonManagedZonesDnssecArgsr   AddCreateLabelsFlagsGetManagedZoneNetworksArgGetManagedZoneVisibilityArgGetForwardingTargetsArgGetDnsPeeringArgsGetPrivateForwardingTargetsArgGetReverseLookupArgGetServiceDirectoryArgGetManagedZoneLoggingArgGetManagedZoneGkeClustersArgGetLocationArg)parsermessagesapi_versions      'lib/surface/dns/managed_zones/create.py_AddArgsCommonr#       sO   3K!!#//7%%'33F;''+F""6*!!#//7##%11&9!--f5''/&&(44V<))&1 ,,V4  "..v6$$&226:$$V,    c                     SnU R                   b  [        R                  " XU5      nU$ / SQnU H'  n[        XS5      c  M  [        R
                  " US5      e   U$ )z6Parse user-specified args into a DnssecConfig message.N)denial_of_existenceksk_algorithmzsk_algorithmksk_key_lengthzsk_key_lengthzoDNSSEC must be enabled in order to use other DNSSEC arguments. Please set --dnssec-state to "on" or "transfer".)dnssec_statecommand_utilParseDnssecConfigArgsgetattrr	   InvalidArgumentException)argsr    r!   dnssec_configbad_argsbad_args         r"   _MakeDnssecConfigr4   5   ss    -	" 66M$ 
H 		%	111?
 	
  
r$   c                   >    \ rS rSrSr\S 5       r\S 5       rS rSr	g)CreateN   aY  Create a Cloud DNS managed-zone.

This command creates a Cloud DNS managed-zone.

## EXAMPLES

To create a managed-zone, run:

  $ {command} my-zone --dns-name=my.zone.com. --description="My zone!"

To create a managed-zone with DNSSEC, run:

  $ {command} my-zone-2 --description="Signed Zone"
      --dns-name=myzone.example
      --dnssec-state=on

  To create a zonal managed-zone scoped to a GKE Cluster in us-east1-a, run:

  $ {command} my-zonal-zone --description="Signed Zone"
      --dns-name=cluster.local
      --visibility=private
      --gkeclusters=cluster1
      --location=us-east1-a
c                     U R                  5       [        R                   R                  [        R                   R                  4;   $ )N)ReleaseTrackr   BETAALPHA)clss    r"   _BetaOrAlphaCreate._BetaOrAlphal   s;    "  r$   c                     [         R                  " U R                  5       5      n[        R                  " SU5      n[        XUS9  UR                  R                  [        R                  5        g )Ndns)r!   )
r   GetApiFromTrackr9   r   GetMessagesModuler#   display_infoAddCacheUpdaterr
   ManagedZoneCompleter)r<   r   r!   r    s       r"   ArgsCreate.Argss   sQ    &&s'7'7'9:K%%e[9H6=
''(B(BCr$   c                 \
  ^^ UR                   S:X  aZ  UR                  S5      (       a  [        R                  " SS5      eUR                  S5      (       a  [        R                  " SS5      eUR                   S:X  a1  UR                  c$  UR
                  c  [        R                  " S	S
5      e[        R                  " U R                  5       U5      n[        R                  " U5      n[        R                  " SU5      n[        R                  " U5      mTR                  UR                  [        R                   " X!5      SS9mUR                   nS nUS:X  a;  UR"                  R$                  R&                  nUR                   R)                  5       nO UR"                  R$                  R*                  nUR"                  R%                  U5      nS nXv:X  a  UR                  (       a  UR                  S/:w  a  UR                  O/ n	UU4S jn
U	 Vs/ s H
  o" U5      PM     nnU Vs/ s H  nUR-                  US9PM     nnUR
                  =(       d    / nU Vs/ s H  nUR/                  US9PM     nnUR1                  UUS9nS nUR2                  (       d  UR4                  (       a*  [6        R8                  " UUR2                  UR4                  S9n[;        XU5      n[<        R>                  " XR"                  R@                  5      nS nURB                  (       a  URD                  (       a~  S[F        RH                  RJ                  RL                  RO                  5        S3RQ                  URB                  URD                  5      nURS                  5       nURU                  US9Ul+        S nUR                  S5      (       a!  URX                  (       a  UR[                  5       nS nUR                  S5      (       a7  UR\                  (       a&  UR_                  URa                  UR\                  S9S9nS nUR                  S5      (       a!  URc                  5       nURd                  Ul3        UR#                  TRh                  [        Rj                  " URl                  5      URn                  UUUUUUUUUS9nURq                  UTRr                  S9nUS:X  a  URt                  Ul:        URv                  Ry                  U5      n[z        R|                  " T5        U/$ s  snf s  snf s  snf )Npublicnetworksz
--networkszLIf --visibility is set to public (default), setting networks is not allowed.gkeclustersz--gkeclusterszOIf --visibility is set to public (default), setting gkeclusters is not allowed.privatez--networks, --gkeclusterszIf --visibility is set to private, a list of networks or list of
           GKE clusters must be provided.'
         NOTE: You can provide an empty value ("") for private zones that
          have NO network or GKE clusters binding.
          r@   zdns.managedZones)
collectionv2 c                 Z   > TR                  U SSTR                  0S9R                  5       $ )Nzcompute.networksproject)rM   params)ParserQ   SelfLink)networkregistryzone_refs    r"   GetNetworkSelfLink&Create.Run.<locals>.GetNetworkSelfLink   s6    ~~)x//0  
 (*		r$   )
networkUrl)gkeClusterName)rJ   gkeClusters)r    server_listprivate_server_listzhttps://www.z*/compute/v1/projects/{}/global/networks/{}managed_reverse_lookupservice_directory_namespace)namespaceUrl)	namespacelog_dns_queries)namednsNamedescriptiondnssecConfiglabels
visibilityforwardingConfigprivateVisibilityConfigpeeringConfigreverseLookupConfigserviceDirectoryConfigcloudLoggingConfig)managedZonerQ   )?ri   IsSpecifiedr	   r/   rJ   rK   RequiredArgumentExceptionr   GetApiFromTrackAndArgsr9   GetApiClientr   rB   GetRegistryrS   dns_zoneGetParamsForRegistryManagedZoneVisibilityValueValuesEnumPRIVATEupperrL   )ManagedZonePrivateVisibilityConfigNetwork,ManagedZonePrivateVisibilityConfigGKECluster"ManagedZonePrivateVisibilityConfigforwarding_targetsprivate_forwarding_targetsr,   2ParseManagedZoneForwardingConfigWithForwardingPathr4   r   ParseCreateArgsLabelsValuetarget_projecttarget_networkr   VALUEScoreuniverse_domainGetformatManagedZonePeeringConfig%ManagedZonePeeringConfigTargetNetworktargetNetworkr_   ManagedZoneReverseLookupConfigr`   !ManagedZoneServiceDirectoryConfig*ManagedZoneServiceDirectoryConfigNamespaceManagedZoneCloudLoggingConfigrc   enableLoggingrp   AppendTrailingDotdns_namerf   DnsManagedZonesCreateRequestrQ   locationmanagedZonesr6   r   CreatedResource)selfr0   r!   r@   r    visibility_flagprivate_enumri   visibility_configrJ   rX   nnetwork_urlsnurlnetwork_configsrK   rd   gkecluster_configsforwarding_configr1   rh   peering_configpeering_networkreverse_lookup_configservice_directory_configcloud_logging_configzonerequestresultrV   rW   s                                @@r"   Run
Create.Runz   s     ("			*	%	%11
 	
 M**11
 	
 	9$MM!$00
%  --d.?.?.A4HK


K
(C%%e[9H,H~~!!+4%  H ooOLd))CCKKl--/o))CCKKl%%??PJ!  ==T]]rd-B$--  6>>X(+Xl> #"d 
<
<
<
M"   $$*k "	 "d 
?
?! @  "	   #EE"0B F  $"A"A

I
I11"&"A"A  &dkBM((/C/C/O/OPFNt22**//??CCEF G# ##)6!!4#6#6$   88:n

8
8( 9  " !122''&EEG#677,,!)!K!KGG;; H  "L "  )**%CCE+/+?+?(!!&&t}}5$$"* 1$17/   D 33("2"2 4 G dg$$W-F!8O ?s   T(T$T) N)
__name__
__module____qualname____firstlineno____doc__classmethodr=   rF   r   __static_attributes__r   r$   r"   r6   r6   N   s7    
2   D Dar$   r6   N)v1)r   
__future__r   r   r   googlecloudsdk.api_lib.dnsr   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper   r	   googlecloudsdk.command_lib.dnsr
   r,   $googlecloudsdk.command_lib.util.argsr   googlecloudsdk.corer   r   r#   r4   ReleaseTracksr9   r;   r:   GAUniverseCompatibleCreateCommandr6   r   r$   r"   <module>r      s    . &  ' + , ( . 0 ? < # *-*2 T..33T5F5F5I5I IT I Ir$   