
                         R   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r\R"                  \R$                  " \R&                  R(                  \R&                  R*                  5       " S S\R,                  5      5       5       rSS0\l        g)z8Command for creating organization firewall policy rules.    )absolute_import)division)unicode_literals)base_classes)firewall_policy_rule_utils)client)base)firewall_policies_utils)flagsNc                   2    \ rS rSrSrSr\S 5       rS rSr	g)Create   zCreates a Compute Engine firewall policy packet mirroring rule.

*{command}* is used to create organization firewall policy packet mirroring
rules.
Nc                    [         R                  " SSS9U l        U R                  R                  USS9  [         R                  " U5        [         R
                  " USS9  [         R                  " U5        [         R                  " U5        [         R                  " USS9  [         R                  " U5        [         R                  " U5        [         R                  " U5        [         R                  " U5        [         R                  " U5        [         R                  " USS9  UR                  R!                  [         R"                  5        g )	NTcreate)required	operation)operation_typeinserted)r   )r   F)r   FirewallPolicyRuleArgumentFIREWALL_POLICY_ARGAddArgumentAddPacketMirroringActionAddFirewallPolicyIdAddSrcIpRangesAddDestIpRangesAddLayer4ConfigsAddDirectionAddDisabledAddTargetResources AddMirroringSecurityProfileGroupAddDescriptionAddOrganizationdisplay_infoAddCacheUpdaterFirewallPoliciesCompleter)clsparsers     ?lib/surface/compute/firewall_policies/mirroring_rules/create.pyArgsCreate.Args)   s    #>>C ''x'H	""6*	f
;	 	&!	6D1	v	f	V$	**62	 	&51
''(G(GH    c                 X   [         R                  " U R                  5       5      nU R                  R	                  XR
                  SS9n[        R                  " UUR                  UR
                  [        R                  " U R                  5       5      R                  5       S9n[        R                  " UUR                  UR
                  [        R                  " U R                  5       5      R                  5       S9n/ n/ n/ n/ n	S n
S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      (       a5  ["        R$                  " UR&                  UR(                  UUR*                  S	9n
UR                  S
5      (       a  UR,                  n[.        R0                  " XR                  R2                  5      nUR                  R2                  R5                  UUUS9nUR                  R2                  R6                  R8                  R:                  nUR                  S5      (       ay  UR<                  S:X  a5  UR                  R2                  R6                  R8                  R:                  nO4UR                  R2                  R6                  R8                  R>                  nUR                  R2                  R7                  [.        R@                  " URC                  5       5      URD                  UUU	U
URF                  US9n["        RH                  " UUR*                  UR(                  S9nURK                  UUS9$ )NF)with_project)refcompute_client	resourcesversionsrc_ip_rangesdest_ip_rangeslayer4_configstarget_resourcessecurity_profile_group)r6   optional_organizationfirewall_policy_clientfirewall_policy_iddisabled)srcIpRangesdestIpRangeslayer4Configs	directionINGRESS)priorityactionmatchr>   targetResourcessecurityProfileGroupdescriptionr:   )organization)firewall_policyfirewall_policy_rule)&r   ComputeApiHolderReleaseTrackr   ResolveAsResourcer0   r   OrgFirewallPolicysix	text_typelower$OrgFirewallPolicyPacketMirroringRuleIsSpecifiedr2   r3   r4   r5   r
   BuildSecurityProfileGroupUrlr6   rF   rG   r:   
rule_utilsParseLayer4ConfigsmessagesFirewallPolicyRuleMatcherFirewallPolicyRuleDirectionValueValuesEnumr?   r>   EGRESSConvertPriorityToIntNamerA   rE   GetFirewallPolicyId
CreateRule)selfargsholderr.   org_firewall_policyfirewall_policy_rule_clientr2   r3   r4   r5   r6   r:   layer4_config_listmatchertraffic_directrH   r9   s                    r(   Run
Create.Run<   s3   **4+<+<+>?F

"
"
4
4U 5 C !22}}""d//1288:	 #)"M"M}}""d//1288:	# MNN!H((((m())**n())**n*++..011
!
>
>%)%@%@$($5$5%8!%!5!5	  
##h#66.. mm$$>>!#( ? G 	11JJRR  $$	9	$MM""55NNVV 	
 MM""55NNUU 	 "==11DD00<{{ (3$$ E 	 1DD#&&
 '11*1 2  r+    )
__name__
__module____qualname____firstlineno____doc__r   classmethodr)   rf   __static_attributes__rh   r+   r(   r   r      s)     I I$Vr+   r   EXAMPLESaS      To create a packet mirroring rule with priority ``10" in an organization firewall policy with ID
    ``123456789", run:

      $ {command} 10 --firewall-policy=123456789 --action=mirror --security-profile-group=organizations/123/locations/global/securityProfileGroups/custom-security-profile-group
      --description=example-rule
    )rm   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   rS   0googlecloudsdk.api_lib.compute.firewall_policiesr   googlecloudsdk.callioper	   4googlecloudsdk.command_lib.compute.firewall_policiesr
   r   rM   UniverseCompatibleReleaseTracksrJ   ALPHABETACreateCommandr   detailed_helprh   r+   r(   <module>r|      s    ? &  ' 7 S C ( X F 
 D%%++T->->-C-CDrT r E rl   r+   