
    D5                        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\	R                  " \	R                   R(                  5       " S S\5      5       r\	R                  " \	R                   R,                  5       " S S\5      5       rSS0\l        g)z3Command for creating network firewall policy rules.    )base_classes)firewall_policy_rule_utils)client)region_client)base)
exceptions)flags)secure_tags_utilsc                   >    \ rS rSrSrSrSrSrSr\	S 5       r
S rSrg)Create   uCreates a Compute Engine network firewall policy rule.

*{command}* is used to create network firewall policy rules.
NFc                    [         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U R                  S	9  [         R                   " U5        [         R"                  " U5        [         R$                  " U5        [         R&                  " U5        [         R(                  " U5        [         R*                  " XR                  S
9  [         R,                  " XR                  S
9  [         R.                  " XR                  S
9  [         R0                  " XR                  S
9  [         R2                  " U5        [         R4                  " U5        U R                  (       an  [         R6                  " U5        [         R8                  " U5        [         R:                  " U5        [         R<                  " U5        [         R>                  " U5        U R@                  (       a,  [         RB                  " U5        [         RD                  " U5        U RF                  (       a,  [         RH                  " U5        [         RJ                  " U5        URL                  RO                  [         RP                  5        g )NTcreate)required	operation)operation_typeinserted)r   )r   F)r   support_network_scopes)r   ))r	   !NetworkFirewallPolicyRuleArgumentNETWORK_FIREWALL_POLICY_ARGAddArgument	AddActionAddRulePriorityAddSrcIpRangesAddDestIpRangesAddLayer4ConfigsAddDirectionAddEnableLoggingAddDisabledAddTargetServiceAccountsAddDescriptionAddSrcSecureTagsr   AddTargetSecureTagsAddSrcAddressGroupsAddDestAddressGroupsAddSrcFqdnsAddDestFqdnsAddSrcRegionCodesAddDestRegionCodesAddSrcThreatIntelligenceAddDestThreatIntelligenceAddSecurityProfileGroupAddTlsInspectAddSrcNetworkScopeAddSrcNetworksAddDestNetworkScopeAddSrcNetworkTypeAddDestNetworkTypesupport_target_typeAddTargetTypeAddTargetForwardingRulessupport_network_contextAddSrcNetworkContextAddDestNetworkContextdisplay_infoAddCacheUpdater NetworkFirewallPoliciesCompleter)clsparsers     =lib/surface/compute/network_firewall_policies/rules/create.pyArgsCreate.Args(   s[   &+&M&M'C# ##//x/P	OOF	&J7	 	&!	6D1	v	6"	f	""6*	 	"99
 
f%	f%	v&	f	v	'A'A 
'A'A 
""'A'A 
##'A'A 
!!&)	
!!v&6"'f%v&
&!$$V,
""  (!!&)
''(N(NO    c                    [         R                  " U R                  5       5      nU R                  R	                  XR
                  5      n[        R                  " X2R                  S9n[        US5      (       a  [        R                  " X2R                  S9n/ n/ n/ n/ nS n	S n
SnSn/ n/ nS n/ nS nS nS nS n/ 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+  [$        R&                  " UR                  UR(                  5      nUR                  S5      (       a+  [$        R&                  " UR                  UR*                  5      nUR                  S5      (       a  UR,                  n	UR                  S5      (       a  UR.                  n
U R0                  (       Ga  UR                  S5      (       a,  UR                  S5      (       a  [2        R4                  " S5      eUR                  S5      (       a,  UR                  S5      (       a  [2        R4                  " S5      eUR                  S5      (       a  UR6                  (       d5  UR                  R8                  R:                  R<                  R>                  nO9UR                  R8                  R:                  R=                  UR6                  5      nUR                  S5      (       a  UR@                  nUR                  S5      (       a  URB                  (       d5  UR                  R8                  R:                  RD                  R>                  nO9UR                  R8                  R:                  RE                  URB                  5      nUR                  S5      (       a  URF                  (       d5  UR                  R8                  R:                  R<                  R>                  nO9UR                  R8                  R:                  R=                  URF                  5      nUR                  S5      (       a  URH                  (       d5  UR                  R8                  R:                  RD                  R>                  nO9UR                  R8                  R:                  RE                  URH                  5      nU RJ                  (       Ga*  UR                  S5      (       a  URL                  (       d5  UR                  R8                  R:                  RN                  R>                  nO9UR                  R8                  R:                  RO                  URL                  5      nUR                  S5      (       a  URP                  (       d5  UR                  R8                  R:                  RR                  R>                  nO9UR                  R8                  R:                  RS                  URP                  5      n[T        RV                  " XrR                  R8                  5      nU R0                  (       a*  UR                  R8                  R;                  UUUUUUUS9nO&UR                  R8                  R;                  UUUUS9nU RJ                  (       a  UUl,        UUl-        UR                  S5      (       a  UR\                  Ul/        UR                  S5      (       a  UR`                  Ul1        UR                  S5      (       a  URd                  Ul3        UR                  S5      (       a  URh                  Ul5        UR                  S5      (       a  URl                  Ul7        UR                  S5      (       a  URp                  Ul9        UR                  S 5      (       a  URt                  Ul;        UR                  S!5      (       a  URx                  Ul=        UR                  R8                  R|                  R~                  R                  nUR                  S"5      (       ay  UR                  S#:X  a5  UR                  R8                  R|                  R~                  R                  nO4UR                  R8                  R|                  R~                  R                  nU R                  (       aq  UR                  S$5      (       a9  UR                  R8                  R|                  R                  UR                  5      nUR                  S%5      (       a  UR                  nUR                  R8                  R}                  [T        R                  " UR                  5      UR                  UUUUR                  UUUU	U
S&9nU R                  (       a  UUlK        UUlL        UR                  UR                  US'9$ )(N)refcompute_clientregion)rE   Fsrc_ip_rangesdest_ip_rangeslayer4_configstarget_service_accountsenable_loggingdisabledsrc_secure_tagstarget_secure_tagssecurity_profile_grouptls_inspectsrc_network_scopesrc_network_typezGAt most one of src_network_scope and src_network_type can be specified.dest_network_scopedest_network_typezIAt most one of dest_network_scope and dest_network_type can be specified.src_networkssrc_network_contextdest_network_context)srcIpRangesdestIpRangeslayer4ConfigssrcSecureTagssrcNetworkScopesrcNetworksdestNetworkScope)rX   rY   rZ   r[   src_address_groupsdest_address_groups	src_fqdns
dest_fqdnssrc_region_codesdest_region_codessrc_threat_intelligencedest_threat_intelligence	directionINGRESStarget_typetarget_forwarding_rules)priorityactionmatchrg   targetServiceAccountsdescriptionenableLoggingrL   targetSecureTagssecurityProfileGroup
tlsInspect)firewall_policyfirewall_policy_rule)Or   ComputeApiHolderReleaseTrackr   ResolveAsResource	resourcesr   NetworkFirewallPolicyRulehasattrr   RegionNetworkFirewallPolicyRuleIsSpecifiedrG   rH   rI   rJ   rK   rL   r
   $TranslateSecureTagsForFirewallPolicyrM   rN   rO   rP   r   r   ToolExceptionrQ   messagesFirewallPolicyRuleMatcherSrcNetworkScopeValueValuesEnumUNSPECIFIEDrU   rS   DestNetworkScopeValueValuesEnumrR   rT   r7   rV    SrcNetworkContextValueValuesEnumrW   !DestNetworkContextValueValuesEnum
rule_utilsParseLayer4ConfigssrcNetworkContextdestNetworkContextr_   srcAddressGroupsr`   destAddressGroupsra   srcFqdnsrb   	destFqdnsrc   srcRegionCodesrd   destRegionCodesre   srcThreatIntelligencesrf   destThreatIntelligencesFirewallPolicyRuleDirectionValueValuesEnumrh   rg   EGRESSr4   TargetTypeValueValuesEnumri   rj   ConvertPriorityToIntrk   rl   ro   
targetTypetargetForwardingRules
CreateRulert   )selfargsholderrD   #network_firewall_policy_rule_clientrG   rH   rI   rJ   rO   rP   rK   rL   rM   rN   rQ   rU   rS   rV   rW   ri   rj   layer4_config_listmatchertraffic_directru   s                             r?   Run
Create.Run_   s   **4+<+<+>?F

*
*
<
<C +1*J*J+' sH

7
7-- * MNN !KNHOLK ((((m())**n())**n122 $ < <())**n
##h)**)NN
----o ,--

@
@mmT44 
 011#::&&$$k"""			-	.	.43C3C
4 4 &&
 	
 
		.	/	/D4D4D
5 5 &&
 	
 
		-	.	.%%mm$$>>]]ii  %mm44NNmm$$
 
		.	)	)((			.	/	/&&mm$$>>^^jj   &}}55OOoo%% 
 
		,	-	- $$mm$$>>]]ii  %mm44NNmm##
 
		-	.	. %%mm$$>>^^jj   &}}55OOoo$$ 
 ###			/	0	0''mm$$>>__kk  !' 6 6 P P q q&&!
 
		0	1	1((mm$$>>``ll  "(!7!7!Q!Q!s!s''"
 $66.. ""&&@@#%*'+"- A g &&@@#%*'	 A g ##"5g#7g ,--!%!8!8g-.."&":":g$$g%%//g*++#44g+,, $ 6 6g122'+'C'Cg$233(,(E(Eg%11JJRR  $$	9	$MM""55NNVV 	
 MM""55NNUU 	 			-	(	(MM""55OO   	
 
		3	4	4"&">">!==11DD00?{{ 5$$$+3 E  (3%3J0.99,,1 :  rB    )__name__
__module____qualname____firstlineno____doc__r   r   r4   r7   classmethodr@   r   __static_attributes__r   rB   r?   r   r      s<    
 !% !4P 4Pl[rB   r   c                   $    \ rS rSrSrSrSrSrSrg)
CreateBetai=  r   TFr   N	r   r   r   r   r   r   r4   r7   r   r   rB   r?   r   r   =  s    
  !rB   r   c                   $    \ rS rSrSrSrSrSrSrg)CreateAlphaiI  r   Tr   Nr   r   rB   r?   r   r   I  s    
   rB   r   EXAMPLESa%      To create a rule with priority ``10'' in a global network firewall policy
    with name ``my-policy'' and description ``example rule'', run:

        $ {command} 10 --firewall-policy=my-policy --action=allow --description="example rule" --global-firewall-policy

    To create a rule with priority ``10'' in a regional network firewall policy
    with name ``my-region-policy'' and description ``example rule'', in
    region ``region-a'', run:

        $ {command} 10 --firewall-policy=my-policy --action=allow --description="example rule"
    N)r   googlecloudsdk.api_lib.computer   r   r   8googlecloudsdk.api_lib.compute.network_firewall_policiesr   r   googlecloudsdk.callioper   r   <googlecloudsdk.command_lib.compute.network_firewall_policiesr	   r
   UniverseCompatibleReleaseTracksrw   GACreateCommandr   BETAr   ALPHAr   detailed_helpr   rB   r?   <module>r      s    : 7 S K R ( . N Z D%%(()]T ] * ]@	 D%%**+" " ," D%%++,!& ! -!   rB   