
    6                      |   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  SSKJr   " S S\5      r\
R0                  \
R2                  " \
R4                  R6                  5       " S S\
R8                  5      5       5       r\
R0                  \
R2                  " \
R4                  R<                  5       " S S\
R8                  5      5       5       r\
R0                  \
R2                  " \
R4                  R@                  5       " S S\
R8                  5      5       5       r!g)z-Command for creating security policies rules.    )absolute_import)division)unicode_literals)base_classes)client)base)scope)flags)security_policies_utils)
properties)	resourcesc                   @    \ rS rSrSr\  SS j5       r\S 5       rSrg)CreateHelper    U  Create a Compute Engine security policy rule.

*{command}* is used to create security policy rules.

## EXAMPLES

To create a rule at priority 1000 to block the IP range
1.2.3.0/24, run:

  $ {command} 1000 \
     --action=deny-403 \
     --security-policy=my-policy \
     --description="block 1.2.3.0/24" \
     --src-ip-ranges=1.2.3.0/24
c                    [         R                  " S5      U l        U R                  R                  USSS9  [         R                  " US5        [
        R                  " 5       U l        U R                  R                  U5        [         R                  " U5        [         R                  " UUS9  [         R                  " U5        [         R                  " U5        [         R                  " U5        [         R                  " UUS9  [         R                  " U5        [         R                  " U5        UR                   R#                  [
        R$                  5        g)z+Generates the flagset for a Create command.addPRIORITY)operation_typecust_metavar)support_fairsharesupport_rpc_statusN)r
   PriorityArgumentNAME_ARGAddArgumentAddRegionFlagsecurity_policies_flags(SecurityPolicyMultiScopeArgumentForRulesSECURITY_POLICY_ARGAddMatcherAndNetworkMatcher	AddActionAddDescription
AddPreviewAddRedirectOptionsAddRateLimitOptionsAddRequestHeadersToAddAddRecaptchaOptionsdisplay_infoAddCacheUpdaterSecurityPoliciesCompleter)clsparserr   r   s       5lib/surface/compute/security_policies/rules/create.pyArgsCreateHelper.Args1   s    **51CLLLu:  ?	&HHJ ''/	%%f-	OO+- 
 	V	V$	- 
  (	f%
''99;    c                 .   [         R                  " U5      nUR                  (       Ga  U R                  R	                  UUR
                  [        R                  R                  S9n[        USS5      bj  UR
                  R                  UR                  S[        R                  R                  R                  R                   UR"                  UR                  S.S9nOUR
                  R                  UR                  S[        R                  R                  R                  R                   UR                  S.S9nO` UR
                  R                  UR                  S[        R                  R                  R                  R                   [        USS5      S	.S9n[(        R*                  " XdR(                  S9n[,        R.                  " UR(                  U5      n[,        R0                  " UR(                  UU5      n	UR2                  n
[,        R4                  " UR(                  U5      n[,        R6                  " UR(                  U5      S   nUR9                  UR:                  UR<                  UUUR>                  UR@                  URB                  UU	U
S9
$ ! [
        R$                  [
        R&                  4 aW    UR
                  R                  UR                  SS
[        R                  R                  R                  R                   0S9n GNvf = f)z7Validates arguments and creates a security policy rule.)default_scoperegionNz!compute.regionSecurityPolicyRules)projectr4   securityPolicy)
collectionparamszcompute.securityPolicyRules)r5   r6   )r5   r4   r5   )compute_clientr   )
src_ip_ranges
expressionexpression_optionsnetwork_matcheractiondescriptionpreviewredirect_optionsrate_limit_optionsrequest_headers_to_add)"r   ComputeApiHoldersecurity_policyr    ResolveAsResourcer   compute_scope	ScopeEnumGLOBALgetattrParsenamer   VALUEScorer5   	GetOrFailr4   RequiredFieldOmittedException WrongResourceCollectionExceptionr   SecurityPolicyRuler   CreateRedirectOptionsCreateRateLimitOptionsrC   CreateExpressionOptionsCreateNetworkMatcherCreater:   r;   r>   r?   r@   )r,   release_trackargsr   holdersecurity_policy_refrefsecurity_policy_rulerA   rB   rC   r<   r=   s                r.   RunCreateHelper.RunP   s    **=9F33EE



%//66 F 8 
$h	5	A$$II:%,,1199CC-44"&"6"6 %  $$II4%,,1199CC"&"6"6 % 

$$II:%,,1199CC!$$7 % 
( "44MM+ /DDt 1GG "880HHt .BBt	O  &&((??-'{{$$)-5 '  C 
1
1

4
4 

 $$II4:,,1199CC % 
	

s   >AJ A7LL N)FF)	__name__
__module____qualname____firstlineno____doc__classmethodr/   r^   __static_attributes__r`   r1   r.   r   r       s9       	; ;< V Vr1   r   c                   :    \ rS rSrSrSrSrSr\S 5       r	S r
Srg)CreateGA   r   NFc                 @    [         R                  UU R                  S9  g Nr   r   r/   _support_rpc_statusr,   r-   s     r.   r/   CreateGA.Args   s!    22  r1   c                 \    [         R                  U R                  5       UU R                  S9$ rl   r   r^   ReleaseTrackrn   selfrY   s     r.   r^   CreateGA.Run   2    33   r1   r`   )ra   rb   rc   rd   re   r    r   rn   rf   r/   r^   rg   r`   r1   r.   ri   ri      s1      ( r1   ri   c                   6    \ rS rSrSrSrSr\S 5       rS r	Sr
g)
CreateBeta   r   NFc                 B    [         R                  USU R                  S9  g NT)r   r   rm   ro   s     r.   r/   CreateBeta.Args   $    22  r1   c                 \    [         R                  U R                  5       UU R                  S9$ rl   rr   rt   s     r.   r^   CreateBeta.Run   rw   r1   r`   ra   rb   rc   rd   re   r    rn   rf   r/   r^   rg   r`   r1   r.   ry   ry      s,       r1   ry   c                   6    \ rS rSrSrSrSr\S 5       rS r	Sr
g)CreateAlpha   r   NTc                 B    [         R                  USU R                  S9  g r|   rm   ro   s     r.   r/   CreateAlpha.Args  r~   r1   c                 \    [         R                  U R                  5       UU R                  S9$ rl   rr   rt   s     r.   r^   CreateAlpha.Run  rw   r1   r`   r   r`   r1   r.   r   r      s,       r1   r   N)"re   
__future__r   r   r   googlecloudsdk.api_lib.computer   0googlecloudsdk.api_lib.compute.security_policiesr   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer	   rG   4googlecloudsdk.command_lib.compute.security_policiesr
   r   r   :googlecloudsdk.command_lib.compute.security_policies.rulesgooglecloudsdk.corer   r   objectr   UniverseCompatibleReleaseTracksrs   GACreateCommandri   BETAry   ALPHAr   r`   r1   r.   <module>r      s   4 &  ' 7 C ( E a X L * )G6 GT D%%(()"t!! " * "J D%%**+"## " , "J D%%++,"$$$ " - "r1   