
    VI                     H    S r SSKrSSKJr   " S S\5      r " S S\5      rg)zSecurity policy.    N)
exceptionsc                       \ rS rSrSrSS jr\S 5       r\S 5       rS r	S r
S	 rSS
 jrSS jrSS jrSS jr SS jrSrg)SecurityPolicy   z"Abstracts SecurityPolicy resource.Nc                     Xl         X l        g Nref_compute_clientselfr
   compute_clients      >lib/googlecloudsdk/api_lib/compute/security_policies/client.py__init__SecurityPolicy.__init__       H)    c                 L    U R                   c   eU R                   R                  $ r   r   apitools_clientr   s    r   _clientSecurityPolicy._client   &    +++///r   c                 L    U R                   c   eU R                   R                  $ r   r   messagesr   s    r   	_messagesSecurityPolicy._messages#   &    +++(((r   c                    [        U R                  SS 5      nUb^  U R                  R                  SU R                  R                  U R                  R                  UU R                  R                  5       S94$ U R                  R                  SU R                  R                  U R                  R                  U R                  R                  5       S94$ )NregionDeleteprojectr"   securityPolicyr%   r&   )
getattrr
   r   regionSecurityPoliciesr   *ComputeRegionSecurityPoliciesDeleteRequestr%   NamesecurityPolicies$ComputeSecurityPoliciesDeleteRequestr   r"   s     r   _MakeDeleteRequestTuple&SecurityPolicy._MakeDeleteRequestTuple(   s    TXXx.Fll118nnGG((**!% H 23 3
 LL))8NN??(( @ JK Kr   c                    [        U R                  SS 5      nUb^  U R                  R                  SU R                  R                  U R                  R                  UU R                  R                  5       S94$ U R                  R                  SU R                  R                  U R                  R                  U R                  R                  5       S94$ )Nr"   Getr$   r'   )
r(   r
   r   r)   r   'ComputeRegionSecurityPoliciesGetRequestr%   r+   r,   !ComputeSecurityPoliciesGetRequestr.   s     r   _MakeDescribeRequestTuple(SecurityPolicy._MakeDescribeRequestTuple4   s    TXXx.Fll115nnDD((**!% E 23 3
 LL))5NN<<(( = JK Kr   c                 L   [        U R                  SS 5      nUbF  U R                  R                  SU R                  R                  U R                  R                  UUS94$ U R                  R                  SU R                  R                  U R                  R                  US94$ )Nr"   Insertr$   r'   )	r(   r
   r   r)   r   *ComputeRegionSecurityPoliciesInsertRequestr%   r,   $ComputeSecurityPoliciesInsertRequest)r   security_policyr"   s      r   _MakeCreateRequestTuple&SecurityPolicy._MakeCreateRequestTuple@   s    TXXx.Fll118nnGG((**!0 H 23 3
 LL))8NN??(( @ JK Kr   c           
      ~   [        U R                  SS5      nUb  U(       a`  U R                  R                  SU R                  R                  U R                  R                  UU R                  R                  5       UUS94$ U R                  R                  SU R                  R                  U R                  R                  UU R                  R                  5       US94$ U R                  R                  SU R                  R                  U R                  R                  U R                  R                  5       US94$ )zGenerates a SecurityPolicies Patch request.

Args:
  security_policy: The updated security policy
  update_mask: Field mask for clearing fields

Returns:
  A tuple containing the resource collection, verb, and request.
r"   NPatch)r%   r"   r&   securityPolicyResource
updateMask)r%   r"   r&   r@   )r%   r&   r@   )
r(   r
   r   r)   r   )ComputeRegionSecurityPoliciesPatchRequestr%   r+   r,   #ComputeSecurityPoliciesPatchRequest)r   r;   update_maskr"   s       r   _MakePatchRequestTuple%SecurityPolicy._MakePatchRequestTupleL   s    TXXx.F	LL//NNDD((#xx}}'6& E 

 
	
 ll117nnFF((**!%)8	 G :; ; LL))7NN>>((#xx}}'6 ? 89 9r   c                     U R                  5       /nU(       a  U$ U R                  c   eU R                  R                  U5      $ r   r/   r   MakeRequestsr   only_generate_requestrequestss      r   r#   SecurityPolicy.Deleteq   sD    ,,./Ho+++,,X66r   c                     U R                  5       /nU(       a  U$ U R                  c   eU R                  R                  U5      $ r   r5   r   rI   rJ   s      r   DescribeSecurityPolicy.Describey   sD    ..01Ho+++,,X66r   c                     U R                  U5      /nU(       a  U$ U R                  c   eU R                  R                  U5      $ r   r<   r   rI   )r   r;   rK   rL   s       r   CreateSecurityPolicy.Create   sF    ,,_=>Ho+++,,X66r   c                     U R                  X5      /nU(       a  U$ U R                  c   eU R                  R                  U5      $ r   rE   r   rI   )r   r;   
field_maskrK   rL   s        r   r?   SecurityPolicy.Patch   sH     ++OHIHo+++,,X66r   r   r
   r   F)NF)NNF)__name__
__module____qualname____firstlineno____doc__r   propertyr   r   r/   r5   r<   rE   r#   rP   rT   r?   __static_attributes__ r   r   r   r      se    ** 0 0 ) )
K
K
K#9J777 JO7r   r   c                       \ rS rSrSrSS jr\S 5       r\S 5       rS r	S r
S	 rS
 rS rS rS rSS jrSS jr           SS jr             SS jrSrg)SecurityPolicyRule   z&Abstracts SecurityPolicyRule resource.Nc                     Xl         X l        g r   r	   r   s      r   r   SecurityPolicyRule.__init__   r   r   c                 L    U R                   c   eU R                   R                  $ r   r   r   s    r   r   SecurityPolicyRule._client   r   r   c                 L    U R                   c   eU R                   R                  $ r   r   r   s    r   r   SecurityPolicyRule._messages   r    r   c                      [        U5      nUS:  a  [        R                  " SS5      eU$ ! [         a    [        R                  " SS5      ef = f)Npriorityz.priority must be a valid non-negative integer.r   )int
ValueErrorcalliope_exceptionsInvalidArgumentException)r   rn   int_prioritys      r   _ConvertPriorityToInt(SecurityPolicyRule._ConvertPriorityToInt   sj    H]l a88
FH H  H88
FH HHs	   , "Ac                 0    SSSSSS.R                  X5      $ )Nz	deny(403)z	deny(404)z	deny(502)redirect_to_recaptcharate_based_ban)zdeny-403zdeny-404zdeny-502zredirect-to-recaptchazrate-based-ban)get)r   actions     r   _ConvertAction!SecurityPolicyRule._ConvertAction   s'    !8* 
c&r   c           	      `   [        U R                  SS 5      b  U R                  R                  SU R                  R                  U R                  R                  U R                  U R                  R                  5       5      U R                  R                  U R                  R                  S94$ U R                  R                  SU R                  R                  U R                  R                  U R                  U R                  R                  5       5      U R                  R                  S94$ )Nr"   
RemoveRuler%   rn   r"   r&   r%   rn   r&   )r(   r
   r   r)   r   .ComputeRegionSecurityPoliciesRemoveRuleRequestr%   rt   r+   r"   r&   r,   (ComputeSecurityPoliciesRemoveRuleRequestr   s    r   r/   *SecurityPolicyRule._MakeDeleteRequestTuple   s    txx4(4ll11<nnKK((**55dhhmmoF!%!8!8	 L :; ; LL))<NNCC((33DHHMMOD#xx66 D 89 9r   c           	      `   [        U R                  SS 5      b  U R                  R                  SU R                  R                  U R                  R                  U R                  U R                  R                  5       5      U R                  R                  U R                  R                  S94$ U R                  R                  SU R                  R                  U R                  R                  U R                  U R                  R                  5       5      U R                  R                  S94$ )Nr"   GetRuler   r   )r(   r
   r   r)   r   +ComputeRegionSecurityPoliciesGetRuleRequestr%   rt   r+   r"   r&   r,   %ComputeSecurityPoliciesGetRuleRequestr   s    r   r5   ,SecurityPolicyRule._MakeDescribeRequestTuple   s    txx4(4ll119nnHH((**55dhhmmoF!%!8!8	 I :; ; LL))9NN@@((33DHHMMOD#xx66 A 89 9r   c           	         U(       aT  U R                   R                  U R                  U R                  R	                  5       5      UU R                  U5      UUS9nOU(       aU  U R                   R                  U R                   R                  R                  S5      U R                   R                  US9S9nO5Uc   eU R                   R                  U R                   R                  US9S9nU(       a  X<l
        U R                   R                  U R                  U R                  R	                  5       5      UU R                  U5      UUS9nUb  Xl        U
b  U R                  U
5      Ul        U	b  Xl        [        U R                  S	S5      bo  U R                   R"                  S
U R                   R%                  U R                  R&                  UU R                  R(                  U R                  R*                  S94$ U R                   R,                  S
U R                   R/                  U R                  R&                  UU R                  R*                  S94$ )a  Generates a SecurityPolicies AddRule request.

Args:
  src_ip_ranges: The list of IP ranges to match.
  expression: The CEVAL expression to match.
  expression_options: The configuration options when specifying a CEVAL
    expression.
  network_matcher: Net LB fields to match.
  action: The action to enforce on match.
  description: The description of the rule.
  preview: If true, the action will not be enforced.
  redirect_options: Parameters defining the redirect action, such as
    redirect type and redirect target.
  rate_limit_options: The rate limiting behavior for this rule.
  request_headers_to_add: A list of headers to add to requests that match
    this rule.

Returns:
  A tuple containing the resource collection, verb, and request.
rn   descriptionrz   networkMatchpreview
SRC_IPS_V1srcIpRangesversionedExprconfigN
expressionexprrn   r   rz   matchr   r"   AddRule)r%   securityPolicyRuler"   r&   )r%   r   r&   )r   re   rt   r
   r+   r{   SecurityPolicyRuleMatcherVersionedExprValueValuesEnumSecurityPolicyRuleMatcherConfigExprexprOptionsredirectOptions_ConvertRequestHeadersToAddheaderActionrateLimitOptionsr(   r   r)   +ComputeRegionSecurityPoliciesAddRuleRequestr%   r"   r&   r,   %ComputeSecurityPoliciesAddRuleRequest)r   src_ip_rangesr   expression_optionsnetwork_matcherrz   r   r   redirect_optionsrate_limit_optionsrequest_headers_to_addsecurity_policy_rulematchers                r   r<   *SecurityPolicyRule._MakeCreateRequestTuple   s,   B !^^>>--dhhmmo>!$$V,& ?  
..::..BB__ >>AA) B 	 ; 
 %%%..::$$
$; ; 
 
0!^^>>--dhhmmo>!$$V, ?  #-=*)*.*J*J
 +"' %.@+txx4(4ll119nnHH((**%9!%!8!8	 I :; ; LL))9NN@@((#7#xx66 A 89 9r   c                    U(       aU  U R                   R                  U R                  U R                  R	                  5       5      UU R                  U5      UUS9nGOSnU(       aU  U R                   R                  U R                   R                  R                  S5      U R                   R                  US9S9nO7U(       a0  U R                   R                  U R                   R                  US9S9nU(       a#  Uc  U R                   R                  5       nX>l
        U R                   R                  U R                  U R                  R	                  5       5      UU R                  U5      UUS9nUb  Xl        U
b  U R                  U
5      Ul        U	b  Xl        Ub  Xl        [!        U R                  S	S5      b  U R"                  R$                  S
U R                   R'                  U R                  R(                  U R                  U R                  R	                  5       5      UU R                  R*                  U R                  R,                  US94$ U R"                  R.                  S
U R                   R1                  U R                  R(                  U R                  U R                  R	                  5       5      UU R                  R,                  US94$ )az  Generates a SecurityPolicies PatchRule request.

Args:
  src_ip_ranges: The list of IP ranges to match.
  expression: The CEVAL expression to match.
  expression_options: The configuration options when specifying a CEVAL
    expression.
  network_matcher: Net LB fields to match.
  action: The action to enforce on match.
  description: The description of the rule.
  preview: If true, the action will not be enforced.
  redirect_options: Parameters defining the redirect action, such as
    redirect type and redirect target.
  rate_limit_options: The rate limiting behavior for this rule.
  request_headers_to_add: A list of headers to add to requests that match
    this rule.
  preconfig_waf_config: preconfigured WAF configuration to be applied for
    this rule.
  update_mask: Field mask for clearing fields

Returns:
  A tuple containing the resource collection, verb, and request.
r   Nr   r   r   r   r   r   r"   	PatchRule)r%   rn   r   r"   r&   rA   )r%   rn   r   r&   rA   )r   re   rt   r
   r+   r{   r   r   r   r   r   r   r   r   r   preconfiguredWafConfigr(   r   r)   -ComputeRegionSecurityPoliciesPatchRuleRequestr%   r"   r&   r,   'ComputeSecurityPoliciesPatchRuleRequest)r   r   r   r   r   rz   r   r   r   r   r   preconfig_waf_configrD   r   r   s                  r   rE   )SecurityPolicyRule._MakePatchRequestTuple-  s   L !^^>>--dhhmmo>!$$V,& ?  g	..::..BB__ >>AA) B 	 ; 
 ..::$$
$; ; 
 
?NN<<>'0!^^>>--dhhmmo>!$$V, ?  #-=*)*.*J*J
 +"' %.@+'4H1txx4(4
,,
-
-

..
F
Fhh&&11$((--/B!5XX__!XX44$ G   LL));NNBB((33DHHMMOD#7#xx66& C () )r   c                 *   U R                   R                  5       nUR                  5        Hd  u  p4U R                   R                  5       nUR	                  5       Ul        UR                  5       Ul        UR                  R                  U5        Mf     U$ )a<  Converts a request-headers-to-add string list into an HttpHeaderAction.

Args:
  request_headers_to_add: A dict of headers to add to requests that match
    this rule. Leading whitespace in each header name and value is stripped.

Returns:
  An HttpHeaderAction object with a populated request_headers_to_add field.
)
r   "SecurityPolicyRuleHttpHeaderActionitems2SecurityPolicyRuleHttpHeaderActionHttpHeaderOptionstrip
headerNamelstripheaderValuerequestHeadersToAddsappend)r   r   header_actionhdr_namehdr_valheader_to_adds         r   r   .SecurityPolicyRule._ConvertRequestHeadersToAdd  s{     NNEEGM399;
..
K
K
M !)!1m").."2m((//> < r   c                     U R                  5       /nU(       d*  U R                  c   eU R                  R                  U5      $ U$ r   rH   rJ   s      r   r#   SecurityPolicyRule.Delete  sD    ,,./H !!---!!..x88Or   c                     U R                  5       /nU(       d*  U R                  c   eU R                  R                  U5      $ U$ r   rO   rJ   s      r   rP   SecurityPolicyRule.Describe  sD    ..01H !!---!!..x88Or   c                     U R                  UUUUUUUUU	U
5
      /nU(       d*  U R                  c   eU R                  R                  U5      $ U$ )zDMake and optionally send a request to Create a security policy rule.rS   )r   r   r   r   r   rz   r   r   r   r   r   rK   rL   s                r   rT   SecurityPolicyRule.Create  sj      	$$"	
H !!!---!!..x88Or   c                     U R                  UUUUUUUUU	U
UU5      /nU(       d*  U R                  c   eU R                  R                  U5      $ U$ )zCMake and optionally send a request to Patch a security policy rule.rW   )r   r   r   r   r   rz   r   r   r   r   r   r   rD   rK   rL   s                  r   r?   SecurityPolicyRule.Patch  sp    $ 	##" 	
H  !!!---!!..x88Or   rZ   r   r[   )NNNNNNFNNNF)NNNNNNNNNNNNF)r\   r]   r^   r_   r`   r   ra   r   r   rt   r{   r/   r5   r<   rE   r   r#   rP   rT   r?   rb   rc   r   r   re   re      s    .* 0 0 ) )	99V9pg)R& !! H !!$r   re   )r`   typinggooglecloudsdk.callioper   rq   objectr   re   rc   r   r   <module>r      s/      Ez7V z7zi ir   