
                         b   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(                  j*                  e
j(                  j,                  e
j(                  j.                         G d de
j0                               Zy)z,gcloud dns response-policies create command.    )absolute_import)division)unicode_literals)util)apis)base)
exceptions)flags)resource_args)logc                     t        j                  d      j                  |        t        j                         j                  |        t        j                         j                  |        t        j
                         j                  |        y )NT)required)r
   GetResponsePolicyDescriptionArgAddToParserGetResponsePolicyNetworksArgGetLocationArgGetResponsePolicyGkeClustersArg)parsers    +lib/surface/dns/response_policies/create.py_AddArgsCommonr      s`    ''6BB6J$$&226:$$V,'')55f=    c                   6    e Zd ZdZed        Zed        Zd Zy)Createa  Creates a new Cloud DNS response policy.

      This command creates a new Cloud DNS response policy.

      ## EXAMPLES

      To create a new response policy with minimal arguments, run:

        $ {command} myresponsepolicy --description='My new response policy.'
        --networks=''

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

        $ {command} myresponsepolicy --description='My new response policy.'
        --networks=network1,network2

      To create a new zonal response policy scoped to a GKE cluster in
        us-central1-a, run (alpha/beta):

        $ {command} beta myresponsepolicy --description='My new response
        policy.'
        --gkeclusters=cluster1 --location=us-central1-a
  c                     | j                         t        j                   j                  t        j                   j                  fv S )N)ReleaseTrackr   BETAALPHA)clss    r   _BetaOrAlphazCreate._BetaOrAlphaA   s:    $"3"3"8"8"&"3"3"9"9"; ; ;r   c                     t        j                  |dt        j                  | j	                                      t        |       |j                  j                  d       y )Nz	to create)verbapi_versionjson)r   AddResponsePolicyResourceArgr   GetApiFromTrackr   r   display_info	AddFormat)r   r   s     r   ArgszCreate.ArgsF   sK    ..(()9)9);<> 6
!!&)r   c                    t        j                  | j                         |      }t        j                  |      }t	        j
                  d|      }t        j                  |      }|j                  |j                  t        j                  ||      d      }|j                         }|j                  |      }|j                  d      s|j                  d      r|j                  dgk(  rg |_        t        j                  |j                  |j                   |      |_        |j                  d      rH|j"                  }	|	D 
cg c]  }
|j%                  |
       c}
|_        nt)        j*                  d	d
      |j                  d      r|j,                  |_        |j/                  ||j                         }|dk(  r|j0                  |_        |j2                  j5                  |      }t7        j8                  |d       |S c c}
w )Ndnszdns.responsePolicies)
collection)responsePolicyNamenetworksgkeclusters )gkeClusterNamez--networks,--gkeclusterszA list of networks or GKE clusters must be provided.'
         NOTE: You can provide an empty value ("") for response policies that
          have NO network or GKE clusters binding.
          description)responsePolicyprojectv2ResponsePolicy)kind)r   GetApiFromTrackAndArgsr   GetApiClientr   GetMessagesModuleGetRegistryParseresponse_policiesGetParamsForRegistryNamer5   IsSpecifiedr-   command_utilParseResponsePolicyNetworksr3   r.   ResponsePolicyGKEClustergkeClustersr	   RequiredArgumentExceptionr1    DnsResponsePoliciesCreateRequestlocationresponsePoliciesr   r   CreatedResource)selfargsr"   clientmessagesregistryresponse_policy_refresponse_policy_nameresponse_policyr.   namecreate_requestresults                r   Runz
Create.RunO   s   --d.?.?.A4HK{+F%%e[9H ,H"..!!+t4) ) + /335--/ . 1O 
#t'7'7'F	2$	!-!I!I
--,44k"Co 
		-	(&& $'
# --T-B#'
# 00
$  &$($4$4o!>>&0C0K0K ? MN d $n$$++N;F+2BCM5'
s   HN)__name__
__module____qualname____doc__classmethodr   r(   rT    r   r   r   r   &   s4    0 ; ; * *2r   r   N)rX   
__future__r   r   r   googlecloudsdk.api_lib.dnsr   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper   r	   googlecloudsdk.command_lib.dnsr
   r   r@   googlecloudsdk.corer   r   ReleaseTracksr   GAr   r   UpdateCommandr   rZ   r   r   <module>rd      s    3 &  ' + , ( . 0 8 ? #> D%%(($*;*;*@*@%%++-YT Y-Yr   