
    !                        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r\R&                  \R(                  " \R*                  R,                  \R*                  R.                  5       " S S\R0                  5      5       5       r\R&                  \R(                  " \R*                  R4                  5       " S S\5      5       5       rSS0\l        g)z-Command for creating security policies rules.    )absolute_import)division)unicode_literals)base_classes)org_security_policy_rule_utils)client)base)flags)org_security_policies_utilsNc                   2    \ rS rSrSrSr\S 5       rS rSr	g)Create   z}Create a Compute Engine organizationsecurity policy rule.

*{command}* is used to create organization security policy 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5        [         R                  " U5        [         R                  " U5        [         R                  " U5        [         R                  " U5        [         R                  " USS9  [        R                  " USS9  [        R                   " U5        UR#                  S	S
SSS9  UR$                  R'                  [         R(                  5        g NTcreate)required	operation)operation_typeinserted)r   F)r   z--cloud-armor
store_truez-Specified for Hierarchical Cloud Armor rules.)actiondefaulthelp)r
   OrgSecurityPolicyRuleArgumentORG_SECURITY_POLICY_ARGAddArgument	AddActionAddSecurityPolicyIdAddDestIpRangesAddLayer4ConfigsAddDirectionAddEnableLoggingAddTargetResourcesAddTargetServiceAccountsAddDescriptionAddOrganization
rule_flags
AddMatcher
AddPreviewadd_argumentdisplay_infoAddCacheUpdaterOrgSecurityPoliciesCompleterclsparsers     9lib/surface/compute/org_security_policies/rules/create.pyArgsCreate.Args)   s   "'"E"E#+C++F8+L	OOF	f
;	&!	6"	v	6"	V$	""6*	 	&51&51&!
<	   ''(J(JK    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/ n/ 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                  5       [        R                  R                  :X  a"  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  SnUR                  S5      (       a  Sn[(        R*                  " UUR                  R,                  5      n[(        R.                  " UUR                  R,                  5      nS nUR                  S5      (       a  UR                  S5      (       aP  UR                  R,                  R1                  UR                  R,                  R3                  UR4                  S9S9nGO\UR                  R,                  R1                  UR                  R,                  R0                  R6                  R8                  UR                  R,                  R;                  US9S9nGOU R                  5       [        R                  R                  :X  a{  UR                  R,                  R1                  UR                  R,                  R0                  R6                  R<                  UR                  R,                  R;                  UUUUS9S9nOyUR                  R,                  R1                  UR                  R,                  R0                  R6                  R<                  UR                  R,                  R;                  UUUS9S9nUR                  R,                  R>                  R@                  RB                  nUR                  S5      (       ay  URD                  S:X  a5  UR                  R,                  R>                  R@                  RB                  nO4UR                  R,                  R>                  R@                  RF                  nUR                  R,                  R?                  [(        RH                  " URK                  5       5      [(        RL                  " URN                  5      UURP                  US9nU(       a  UUl"        U	(       a  U	Ul)        U
(       a  U
4Ul*        U(       a  UUl+        [X        RZ                  " UUR\                  UR^                  S9nURa                  UUS9$ )NF)with_project)refcompute_client	resourcesversionsrc_ip_rangesdest_ip_ranges
dest_portslayer4_configstarget_resourcestarget_service_accountsenable_loggingTpreviewcloud_armor
expression)rD   )expr)srcIpRanges)versionedExprconfig)rF   destIpRanges	destPortslayer4Configs)rF   rI   rK   	directionINGRESS)priorityr   matchdescriptionrB   )organization)security_policysecurity_policy_rule)1r   ComputeApiHolderReleaseTrackr   ResolveAsResourcer9   r   OrgSecurityPolicyRulesix	text_typelowerIsSpecifiedr;   r<   r	   ALPHAr=   r>   r?   r@   
rule_utilsParseDestPortsmessagesParseLayer4ConfigsSecurityPolicyRuleMatcherExprrD   VersionedExprValueValuesEnum
SRC_IPS_V1SecurityPolicyRuleMatcherConfigFIREWALLSecurityPolicyRuleDirectionValueValuesEnumrM   rL   EGRESSConvertPriorityToIntNameConvertActionr   rP   targetResourcestargetServiceAccountsenableLoggingr   GetSecurityPolicyIdrR   rQ   r   )selfargsholderr7   security_policy_rule_clientr;   r<   r=   r>   r?   r@   rA   rB   dest_ports_listlayer4_config_listtraffic_directmatcherrS   security_policy_ids                      r1   Run
Create.RunB   s   **4+<+<+>?F

&
&
8
8U 9 4C"(">">}}""d//1288:	#<
 MNJN NG((((m())**nd//555$:J:J; ;??j())**n*++..122 $ < <())n	""g //
060F0FHO#66~7=}}7M7MON&&			,	'	'--((BB'',,,H C 
 --((BB --00JJggrr==))II) J  C 
 
			 1 1 7 7	7--((BB --00JJggpp==))II)+)0	 J  C 
 --((BB --00JJggpp==))II)+0 J  C 
 --
 
 
3
3
L
L
T
T  
		+	&	&>>Y&mm$$77PPXX 
 mm$$77PPWW  "==11DD00<''4$$ E  '5$-=*3J3K0+9(4HH#&&( '--*1 . 3 3r4    )
__name__
__module____qualname____firstlineno____doc__r   classmethodr2   rz   __static_attributes__r|   r4   r1   r   r      s)    
 !L L0j3r4   r   c                   ,    \ rS rSrSrSr\S 5       rSrg)CreateAlpha   zqCreate a Compute Engine security policy rule.

*{command}* is used to create organization security policy 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5        [         R                  " U5        [         R                  " U5        [         R                  " U5        [         R                  " U5        [         R                  " U5        [         R                  " USS9  [        R                   " USS9  [        R"                  " U5        UR%                  S	S
SSS9  UR&                  R)                  [         R*                  5        g r   )r
   r   r   r   r   r   r   AddDestPortsr    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   s     r1   r2   CreateAlpha.Args   s(   "'"E"E#+C++F8+L	OOF	f
;	&!	v	6"	v	6"	V$	""6*	 	&51&51&!
<	   ''(J(JKr4   r|   )	r}   r~   r   r   r   r   r   r2   r   r|   r4   r1   r   r      s#    
 !L Lr4   r   EXAMPLESz    To create a rule with priority ``10'' in an organization security policy with
    ID ``123456789'', run:

      $ {command} 10 --security-policy=123456789 --action=allow
      --description=example-rule --cloud-armor
    )r   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   r]   4googlecloudsdk.api_lib.compute.org_security_policiesr   googlecloudsdk.callioper	   8googlecloudsdk.command_lib.compute.org_security_policiesr
   r   :googlecloudsdk.command_lib.compute.security_policies.rulesr'   rX   UniverseCompatibleReleaseTracksrU   BETAGACreateCommandr   r\   r   detailed_helpr|   r4   r1   <module>r      s    4 &  ' 7 W G ( J ` Z 
 D%%**D,=,=,@,@AK3T K3 B K3\ D%%++, L&  L -  LH   r4   