
                            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  \R                   \R"                  " \R$                  R&                  5       " S	 S
\R(                  5      5       5       rSS0\l        g)z*Command for updating network policy rules.    )ClassVar)base_classes)client)base)flags)rules_utils)	arg_utilsc                   p    \ rS rSr% Sr\\R                     \S'   \	S 5       r
S rS\4S jrS\4S	 jrS
rg)Update   zcUpdates a Compute Engine network policy rule.

*{command}* is used to update network policy rules.
NETWORK_POLICY_ARGc                     [         R                  " SSS9U l        U R                  R                  U5        [         R                  " U5        g )NTupdate)required	operation)r   NetworkPolicyRuleArgumentr   AddArgumentAddArgsUpdateRule)clsparsers     Klib/surface/compute/network_policies/traffic_classification_rules/update.pyArgsUpdate.Args&   s>    "<<C &&v.	F#    c           
         SSSS.n[         R                  " U R                  5       5      nU R                  R	                  XR
                  5      n[        R                  " XCR                  S9n[        R                  " UR                  5      n/ n/ n/ n	/ n
S nSn/ n/ nSnS nS nS nU HG  nUR                  U5      (       d  M  UR                  U5      (       a  M3  UR                  UU   5        MI     UR                  S5      (       a2  SnU R                  UR                  R                   UR"                  5      nUR                  S	5      (       a2  SnU R%                  UR                  R                   UR&                  5      nUR                  S
5      (       a  SnUR(                  nUR                  S5      (       a  UR*                  nSnUR                  S5      (       a  UR,                  nSnUR                  S5      (       a7  Sn[        R.                  " UR0                  UR                  R                   5      n	UR                  S5      (       a  UR2                  n
UR                  S5      (       a  UR4                  nUR                  S5      (       a!  [        R                  " UR6                  5      nOUnUR                  S5      (       a+  [        R8                  " UR                  UR:                  5      nU(       a&  UR                  R                   R=                  UUU	S9nOS nU(       a&  UR                  R                   R?                  UUUS9nOS nUR                  R                   RA                  UUUU
URB                  UUS9nUR                  RD                  RG                  U5         URI                  UURJ                  US9sS S S 5        $ ! , (       d  f       g = f)Nzmatch.srcIpRangeszmatch.destIpRangestargetSecureTags)src_ip_rangesdest_ip_rangestarget_secure_tags)refcompute_clientFtraffic_classT	dscp_mode
dscp_valuer   r   layer4_configstarget_service_accountsdisablednew_priorityr   )srcIpRangesdestIpRangeslayer4Configs)trafficClassdscpMode	dscpValue)priorityactionmatchtargetServiceAccountsdescriptionr'   r   )r/   network_policynetwork_policy_rule)&r   ComputeApiHolderReleaseTrackr   ResolveAsResource	resourcesr   NetworkPolicyRuler   ConvertPriorityToIntr/   IsKnownAndSpecifiedGetValueappendIsSpecified_GetTrafficClassmessagesr"   _GetDscpModer#   r$   r   r   ParseLayer4Configsr%   r&   r'   r(   TranslateSecureTagsr   -NetworkPolicyTrafficClassificationRuleMatcher,NetworkPolicyTrafficClassificationRuleAction&NetworkPolicyTrafficClassificationRuler3   apitools_clientIncludeFields
UpdateRuler4   )selfargs clearable_arg_name_to_field_nameholderr    network_policy_rule_clientr/   r   r   layer4_config_listr&   r'   should_setup_matchr   cleared_fieldsshould_setup_actionr"   r#   r$   argr(   matcherr0   r5   s                           r   Run
Update.Run.   s   ,.0($
 **4+<+<+>?F

!
!
3
3D:J:J
KC!'!9!9" //>HMN HNMIJ/		!	!#	&	&t}}S/A/A>sCD 0 (( ++
--
 
 $"4"4m $$ ##FMM$:$:DNNKi%% ??j((((m())**n())&99


v}}55 122 $ < <
##h'' 55d6G6GHll,--&::
--00 
--
 
 
N
N'). O   g
--
 
 
M
M( " N   f 	EE!"9((/ 	F 	
  
	&	&	4	4^	D'22,,1 3  
E	D	Ds   0O
O#r#   c                 X    [         R                  " UUR                  R                  5      $ N)r	   ChoiceToEnumrF   DscpModeValueValuesEnum)rK   rA   r#   s      r   rB   Update._GetDscpMode   s'    !!==UU r   r"   c                 X    [         R                  " UUR                  R                  5      $ rY   )r	   rZ   rF   TrafficClassValueValuesEnum)rK   rA   r"   s      r   r@   Update._GetTrafficClass   s'    !!==YY r    N)__name__
__module____qualname____firstlineno____doc__r   compute_flagsResourceArgument__annotations__classmethodr   rV   strrB   r@   __static_attributes__r`   r   r   r   r      sK    
 }==>>$ $hTc c r   r   EXAMPLESa      To update a rule with priority ``10'' in a network policy with name
    ``my-policy'' to change the description to ``new example rule'', run:

      $ {command}           --priority=10           --network-policy=my-policy           --description="new example rule"
    N)re   typingr   googlecloudsdk.api_lib.computer   /googlecloudsdk.api_lib.compute.network_policiesr   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer   rf   3googlecloudsdk.command_lib.compute.network_policiesr   $googlecloudsdk.command_lib.util.apisr	   UniverseCompatibleReleaseTracksr7   ALPHAUpdateCommandr   detailed_helpr`   r   r   <module>ry      s    1  7 B ( E E K : D%%++,DT D - DP  
 r   