
    #                     8   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 Ze
j&                   e
j(                  e
j*                  j,                         G d de
j.                                      Ze
j&                   e
j(                  e
j*                  j2                         G d de                    Ze
j&                   e
j(                  e
j*                  j6                         G d de                    Zy)z!gcloud dns policy create command.    )absolute_import)division)unicode_literals)util)apis)base)
exceptions)flags)resource_args)logc                    t        j                  d      j                  |        t        j                  d      j                  |        t        j                         j                  |        t        j
                         j                  |        t        j                         j                  |        t        j                         j                  |        t        j                         j                  |        y )NT)required)	r
   GetPolicyDescriptionArgAddToParserGetPolicyNetworksArgGetPolicyInboundForwardingArgGetPolicyAltNameServersArgGetPolicyLoggingArg!GetPolicyPrivateAltNameServersArgGetEnableDns64AllQueriesArgparsers    "lib/surface/dns/policies/create.py_AddArgsCommonr      s    .::6Bd+77?%%'33F;""$008))&1))+77?##%11&9    c                   &    e Zd ZdZed        Zd Zy)CreateGAan  Creates a new Cloud DNS policy.

      This command creates a new Cloud DNS policy.

      ## EXAMPLES

      To create a new policy with minimal arguments, run:

        $ {command} mypolicy \
        --description='My new policy test policy 5' \
        --networks=''

      To create a new policy with all optional arguments, run:

        $ {command} mypolicy \
        --description='My new policy test policy 5' \
        --networks=network1,network2 \
        --alternative-name-servers=192.168.1.1,192.168.1.2 \
        --enable-inbound-forwarding \
        --enable-logging \
        --enable-dns64-all-queries
  c                     t        j                  | dd       t        |        | j                  j	                  d       y )N	to createv1verbapi_versionjsonr   AddPolicyResourceArgr   display_info	AddFormatr   s    r   ArgszCreateGA.ArgsC   s3    &&[d46
!!&)r   c                 P   t        j                  | j                               }t        j                  |      }t	        j
                  d|      }|j                  j                  j                         }|j                         }|j                  |dd      }|j                  d      rH|j                  dgk(  rg |_        t        j                  |j                  |j                  |      |_        nt!        j"                  dd      |j                  d      s|j                  d	      r_|j$                  dgk(  rg |_        |j&                  dgk(  rg |_        t        j(                  ||j$                  |j&                  
      |_        |j                  d      r|j,                  |_        |j                  d      r|j0                  |_        |j                  d      r2|j5                  |j7                  |j8                              |_        n'|j5                  |j7                  d            |_        |j                  d      r|j<                  |_        |j?                  ||j                        }|j@                  jC                  |      }	tE        jF                  |d       |	S NdnsF)nameenableLoggingenableInboundForwardingnetworks z
--networksz
           A list of networks must be
           provided.'
         NOTE: You can provide an empty value ("") for policies that
          have NO network binding.
          alternative_name_servers private_alternative_name_servers)versionserver_listprivate_server_listenable_inbound_forwardingenable_loggingenable_dns64_all_queries)
allQueries)scopedescription)policyprojectPolicy)kind)$r   GetApiFromTrackReleaseTrackGetApiClientr   GetMessagesModuleCONCEPTSr=   ParseNamer?   IsSpecifiedr0   command_utilParsePolicyNetworksr>   r	   RequiredArgumentExceptionr2   r3   ParseAltNameServersalternativeNameServerConfigr7   r/   r8   r.   PolicyDns64ConfigPolicyDns64ConfigScoper9   dns64Configr<   DnsPoliciesCreateRequestpoliciesCreater   CreatedResource
selfargsr#   clientmessages
policy_refpolicy_namer=   create_requestresults
             r   RunzCreateGA.RunJ   sq   &&t'8'8':;K{+F%%e[9H %%++-J//#K__ %  F 
#	2$	$88
--++[:fo 00 A   23t7G7G*8,		&	&2$	.(*%		.	.2$	602-+7+K+K33"CC,Ef(
 34'+'E'Ef$()!00f23#55//66 0  6 f $55//5/A 6 f &++f66z11 7 3N __##N3F
2Mr   N__name__
__module____qualname____doc__staticmethodr)   r^    r   r   r   r   )   s!    . * *Br   r   c                   &    e Zd ZdZed        Zd Zy)
CreateBeta  Creates a new Cloud DNS policy.

      This command creates a new Cloud DNS policy.

      ## EXAMPLES

      To create a new policy with minimal arguments, run:

        $ {command} mypolicy \
        --description='My new policy test policy 5' \
        --networks=''

      To create a new policy with all optional arguments, run:

        $ {command} mypolicy \
        --description='My new policy test policy 5' \
        --networks=network1,network2 \
        --alternative-name-servers=192.168.1.1,192.168.1.2 \
        --private-alternative-name-servers=100.64.0.1 \
        --enable-inbound-forwarding \
        --enable-logging \
        --enable-dns64-all-queries
  c                     t        j                  | dd       t        |        | j                  j	                  d       y )Nr   v1beta2r!   r$   r%   r   s    r   r)   zCreateBeta.Args   s3    &&[i96
!!&)r   c                 P   t        j                  | j                               }t        j                  |      }t	        j
                  d|      }|j                  j                  j                         }|j                         }|j                  |dd      }|j                  d      rH|j                  dgk(  rg |_        t        j                  |j                  |j                  |      |_        nt!        j"                  dd      |j                  d      s|j                  d	      r_|j$                  dgk(  rg |_        |j&                  dgk(  rg |_        t        j(                  ||j$                  |j&                  
      |_        |j                  d      r|j,                  |_        |j                  d      r|j0                  |_        |j                  d      r2|j5                  |j7                  |j8                              |_        n'|j5                  |j7                  d            |_        |j                  d      r|j<                  |_        |j?                  ||j                        }|j@                  jC                  |      }	tE        jF                  |d       |	S r+   )$r   rA   rB   rC   r   rD   rE   r=   rF   rG   r?   rH   r0   rI   rJ   r>   r	   rK   r2   r3   BetaParseAltNameServersrM   r7   r/   r8   r.   rN   rO   r9   rP   r<   rQ   rR   rS   r   rT   rU   s
             r   r^   zCreateBeta.Run   sq   &&t'8'8':;K{+F%%e[9H %%++-J//#K__ %  F 
#	2$	$88
--++[:fo 00 A   23t7G7G*8,		&	&2$	.(*%		.	.2$	602-+7+O+O33"CC,Ef(
 34'+'E'Ef$()!00f23#55//66 0  6 f $55//5/A 6 f &++f66z11 7 3N __##N3F
2Mr   Nr_   re   r   r   rg   rg      s!    0 * *Br   rg   c                        e Zd ZdZed        Zy)CreateAlpharh   c                     t        j                  | dd       t        |        | j                  j	                  d       y )Nr   v1alpha2r!   r$   r%   r   s    r   r)   zCreateAlpha.Args  s3    &&[j:6
!!&)r   N)r`   ra   rb   rc   rd   r)   re   r   r   rn   rn      s    0 * *r   rn   N)rc   
__future__r   r   r   googlecloudsdk.api_lib.dnsr   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper   r	   googlecloudsdk.command_lib.dnsr
   r   rI   googlecloudsdk.corer   r   UniverseCompatibleReleaseTracksrB   GAUpdateCommandr   BETArg   ALPHArn   re   r   r   <module>r}      s   ( &  ' + , ( . 0 8 ? #: D%%(()at!! a * aH D%%**+b b , bJ D%%++,** * - *r   