
                         h   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d Z e
j(                  e
j*                  j,                  e
j*                  j.                  e
j*                  j0                         G d de
j2                               Zy)z2gcloud dns response-policies rules update command.    )absolute_import)division)unicode_literals)util)apis)base)flags)resource_args)log)
propertiesc                     t        j                         j                  |        t        j                         j                  |        t        j                         j                  |        | j                  ddd       y)z+Adds the common arguments for all versions.z
--dns-nameFz3DNS name (wildcard or exact) to apply this rule to.)requiredhelpN)r	   GetLocalDataResourceRecordSetsAddToParserGetResponsePolicyRulesBehaviorGetLocationArgadd_argument)parsers    1lib/surface/dns/response_policies/rules/update.py_AddArgsCommonr      sd    &&(44V<&&(44V<$$V,@  B    c                 B   t        j                  |      }t        j                  d|      }|j	                  | t
        j                  j                  j                  j                         |      }|dk(  r|j                  |_
        |j                  j                  |      S )z'Get response policy rule to be Updated.dns)responsePolicyprojectresponsePolicyRulev2)r   GetApiClientr   GetMessagesModule DnsResponsePolicyRulesGetRequestr   VALUEScorer   GetlocationresponsePolicyRules)response_policyresponse_policy_ruleapi_versionargsclientmget_requests          r   _FetchResponsePolicyRuler.   ,   s     [)&
UK0!22$$$,,002- 3 /+ D==K		#	#	'	'	44r   c                   6    e Zd ZdZed        Zed        Zd Zy)Updatea  Updates a new Cloud DNS response policy rule.

      This command updates a new Cloud DNS response policy rule.

      ## EXAMPLES

      To update a new response policy rule with DNS name, run:

        $ {command} myresponsepolicyrule --response-policy="myresponsepolicy"
        --dns-name="www.newzone.com." # pylint: disable=line-too-long

      To update a new response policy rule with local data rrsets, run:

        $ {command} myresponsepolicyrule --response-policy="myresponsepolicy"
        --local-data=name=www.zone.com.,type=A,ttl=21600,rrdatas=1.2.3.4

      To update a new response policy rule with behavior, run:

        $ {command} myresponsepolicyrule --response-policy="myresponsepolicy"
        --behavior=bypassResponsePolicy
  c                     | j                         t        j                   j                  t        j                   j                  fv S )N)ReleaseTrackr   BETAALPHA)clss    r   _BetaOrAlphazUpdate._BetaOrAlphaS   s:    $"3"3"8"8"&"3"3"9"9"; ; ;r   c                     t        |       t        j                  |dd       |j                  j	                  d       y )Nz	to updatev1)verbr)   json)r   r
   AddResponsePolicyRuleArgdisplay_info	AddFormat)r5   r   s     r   ArgszUpdate.ArgsX   s3    6**[d4
!!&)r   c           	         t        j                  | j                         |      }t        j                  |      }t	        j
                  d|      }|j                  j                  j                         }|j                         }|j                  |      }|j                  |j                        }t        |j                  |j                  ||      }	|j!                  d      sC|j!                  d      s2|j!                  d      s!t"        j$                  j'                  d       |	S |j!                  d      r|j(                  |	_        |j!                  d      rd |	_        g }
|j.                  D ]s  }|j1                  |j3                  d      |j3                  d	      |j3                  d
      |j3                  d      j5                  d            }|
j7                  |       u |j9                  |
      |	_        |j!                  d      r"d |	_        t=        j>                  ||      |	_        |jA                  |j                  |j                  |	tB        jD                  jF                  jH                  jK                               }|dk(  r|jL                  |_&        |jN                  jQ                  |      }t#        jR                  |jT                  d       |S )Nr   )ruleName)responsePolicyNamedns_name
local_databehaviorzNothing to update.nametypettlrrdatas|)rE   rF   rG   rH   )
localDatas)r   r   responsePolicyRuleResourcer   r   ResponsePolicyRule)kind)+r   GetApiFromTrackAndArgsr2   r   r   r    CONCEPTSr(   ParseNamerL   ResponsePolicyr'   r.   rA   r@   IsSpecifiedr   statusPrintrB   dnsNamerD   rC   ResourceRecordSetgetsplitappendResponsePolicyRuleLocalData	localDatacommand_util ParseResponsePolicyRulesBehavior#DnsResponsePolicyRulesUpdateRequestr   r"   r#   r   r$   r%   r&   r0   UpdatedResourcer   )selfr*   r)   r+   messagesresponse_policy_rule_refresponse_policy_rule_namer(   r'   	to_updaterrsetsrrsetresource_record_set
update_requpdated_response_policy_rules                  r   Runz
Update.Run_   s   --d.?.?.A4HK{+F%%e[9H  $}}AAGGI 8 = = ?#66* 7 , --// . 1O ))K)K)=)F)F)4d<I J'0@0@1"..z:	jj+,
#--i%if??%&886"6"		% IIi(..s3	 9 5
 	)* # %@@ A i 
# i'HH
i ==&99/88#,!!&&..224	 > 6J d MMj#)#=#=#D#DZ#P 4GG13 ('r   N)__name__
__module____qualname____doc__classmethodr6   r>   rk    r   r   r0   r0   :   s4    , ; ; * *;(r   r0   N)ro   
__future__r   r   r   googlecloudsdk.api_lib.dnsr   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper   googlecloudsdk.command_lib.dnsr	   r
   r]   googlecloudsdk.corer   r   r   r.   ReleaseTracksr2   r4   r3   GAUpdateCommandr0   rq   r   r   <module>r{      s    9 &  ' + , ( 0 8 ? # *
B5 D%%++T->->-C-C%%((*^(T ^(*^(r   