
    -7                         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r\R                    " S S\R"                  5      5       rSS0\l        g
)z8Command for creating organization firewall policy rules.    )base_classes)firewall_policy_rule_utils)client)base)
exceptions)firewall_policies_utils)flags)secure_tags_utilsNc                   2    \ rS rSrSrSr\S 5       rS rSr	g)Create   zrCreates a Compute Engine firewall policy rule.

*{command}* is used to create organization firewall policy rules.
Nc                    U R                  5       [        R                   R                  :H  =(       d+    U R                  5       [        R                   R                  :H  n[        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5        [        R&                  " U5        [        R(                  " X5        [        R*                  " X5        [        R,                  " X5        [        R.                  " X5        [        R0                  " U5        [        R2                  " U5        [        R4                  " U5        [        R6                  " U5        [        R8                  " U5        [        R:                  " U5        [        R<                  " U5        [        R>                  " USS9  U R                  5       [        R                   R                  :X  d,  U R                  5       [        R                   R                  :X  an  [        R@                  " U5        [        RB                  " U5        [        RD                  " U5        [        RF                  " U5        [        RH                  " U5        U R                  5       [        R                   R                  :X  a,  [        RJ                  " U5        [        RL                  " U5        URN                  RQ                  [        RR                  5        g )	NTcreate)required	operation)operation_typeinserted)r   )r   F)*ReleaseTrackr   ALPHABETAr	   FirewallPolicyRuleArgumentFIREWALL_POLICY_ARGAddArgument	AddActionAddFirewallPolicyIdAddSrcIpRangesAddDestIpRangesAddLayer4ConfigsAddDirectionAddEnableLoggingAddDisabledAddTargetResourcesAddTargetServiceAccountsAddSrcSecureTagsAddTargetSecureTagsAddSrcThreatIntelligenceAddDestThreatIntelligenceAddSrcRegionCodesAddDestRegionCodesAddSrcFqdnsAddDestFqdnsAddSrcAddressGroupsAddDestAddressGroupsAddSecurityProfileGroupAddTlsInspectAddDescriptionAddOrganizationAddSrcNetworkScopeAddSrcNetworksAddDestNetworkScopeAddSrcNetworkTypeAddDestNetworkTypeAddSrcNetworkContextAddDestNetworkContextdisplay_infoAddCacheUpdaterFirewallPoliciesCompleter)clsparsersupport_network_scopess      5lib/surface/compute/firewall_policies/rules/create.pyArgsCreate.Args%   s    	d//555 	8!2!2!7!77  $>>C ''x'H	OOF	f
;	 	&!	6D1	v	6"	f	V$	""6*	6"	f%	""6B	##FC	F;	V<	f	v	f%	v&	!!&)		 	&51d//555!2!2!7!77v&6"'f%v&
T..444  (!!&)
''(G(GH    c                    [         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	/ n
/ n/ n/ n/ n/ n/ n/ n/ n/ n/ nS nS nSnSnS n/ nS 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      (       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R                  S5      (       a  UR0                  nUR                  S5      (       a  UR2                  nUR                  S5      (       aF  UR4                   Vs/ s H/  n[6        R8                  " UUR:                  XAR<                  5      PM1     nnUR                  S5      (       aF  UR>                   Vs/ s H/  n[6        R8                  " UUR:                  XAR<                  5      PM1     nnUR                  S5      (       a  UR@                  nUR                  S5      (       a  URB                  nUR                  S5      (       a5  [6        RD                  " URF                  UR:                  UUR<                  S9nUR                  S5      (       a  URH                  nUR                  S5      (       a  URJ                  nUR                  S5      (       a  URL                  nU R                  5       [N        R                  RP                  :X  d-  U R                  5       [N        R                  RR                  :X  Ga  UR                  S5      (       a,  UR                  S5      (       a  [T        RV                  " S5      eUR                  S5      (       a,  UR                  S5      (       a  [T        RV                  " S5      eUR                  S5      (       a  URX                  (       d5  UR                  RZ                  R\                  R^                  R`                  nO9UR                  RZ                  R\                  R_                  URX                  5      nUR                  S5      (       a  URb                  nUR                  S5      (       a  URd                  (       d5  UR                  RZ                  R\                  Rf                  R`                  nO9UR                  RZ                  R\                  Rg                  URd                  5      nUR                  S5      (       a  URh                  (       d5  UR                  RZ                  R\                  R^                  R`                  nO9UR                  RZ                  R\                  R_                  URh                  5      nUR                  S5      (       a  URj                  (       d5  UR                  RZ                  R\                  Rf                  R`                  nO9UR                  RZ                  R\                  Rg                  URj                  5      nU R                  5       [N        R                  RP                  :X  Ga*  UR                  S5      (       a  URl                  (       d5  UR                  RZ                  R\                  Rn                  R`                  nO9UR                  RZ                  R\                  Ro                  URl                  5      nUR                  S 5      (       a  URp                  (       d5  UR                  RZ                  R\                  Rr                  R`                  nO9UR                  RZ                  R\                  Rs                  URp                  5      n[t        Rv                  " XR                  RZ                  5      nU R                  5       [N        R                  RP                  :X  d,  U R                  5       [N        R                  RR                  :X  a2  UR                  RZ                  R]                  UUUUUUUUUUUUUUUS!9n O.UR                  RZ                  R]                  UUUUUUUUUUUUS"9n UR                  RZ                  Rx                  Rz                  R|                  n!UR                  S#5      (       ay  UR~                  S$:X  a5  UR                  RZ                  Rx                  Rz                  R|                  n!O4UR                  RZ                  Rx                  Rz                  R                  n!U R                  5       [N        R                  RP                  :X  a  UU lA        UU lB        UR                  RZ                  Ry                  [t        R                  " UR                  5       5      UR                  U U!U	U
UUUUR                  UUS%9n"[6        R                  " UUR<                  UR:                  S&9n#UR                  U#U"S'9$ s  snf s  snf )(NF)with_project)refcompute_client	resourcesversionsrc_ip_rangesdest_ip_rangeslayer4_configstarget_resourcestarget_service_accountssrc_secure_tagstarget_secure_tagssrc_threat_intelligencedest_threat_intelligencesrc_region_codesdest_region_codessrc_address_groupsdest_address_groups	src_fqdns
dest_fqdnssecurity_profile_group)rX   optional_organizationfirewall_policy_clientfirewall_policy_idtls_inspectenable_loggingdisabled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srcAddressGroupsdestAddressGroupssrcSecureTagssrcFqdns	destFqdnssrcRegionCodesdestRegionCodessrcThreatIntelligencesdestThreatIntelligencessrcNetworkScopesrcNetworksdestNetworkScope)rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   	directionINGRESS)priorityactionmatchru   targetResourcestargetServiceAccountstargetSecureTagssecurityProfileGroup
tlsInspectdescriptionenableLoggingr^   )organization)firewall_policyfirewall_policy_rule)Ir   ComputeApiHolderr   r   ResolveAsResourcerG   r   OrgFirewallPolicysix	text_typelowerOrgFirewallPolicyRuleIsSpecifiedrI   rJ   rK   rL   rM   r
   $TranslateSecureTagsForFirewallPolicyrN   rO   rP   rQ   rR   rS   rT   r   BuildAddressGroupUrlr   r   rU   rV   rW   BuildSecurityProfileGroupUrlrX   r\   r]   r^   r   r   r   r   ToolExceptionr_   messagesFirewallPolicyRuleMatcherSrcNetworkScopeValueValuesEnumUNSPECIFIEDrc   ra   DestNetworkScopeValueValuesEnumr`   rb   rd    SrcNetworkContextValueValuesEnumre   !DestNetworkContextValueValuesEnum
rule_utilsParseLayer4ConfigsFirewallPolicyRuleDirectionValueValuesEnumrv   ru   EGRESSsrcNetworkContextdestNetworkContextConvertPriorityToIntNamerx   r   GetFirewallPolicyId
CreateRule)$selfargsholderrE   org_firewall_policyfirewall_policy_rule_clientrI   rJ   rK   rL   rM   rN   rO   rT   rU   rV   rW   rR   rS   rP   rQ   rX   r\   r]   r^   r_   rc   ra   rd   re   xlayer4_config_listmatchertraffic_directr   r[   s$                                       r?   Run
Create.RunV   s9
   **4+<+<+>?F

"
"
4
4U 5 C !22}}""d//1288:	 #)">">}}""d//1288:	# MNN OIJ !!KNHL((((m())**n())**n*++..122 $ < <)**)NN
----o ,--

@
@mmT44 
 122 $ < <233!%!>!>*++..+,,00,--
 **	 +a "
6
6""$79M9M +	   -..
 ++	 ,a "
6
6""$79M9M ,	   $$..i%%??j011
!
>
>%)%@%@$($5$5%8!%!5!5	  &&$$k())**n
##h 	t00666$"3"3"8"88			-	.	.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$$ 
 d//555			/	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..
 	t00666$"3"3"8"88&&@@#%*-/')+!8":+"- A g$ &&@@#%*-/')+!8": A g 	11JJRR  $$	9	$MM""55NNVV 	
 MM""55NNUU 	 d//555"5g#7g !==11DD00<{{ (5+3$$$ E  1DD#&&
 '11*1 2  As   6n7#6n< )
__name__
__module____qualname____firstlineno____doc__r   classmethodr@   r   __static_attributes__r   rB   r?   r   r      s*    
 .I .I`JrB   r   EXAMPLESz    To create a rule with priority ``10" in an organization firewall policy with ID
    ``123456789", run:

      $ {command} 10 --firewall-policy=123456789 --action=allow
      --description=example-rule
    )r   googlecloudsdk.api_lib.computer   r   r   0googlecloudsdk.api_lib.compute.firewall_policiesr   googlecloudsdk.callioper   r   4googlecloudsdk.command_lib.compute.firewall_policiesr   r	   <googlecloudsdk.command_lib.compute.network_firewall_policiesr
   r   UniverseCompatibleCreateCommandr   detailed_helpr   rB   r?   <module>r      sd    ? 7 S C ( . X F Z 
 CT C CN
   rB   