
    !M                     &   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  \
R$                  " \
R&                  R(                  5      \
R*                   " S S\
R,                  5      5       5       r\
R$                  " \
R&                  R0                  5      \
R*                   " S S\5      5       5       r\
R$                  " \
R&                  R4                  5      \
R*                   " S S\5      5       5       rg)z'Command for updating security policies.    )absolute_import)division)unicode_literals)base_classes)client)base)
exceptions)scope)flags)security_policies_utilsc                   8    \ rS rSrSrSr\S 5       rS rS r	Sr
g)UpdateGa   Update a Compute Engine security policy.

*{command}* is used to update security policies.

## EXAMPLES

To update the description run this:

  $ {command} SECURITY_POLICY --description='new description'
Nc                 <   [         R                  " 5       U l        U R                  R                  USS9  UR	                  SSS9  [         R
                  " U5        [         R                  " U5        [         R                  " U5        [         R                  " U5        g )Nupdateoperation_type--description9An optional, textual description for the security policy.help)	r    SecurityPolicyMultiScopeArgumentSECURITY_POLICY_ARGAddArgumentadd_argumentAddCloudArmorAdaptiveProtectionAddAdvancedOptionsAddRecaptchaOptions*AddDdosProtectionConfigWithAdvancedPreviewclsparsers     /lib/surface/compute/security_policies/update.pyArgsUpdateGa.Args.   s    #DDFC''x'H
