
    u                     t   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 Z e
j$                  e
j&                  j(                  e
j&                  j*                  e
j&                  j,                        e
j.                   G d de
j0                                      Zy)z,gcloud dns response-policies update command.    )absolute_import)division)unicode_literals)util)apis)base)flags)resource_args)logc                    t        j                         j                  |        t        j                         j                  |        t        j                         j                  |        t        j
                         j                  |        y N)r	   GetResponsePolicyDescriptionArgAddToParserGetResponsePolicyNetworksArgGetResponsePolicyGkeClustersArgGetLocationArg)parsers    +lib/surface/dns/response_policies/update.py_AddArgsCommonr      s^    '')55f=$$&226:'')55f=$$V,    c                   <    e Zd ZdZd Zed        Zed        Zd Zy)Updatea  Updates a Cloud DNS response policy.

      This command updates a Cloud DNS response policy.

      ## EXAMPLES

      To update a response policy with minimal arguments, run:

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

      To update a response policy with all optional arguments, run:

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

      To update a new zonal response policy scoped to a GKE cluster in
      us-central1-a, run:

        $ {command} myresponsepolicy --description='My new response policy.'
        --gkeclusters=cluster1 --location=us-central1-a
  c                    t        j                  |      }t        j                  d|      }|j	                  |j                         |j                        }|dk(  r|j                  |_        |j                  j                  |      S )z"Get response policy to be Updated.dns)responsePolicyprojectv2)
r   GetApiClientr   GetMessagesModuleDnsResponsePoliciesGetRequestNamer   locationresponsePoliciesGet)selfresponse_policy_refapi_versionargsclientmessage_moduleget_requests          r   _FetchResponsePolicyzUpdate._FetchResponsePolicy@   s{    {+F++E;?N >>*//1#++ ? -K d!]]k""&&{33r   c                     | j                         t        j                   j                  t        j                   j                  fv S r   )ReleaseTrackr   BETAALPHA)clss    r   _BetaOrAlphazUpdate._BetaOrAlphaK   s:    $"3"3"8"8"&"3"3"9"9"; ; ;r   c                     t        j                  |dt        j                  | j	                                      t        |       |j                  j                  d       y )Nz	to update)verbr'   json)r
   AddResponsePolicyResourceArgr   GetApiFromTrackr.   r   display_info	AddFormat)r1   r   s     r   ArgszUpdate.ArgsP   sK    ..(()9)9);<> 6
!!&)r   c                 ~   t        j                  | j                         |      }t        j                  |      }t	        j
                  d|      }t        j                  |      }|j                  |j                  t        j                  ||      d      }| j                  |||      }|j                  d      sC|j                  d      s2|j                  d      s!t        j                  j                  d       |S |j                  d      rG|j                  dgk(  rg |_        t!        j"                  |j                  |j$                  |      |_        |j                  d      r1|j&                  }|D 	cg c]  }	|j)                  |		       c}	|_        |j                  d      r|j,                  |_        |j/                  |j1                         ||j$                  
      }
|dk(  r|j2                  |
_        |j4                  j7                  |
      }t        j8                  |j:                  d       |S c c}	w )Nr   zdns.responsePolicies)
collectionnetworksdescriptiongkeclusterszNothing to update. )gkeClusterName)r   responsePolicyResourcer   r   ResponsePolicy)kind)r   GetApiFromTrackAndArgsr.   r   r   r   GetRegistryParseresponse_policiesGetParamsForRegistryr,   IsSpecifiedr   statusPrintr=   command_utilParseResponsePolicyNetworksr   r?   ResponsePolicyGKEClustergkeClustersr>    DnsResponsePoliciesUpdateRequestr!   r"   r#   r   UpdatedResourcer   )r%   r(   r'   r)   messagesregistryr&   	to_updater?   name
update_requpdated_response_policys               r   Runz
Update.RunY   s   --d.?.?.A4HK{+F%%e[9H ,H"..!!+t4) ) 
 ))[$I
 	$M*M*	jj+,
#	2$	'CC
--,44kCi &$$k "!d 
+
+4
+
@!i
 &"..i::*//1(#++ ; -J
 d MMj$55<<ZH/>>-/ #"+s   7H:N)	__name__
__module____qualname____doc__r,   classmethodr2   r:   rY    r   r   r   r   %   s9    .	4 ; ; * *5#r   r   N)r]   
__future__r   r   r   googlecloudsdk.api_lib.dnsr   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper   googlecloudsdk.command_lib.dnsr	   r
   rM   googlecloudsdk.corer   r   ReleaseTracksr.   GAr/   r0   UniverseCompatibleUpdateCommandr   r_   r   r   <module>rj      s    3 &  ' + , ( 0 8 ? #- D%%(($*;*;*@*@%%++-f#T f# -f#r   