
                         8   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  SS	KJr  SS
KJr  SSKJr  \R(                  \R*                  " \R,                  R.                  5       " S S\R0                  5      5       5       rSS0\l        g)z*Command for creating network policy rules.    )absolute_import)division)unicode_literals)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)Create    zcCreates a Compute Engine network policy rule.

*{command}* is used to create network policy rules.
NETWORK_POLICY_ARGc                     [         R                  " SSS9U l        U R                  R                  USS9  [         R                  " U5        UR
                  R                  [         R                  5        g )NTcreate)required	operation)operation_type)r
   NetworkPolicyRuleArgumentr   AddArgumentAddArgsAddRuledisplay_infoAddCacheUpdaterNetworkPoliciesCompleter)clsparsers     Klib/surface/compute/network_policies/traffic_classification_rules/create.pyArgsCreate.Args*   s]    "<<C &&vh&G	 
''(F(FG    c                 H   [         R                  " U R                  5       5      nU R                  R	                  XR
                  5      n[        R                  " X2R                  S9nS nS nS n/ n/ n	/ n
/ nSn/ nS nU R                  UR                  R                  UR                  5      nU R                  UR                  R                  UR                  5      nUR                  S5      (       a  UR                  nUR                  S5      (       a  UR                  nUR                  S5      (       a  UR                   nUR                  S5      (       a  UR"                  nUR                  S5      (       a  UR$                  n	UR                  S5      (       a  UR&                  n
UR                  S	5      (       a  UR(                  nUR                  S
5      (       a  UR*                  nUR                  S5      (       a  UR,                  nUR                  S5      (       a+  [.        R0                  " UR                  UR2                  5      n[.        R4                  " XR                  R                  5      nUR                  R                  R7                  UU	US9nUR                  R                  R9                  [.        R:                  " U5      UR                  R                  R=                  UR>                  UUUS9UUUUUUS9nURA                  URB                  US9$ )N)refcompute_clientFnamedescriptionprioritysrc_ip_rangesdest_ip_rangeslayer4_configstarget_service_accountsdisabled
dscp_valuetarget_secure_tags)srcIpRangesdestIpRangeslayer4Configs)typetrafficClassdscpMode	dscpValue)r'   actionmatchtargetServiceAccountsr&   ruleNamer,   targetSecureTags)network_policynetwork_policy_rule)"r   ComputeApiHolderReleaseTrackr   ResolveAsResource	resourcesr   NetworkPolicyRule_GetDscpModemessages	dscp_mode_GetTrafficClasstraffic_classIsSpecifiedr%   r&   r'   r(   r)   r*   r+   r,   r-   r   TranslateSecureTagsr.   ParseLayer4Configs-NetworkPolicyTrafficClassificationRuleMatcher&NetworkPolicyTrafficClassificationRuleConvertPriorityToInt,NetworkPolicyTrafficClassificationRuleActionr6   
CreateRuler;   )selfargsholderr#   network_policy_rule_clientr%   r&   r'   r(   r)   r*   r+   r,   r.   r-   rD   rF   layer4_config_listmatcherr<   s                       r   Run
Create.Run3   s   **4+<+<+>?F

!
!
3
3D:J:J
KC!'!9!9" DKHMNN HJ!!&--"8"8$..II)) 2 2M YYd&&$$k
##h((((m())**n())**n122 $ < <
##h%%??j,--&::
--00 %77..
 	LL%', 	M 	
  !--00WW11(;}}%%RR& 	 S 
 5+ X   &00**/ 1  r!   rD   c                 X    [         R                  " UUR                  R                  5      $ N)r   ChoiceToEnumrM   DscpModeValueValuesEnum)rO   rC   rD   s      r   rB   Create._GetDscpMode   s'    !!==UU r!   rF   c                 X    [         R                  " UUR                  R                  5      $ rX   )r   rY   rM   TrafficClassValueValuesEnum)rO   rC   rF   s      r   rE   Create._GetTrafficClass   s'    !!==YY r!    N)__name__
__module____qualname____firstlineno____doc__r   compute_flagsResourceArgument__annotations__classmethodr   rU   strrB   rE   __static_attributes__r_   r!   r   r   r       sM    
 }==>>H HKZc c r!   r   EXAMPLESa      To create a traffic classification rule with priority ``10'' in a network
    policy with name ``my-policy'' and description ``example rule'', in
    region ``region-a'', run:

        $ {command}         --priority=10         --action=apply_traffic_classification         --network-policy=my-policy         --network-policy-region=region-a         --dest-ip-ranges=11.0.0.0/8         --description="example rule"         --traffic-class tc1
        --dscp-mode custom
        --dscp-value 3
        --layer4-configs=tcp:80,udp
    N)rd   
__future__r   r   r   typingr   googlecloudsdk.api_lib.computer   /googlecloudsdk.api_lib.compute.network_policiesr   googlecloudsdk.callioper	   "googlecloudsdk.command_lib.computer
   re   3googlecloudsdk.command_lib.compute.network_policiesr   $googlecloudsdk.command_lib.util.apisr   UniverseCompatibleReleaseTracksr>   ALPHACreateCommandr   detailed_helpr_   r!   r   <module>ry      s    1 &  '  7 B ( E E K : D%%++,hT h - hX   r!   