I  L 
))&1	V$	f%	44V<    c                    UR                  S5      (       d  UR                  S5      (       d  UR                  S5      (       d  UR                  S5      (       d  UR                  S5      (       dw  UR                  S5      (       d`  UR                  S5      (       dI  UR                  S5      (       d2  UR                  S	5      (       d  / S
Qn[        R                  " US5      eggggggggg)tValidates that at least one field to update is specified.

Args:
  args: The arguments given to the update command.
descriptionenable_layer7_ddos_defense#layer7_ddos_defense_rule_visibilityjson_parsingjson_custom_content_types	log_levelrecaptcha_redirect_site_keynetwork_ddos_protectionuser_ip_request_headers)	r   --enable-layer7-ddos-defense%--layer7-ddos-defense-rule-visibility--json-parsing--json-custom-content-types--log-level--recaptcha-redirect-site-key--network-ddos-protection--user-ip-request-headers.Please specify at least one property to updateNIsSpecifiedr	   MinimumArgumentExceptionselfargsparameter_namess      r$   _ValidateArgsUpdateGa._ValidateArgs;   s     ]++9::BCC^,,899[)):;;677677o //
KM M 8 8 < * : - D ; ,r'   c           	          U R                  U5        / n[        R                  " U R                  5       5      nU R                  R                  XR                  [        R                  R                  S9n[        R                  " XCR                  S9nUR                  5       S   nUR                  nUR                  nUR                  n	UR                   n
UR"                  nUR                  b  UR                  nUR%                  S5      (       d  UR%                  S5      (       a!  [&        R(                  " UR                  X5      nUR%                  S5      (       dB  UR%                  S5      (       d,  UR%                  S5      (       d  UR%                  S	5      (       a!  [&        R*                  " UR                  UU	S
S9n	UR%                  S5      (       a!  [&        R,                  " UR                  X5      n
UR%                  S5      (       a2  [&        R.                  " UR                  X5      nUR1                  S5        UR                  R2                  R                  UUU	U
UUR4                  S9nUR7                  USR9                  U5      S9$ )Ndefault_scoperefcompute_clientr   r+   r,   r-   r.   r/   r2   Fenable_large_body_sizer0   r1   ddos_protection_configr*   adaptiveProtectionConfigadvancedOptionsConfigrecaptchaOptionsConfigddosProtectionConfigfingerprint,security_policy
field_mask)rC   r   ComputeApiHolderReleaseTrackr   ResolveAsResource	resourcescompute_scope	ScopeEnumGLOBALr   SecurityPolicyDescriber*   rO   rP   rQ   rR   r=   r   CreateAdaptiveProtectionConfigCreateAdvancedOptionsConfigCreateRecaptchaOptionsConfigCreateDdosProtectionConfigappendmessagesrS   Patchjoinr@   rA   rW   holderrI   rV   existing_security_policyr*   adaptive_protection_configadvanced_options_configrecaptcha_options_configrM   updated_security_policys                r$   RunUpdateGa.RunU   s^   tJ**4+<+<+>?F

"
"
4
4m.E.E.L.L 5 NC++/O.779!<*66K 99 6LL7NN5JJ#$$k566>??
!
@
@mmT? ! 	((455%%233
!
=
=mm%%*	  566
!
>
>mmT=  122
!
<
<mmT;  01$mm44CC!;573,88 D :   /88J' ! ) )r'    __name__
__module____qualname____firstlineno____doc__r   classmethodr%   rC   rp   __static_attributes__rr   r'   r$   r   r      s,    	 
= 
=M48)r'   r   c                   8    \ rS rSrSrSr\S 5       rS rS r	Sr
g)
UpdateBeta   r   Nc                 f   [         R                  " 5       U l        U R                  R                  USS9  UR	                  SSS9  [         R
                  " U5        [         R                  " U5        [         R                  " USS9  [         R                  " U5        [         R                  " U5        g )Nr   r   r   r   r   TrK   )
r   r   r   r   r   r   )AddCloudArmorAdaptiveProtectionAutoDeployr   r   r    r!   s     r$   r%   UpdateBeta.Args   s    #DDFC''x'H
I  L 
))&1	33F;	VDA	f%	44V<r'   c                    UR                  S5      (       GdI  UR                  S5      (       Gd1  UR                  S5      (       Gd  UR                  S5      (       Gd  UR                  S5      (       d  UR                  S5      (       d  UR                  S5      (       d  UR                  S5      (       d  UR                  S	5      (       d  UR                  S
5      (       dw  UR                  S5      (       d`  UR                  S5      (       dI  UR                  S5      (       d2  UR                  S5      (       d  / SQn[        R                  " US5      egggggggggggggg)r)   r*   r+   r,   r-   r.   r/   request_body_inspection_sizer2   r0   r1   .layer7_ddos_defense_auto_deploy_load_threshold4layer7_ddos_defense_auto_deploy_confidence_threshold;layer7_ddos_defense_auto_deploy_impacted_baseline_threshold.layer7_ddos_defense_auto_deploy_expiration_sec)r   r3   r4   r5   r6   r7   r:   --request-body-inspection-sizer8   r9   z0--layer7-ddos-defense-auto-deploy-load-thresholdz6--layer7-ddos-defense-auto-deploy-confidence-thresholdz=--layer7-ddos-defense-auto-deploy-impacted-baseline-thresholdz0--layer7-ddos-defense-auto-deploy-expiration-secr;   Nr<   r?   s      r$   rC   UpdateBeta._ValidateArgs   sv    	''899ABBN++788K((:;;5669::566LMMB
 
 I
 
 LMMo  //
KM M% N

 N 7 ; 7 < ) 9 , C : 	(r'   c           	         U R                  U5        / n[        R                  " U R                  5       5      nU R                  R                  XR                  [        R                  R                  S9n[        R                  " XCR                  S9nUR                  5       S   nUR                  nUR                  nUR                  n	UR                   n
UR"                  nUR                  b  UR                  nUR%                  S5      (       dn  UR%                  S5      (       dX  UR%                  S5      (       dB  UR%                  S5      (       d,  UR%                  S5      (       d  UR%                  S	5      (       a!  [&        R(                  " UR                  X5      nUR%                  S
5      (       dX  UR%                  S5      (       dB  UR%                  S5      (       d,  UR%                  S5      (       d  UR%                  S5      (       a!  [&        R*                  " UR                  UU	SS9n	UR%                  S5      (       a!  [&        R,                  " UR                  X5      n
UR%                  S5      (       a2  [&        R.                  " UR                  X5      nUR1                  S5        UR                  R2                  R                  UUU	U
UUR4                  S9nUR7                  USR9                  U5      S9$ )NrF   rH   r   r+   r,   r   r   r   r   r-   r.   r/   r   r2   TrK   r0   r1   rM   rN   rT   rU   )rC   r   rX   rY   r   rZ   r[   r\   r]   r^   r   r_   r`   r*   rO   rP   rQ   rR   r=   r   2CreateAdaptiveProtectionConfigWithAutoDeployConfigrb   rc   rd   re   rf   rS   rg   rh   ri   s                r$   rp   UpdateBeta.Run   s   tJ**4+<+<+>?F

"
"
4
4m.E.E.L.L 5 NC++/O.779!<*66K 99 6LL7NN5JJ#$$k566>??IJJOPPIK KIJJ
!==>mmT? !
 	((788K((:;;566 "
=
=mm%%)	  566
!
>
>mmT=  122
!
<
<mmT;  01$mm44CC!;573,88 D :   /88J' ! ) )r'   rr   rs   rr   r'   r$   r|   r|      s.    	 = =+MZA)r'   r|   c                   8    \ rS rSrSrSr\S 5       rS rS r	Sr
g)UpdateAlphai  r   Nc                    [         R                  " 5       U l        U R                  R                  USS9  UR	                  S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        UR	                  SS	S S
S9  g )Nr   r   r   r   r   TrK   --enable-ml
store_truez1Whether to enable Cloud Armor Adaptive Protection)actiondefaultr   )r   r   r   r   r   r   r   r   r   r    AddDdosProtectionConfigOld AddNetworkDdosAdaptiveProtection'AddNetworkDdosImpactedBaselineThresholdr!   s     r$   r%   UpdateAlpha.Args/  s    #DDFC''x'H
I  L 
))&1	33F;	VDA	f%	44V<	$$V,	**62	11&9
A	  Dr'   c                    UR                  S5      (       Gda  UR                  S5      (       GdI  UR                  S5      (       Gd1  UR                  S5      (       Gd  UR                  S5      (       Gd  UR                  S5      (       d  UR                  S5      (       d  UR                  S5      (       d  UR                  S	5      (       d  UR                  S
5      (       d  UR                  S5      (       dw  UR                  S5      (       d`  UR                  S5      (       dI  UR                  S5      (       d2  UR                  S5      (       d  / SQn[        R                  " US5      eggggggggggggggg)r)   r*   	enable_mlr+   r,   r-   r.   r/   r   r2   r0   r1    network_ddos_adaptive_protection(network_ddos_impacted_baseline_threshold.clear_network_ddos_impacted_baseline_thresholdddos_protection)r   r   r3   r4   r5   r6   r7   r   r:   r8   r9   z"--network-ddos-adaptive-protectionz*--network-ddos-impacted-baseline-thresholdz0--clear-network-ddos-impacted-baseline-thresholdz--ddos-protectionr;   Nr<   r?   s      r$   rC   UpdateAlpha._ValidateArgsF  s    	''K((899ABBN++788K((:;;5669::566>??FGGLMM-..o" //
KM M' / N H @ 7 ; 7 < ) 9 , C : ) 	(r'   c           
      N	   U R                  U5        / n[        R                  " U R                  5       5      nU R                  R                  XR                  [        R                  R                  S9n[        R                  " XCR                  S9nUR                  5       S   nUR                  nUR                  nUR                  n	UR                   n
UR"                  nUR$                  nUR                  b  UR                  nUR&                  b!  [(        R*                  " UR                  U5      nUR-                  S5      (       dn  UR-                  S5      (       dX  UR-                  S5      (       dB  UR-                  S5      (       d,  UR-                  S5      (       d  UR-                  S	5      (       a!  [(        R.                  " UR                  X5      n	UR-                  S
5      (       dX  UR-                  S5      (       dB  UR-                  S5      (       d,  UR-                  S5      (       d  UR-                  S5      (       a!  [(        R0                  " UR                  UU
SS9n
UR-                  S5      (       a!  [(        R2                  " UR                  X5      nUR-                  S5      (       a8  [(        R4                  " UR                  X5      nSU;  a  UR7                  S5        UR-                  S5      (       a8  [(        R8                  " UR                  X5      nSU;  a  UR7                  S5        UR-                  S5      (       a8  [(        R:                  " UR                  X5      nSU;  a  UR7                  S5        UR-                  S5      (       aJ  [(        R<                  " UR                  X5      nSU;  a  UR7                  S5        UR7                  S5        OlUR-                  S5      (       aV  Uc$  UR                  R>                  RA                  5       nS Ul!        SU;  a  UR7                  S5        UR7                  S5        UR                  R>                  R                  UUU	U
UUURD                  S9nURG                  USRI                  U5      S9$ )NrF   rH   r   r+   r,   r   r   r   r   r-   r.   r/   r   r2   TrK   r0   r   rM   r1   r   r   z7ddos_protection_config.ddos_impacted_baseline_thresholdr   )r*   cloudArmorConfigrO   rP   rQ   rR   rS   rT   rU   )%rC   r   rX   rY   r   rZ   r[   r\   r]   r^   r   r_   r`   r*   r   rO   rP   rQ   rR   r   r   CreateCloudArmorConfigr=   r   rb   rc   CreateDdosProtectionConfigOldre   rd   4CreateDdosProtectionConfigWithDdosAdaptiveProtectionBCreateDdosProtectionConfigWithNetworkDdosImpactedBaselineThresholdrf   "SecurityPolicyDdosProtectionConfigddosImpactedBaselineThresholdrS   rg   rh   )r@   rA   rW   rj   rI   rV   rk   r*   cloud_armor_configrl   rm   rn   rM   ro   s                 r$   rp   UpdateAlpha.Runr  sM   tJ**4+<+<+>?F

"
"
4
4m.E.E.L.L 5 NC++/O.779!<*66K1BB 99 6LL7NN5JJ#$$k~~!2II
--566>??IJJOPPIK KIJJ
!==>mmT? !
 	((788K((:;;566 "
=
=mm%%)	  566
!
>
>mmT=  )**
!
?
?mmT;  
"	323122
!
<
<mmT;  
"	323:;;6kk
--  
"	323BCC6yy
--  
"	323
C 
		J	K	K		'MM""EEG 	 >B:	!	323
C %mm44CC+!;573,88 D :   /88J' ! ) )r'   rr   rs   rr   r'   r$   r   r     s0    	 D D,*MXg)r'   r   N)rx   
__future__r   r   r   googlecloudsdk.api_lib.computer   0googlecloudsdk.api_lib.compute.security_policiesr   googlecloudsdk.callioper   r	   "googlecloudsdk.command_lib.computer
   r\   4googlecloudsdk.command_lib.compute.security_policiesr   r   ReleaseTracksrY   GADefaultUniverseOnlyUpdateCommandr   BETAr|   ALPHAr   rr   r'   r$   <module>r      s    . &  ' 7 C ( . E F X D%%(()m)t!! m)  *m)` D%%**+J) J)  ,J)Z D%%++,x)* x)  -x)r'   