
    -                        S r SSKrSSK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                    " S	 S
5      5       rS r\R&                  \R(                  " \R*                  R,                  \R*                  R.                  \R*                  R0                  5       " S S\R2                  5      5       5       rg)z Fetch the FloorSetting resource.    N)api)base)
exceptions)args)util)logc                   ~    \ rS rSr% Sr\\S'   S\S'   \\S'   \\S'   \\S'   \\S	'   \\S
'   \\S'   S\S'   \\S'   Srg)ServiceConfig   z(Configuration for an integrated service.name.enumenforcement_type_argenforcement_type_flag_namecloud_logging_argservice_floor_setting_argservice_floor_setting_attrdefaulted_enforcement_flag_namesetting_messagecli_name N)__name__
__module____qualname____firstlineno____doc__str__annotations____static_attributes__r       /lib/surface/model_armor/floorsettings/update.pyr
   r
      s>    0))!!  !!#&&-r   r
   c                     [        SU R                  R                  R                  SSSSSSU R                  SS	9
[        S
U R                  R                  R
                  SSSSSSU R                  SS9
/$ )z)Returns a list of service configurations.	VERTEX_AIvertex_ai_enforcement_type--vertex-ai-enforcement-typeenable_vertex_ai_cloud_loggingai_platform_floor_settingaiPlatformFloorSettingvertex_ai_enforcement_defaulted	vertex-ai)
r   r   r   r   r   r   r   r   r   r   GOOGLE_MCP_SERVER"google_mcp_server_enforcement_type$--google-mcp-server-enforcement-type&enable_google_mcp_server_cloud_logginggoogleMcpServerFloorSettinggoogle_mcp_server_floor_setting'google_mcp_server_enforcement_defaultedgoogle-mcp-server)
r   r   r   r   r   r   r   r   r   r   )r
   FloorSetting*IntegratedServicesValueListEntryValuesEnumAI_PLATFORMAiPlatformFloorSettingr*   McpServerFloorSetting)messagess    r    _GetServicesConfigr8   ,   s     ##NNZZ;%C<$?%=*K"99 "##NN``C%KD%B$E7"88&
 r   c                       \ rS rSrSrSr\S 5       rS rS r	S r
S rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rSrg)UpdateP   z[Update the FloorSetting resource.

Updates the floor setting resource with the given name.
z5There are no changes to the floor setting for update.c                    [         R                  " U SSSS9  [         R                  " U SS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        g )NFTzFull uri of the floor setting)
positionalrequired	help_textz/Enable or disable the floor setting enforcement)model_armor_args
AddFullUriAddFloorSettingEnforcement(AddMaliciousUriFilterSettingsEnforcementAddPIJBFilterSettingsGroupAddSDPFilterBasicConfigGroupAddRaiFilterSettingsGroupAddIntegratedServicesAddVertexAiFloorSettingAddGoogleMcpServerFloorSettingAddMultiLanguageDetection)parsers    r    ArgsUpdate.Args\   s    1	 //C	 ==fE//711&9..v6**62,,V433F;..v6r   c                 B    UR                  5       R                  SS5      $ )N-_)upperreplace)selfvalues     r    _GetEnumValueUpdate._GetEnumValues   s    ;;=  c**r   c                p    US:X  a  UR                  US-   5        gUS:X  a  UR                  US-   5        gg)z,Update the update mask for enforcement type.INSPECT_ONLYz.inspect_onlyINSPECT_AND_BLOCKz.inspect_and_blockN)append)rS   r   arg_enforcement_typeupdate_masks       r    _updateMaskForEnforcementType$Update._updateMaskForEnforcementTypev   sC     ~-2_DE	!4	425IIJ 
5r   c                     [        USS5        [        USS5        US:X  a  [        USS5        gUS:X  a  [        USS5        gg)z5Handle the enforcement type for Integreated Services.inspectOnlyNinspectAndBlockrX   TrY   )setattr)rS   r[   service_floor_settings      r    _handleEnforcementTypeUpdate._handleEnforcementType   sY     !=$7!#4d;~-



 
!4	4


 
5r   c                 >   U Vs/ s H  n[         R                  " U5      PM     sn Hm  nUS   nUS   n[        R                  " UUR                  R
                  USU 35        [        R                  " UUR                  R                  USU 35        Mo     g s  snf )NconfidenceLevel
filterTypeInvalid choice : )jsonloadsmodel_armor_utilValidateEnum	RaiFilterFilterTypeValueValuesEnumConfidenceLevelValueValuesEnum)rS   r7   filtersargument_namefitemconfidence_levelfilter_types           r    _validateRaiFilterSettings!Update._validateRaiFilterSettings   s    (/01A0/0&k##




6
6
k]
+	 ##




;
;
./
0	 10s    Bc                     U H9  nUS:X  a  Sn[         R                  " UUR                  R                  SU 5        M;     g )Nr"   r4   zintegrated-services)rl   rm   r2   r3   )rS   r7   servicesservices       r    _validateIntegratedServices"Update._validateIntegratedServices   sA    	K	##




J
J
I	 r   c                 :   U R                  XR                  5        [        U5      nU Vs0 s H  nUR                  U_M     nnUR                   H  nXe;   d  M
  XV   nXdR                  :X  d  M  UR	                  UR
                  5      (       a2  [        R                  " SUR                   3SUR                   S35      eUR	                  UR                  5      (       d  M  [        R                  " SUR                   3SUR                   S35      e   gs  snf )z8Validate the arguments for removing integrated services.z--remove-integrated-services=---enforcement-type	--enable--cloud-loggingN)
r|   remove_integrated_servicesr8   r   IsSpecifiedr   r   ConflictingArgumentsExceptionr   r   )rS   r7   r   services_configservice_configservices_config_by_nameservice_names          r    !_validateRemoveIntegratedServices(Update._validateRemoveIntegratedServices   s   $$X/N/NO(2O .-N 	^+-   77		00>...nAABB::/0C0C/DE^,,-->?  n>>??::/0C0C/DEN334NC  8	s   Dc                 @   [        U5      nU H  nUR                  UR                  5      (       a%  [        R                  " SSUR
                   S35      eUR                  UR                  5      (       d  Mj  [        R                  " SSUR
                   S35      e   g)z8Validate the arguments for clearing integrated services.--clear-integrated-servicesr   r   r   r   N)r8   r   r   r   r   r   r   )rS   r7   r   r   r   s        r     _validateClearIntegratedServices'Update._validateClearIntegratedServices   s    (2O)			.==	>	>66)(()):;
 	
 
		.::	;	;66)//0?
 	
 *r   c                 `    US:X  d  US:X  a  g [         R                  " U S3SU SU< S35      e)NrX   rY   r   zargument --z#-enforcement-type: Invalid choice: z6. Valid choices are [INSPECT_AND_BLOCK, INSPECT_ONLY].)r   InvalidArgumentException)rS   enforcement_typer   s      r    _validateEnforcementTypeUpdate._validateEnforcementType   sP    N*22

-
-.)*
l^ $  	 r   c                 6   UR                   (       aD  [        R                  " UR                   UR                  R                  SSUR                    35        UR
                  (       aD  [        R                  " UR
                  UR                  R                  SSUR
                   35        UR                  (       aD  [        R                  " UR                  UR                  R                  SSUR                   35        UR                  (       aD  [        R                  " UR                  UR                  R                  SSUR                   35        UR                  (       a  U R                  XR                  S5        UR                  (       a  U R                  XR                  S5        UR                  (       a  U R                  UUR                  S5        UR!                  S	5      (       aC  UR!                  S
5      (       d  UR!                  S5      (       a  ["        R$                  " S	S5      eUR!                  S5      (       a  U R'                  XR(                  5        UR!                  S5      (       a  U R+                  X5        UR!                  S5      (       a  U R-                  X5        UR!                  S5      (       a  U R/                  UR0                  S5        UR!                  S5      (       a  U R/                  UR2                  S5        gg)zValidate the arguments.z1pi-and-jailbreak-filter-settings-confidence-levelri   z,pi-and-jailbreak-filter-settings-enforcementz)malicious-uri-filter-settings-enforcementzbasic-config-filter-enforcementzrai-settings-filterszadd-rai-settings-filterszremove-rai-settings-filtersbasic_config_filter_enforcement advanced_config_inspect_template#advanced_config_deidentify_templatezsdp_advanced_config_*_templateadd_integrated_servicesr   clear_integrated_servicesr#   r)   r+   r1   N)1pi_and_jailbreak_filter_settings_confidence_levelrl   rm   PiAndJailbreakFilterResultrp   ,pi_and_jailbreak_filter_settings_enforcementPiAndJailbreakFilterSettings FilterEnforcementValueValuesEnum)malicious_uri_filter_settings_enforcementMaliciousUriFilterSettingsr   SdpBasicConfigrai_settings_filtersrw   add_rai_settings_filtersremove_rai_settings_filtersr   r   r   r|   r   r   r   r   r#   r+   )rS   r7   r   s      r    _validateArgsUpdate._validateArgs   s   ==##

@
@

-
-
L
L
=DDEG	 88##

;
;

/
/
P
P
8??@B	 55##

8
8

-
-
N
N
5dLLM
N	 ++##

.
.

!
!
B
B
+dBBC
D	   
%%
--/E $$
%%
113M ''
%%


*
*
'
 9::;<<ABB44
+-M  122
&&x1M1MN455
,,X<344
++H;455
##

)
); <==
##

1
13F >r   c                    [         R                  " U R                  5       5      n[         R                  " US9nUR	                  5       nU R                  XR5        UnUR                  c  UR                  5       Ul        / nUR                  S5      (       d  UR                  S5      (       a  UR                  S5        UR                  S5      (       a  UR                  S5        UR                  S5      (       d,  UR                  S5      (       d  UR                  S	5      (       a  UR                  S
5        UR                  S5      (       dB  UR                  S5      (       d,  UR                  S5      (       d  UR                  S5      (       a  UR                  S5        UR                  S5      (       a  UR                  S5        UR                  S5      (       d,  UR                  S5      (       d  UR                  S5      (       a  UR                  S5        UR                  S5      (       a  U R                  SUR                  US9  UR                  S5      (       a  U R                  SUR                  US9  UR                  S5      (       a  UR                  S5        UR                  S5      (       a  UR                  S5        UR                  S5      (       a  UR                  S5        U(       d<  / S Qn[        R                  " UU R                  R!                  UR"                  S!95      eSU;   a  U R%                  XRU5        SU;   a  U R'                  XRU5        SU;   a  U R)                  XRU5        S
U;   a  U R+                  XRU5        0 n	UR                  S5      (       d,  UR                  S5      (       d  UR                  S5      (       a  U R-                  XRXg5      n	U R/                  XRU5        UR                  S5      (       a  U R1                  XRU5        SU;   a8  UR                  S5      (       a"  UR2                  R5                  5       S":H  Ul        UR9                  UR"                  UUS#9U	4$ )$Napi_versionr   r   z.filter_config.pi_and_jailbreak_filter_settingsr   z+filter_config.malicious_uri_filter_settingsr   r   r   zfilter_config.sdp_settingsr   r   clear_rai_settings_filtersr   zfilter_config.rai_settings enable_floor_setting_enforcementr   r   r   integrated_servicesr#   r&   r   r[   r\   r+   r/   r%   z.ai_platform_floor_setting.enable_cloud_loggingr-   z4google_mcp_server_floor_setting.enable_cloud_loggingenable_multi_language_detectionz/floor_setting_metadata.multi_language_detection)z.--pi-and-jailbreak-filter-settings-enforcementz3--pi-and-jailbreak-filter-settings-confidence-levelz+--malicious-uri-filter-settings-enforcementz!--basic-config-filter-enforcementz"--advanced-config-inspect-templatez%--advanced-config-deidentify-templatez--rai-settings-filtersz--add-rai-settings-filtersz--remove-rai-settings-filtersz--clear-rai-settings-filtersz"--enable-floor-setting-enforcementz--add-integrated-servicesz--remove-integrated-servicesr   z --enable-vertex-ai-cloud-loggingr$   z(--enable-google-mcp-server-cloud-loggingr,   z!--enable-multi-language-detection)floor_settingtrue)r   r   r\   )model_armor_apiGetApiFromTrackReleaseTrackFloorSettingsGetMessagesr   filterConfigFilterConfigr   rZ   r]   r#   r+   r   MinimumArgumentExceptionNO_CHANGES_MESSAGEformatfull_uri_UpdateRaiSettings_UpdatePiAndJailbreakSettings_UpdateMaliciousUriSettings_UpdateSdpSettings_UpdateIntegratedServices_UpdateServiceSpecificSettings_UpdateMultiLanguageDetectionr   lowerenableFloorSettingEnforcementr:   )
rS   originalr   r   
api_clientr7   floor_setting_updatedr\   possible_argsdefaulted_enforcements
             r    
_RunUpdateUpdate._RunUpdate&  s1   !11$2C2C2EFK ..;GJ%%'Hx&$))1+3+@+@+B( K6 			M	N	NIJCDDFG:;;>??ABB563449::89923356:;;;<233899788./455
(($?#>>! ) 
 <==
(($E#FF! ) 
 899IJ@AAOP9::JKm, //


!
!
(
(t}}
(
E 
 ${2
h.CD7;F
((9NO4C
&&x7LM#{2
h.CD233899788"<<
/ 	''8MN9::
((9NO)[8			<	=	=11779VC 	; 	/# 	 	

 	 r   c           	         / nUR                   R                  b   UR                   R                  R                  nUR                  S5      (       a  / nUR                   Vs/ s H  n[
        R                  " U5      PM     sn H|  nUR                  R                  U R                  US   5      5      nUR                  R                  U R                  US   5      5      nUR                  UR                  UUS95        M~     UR                  US9UR                   l        UR                  S5      (       Ga/  UR                   Vs/ s H  n[
        R                  " U5      PM     sn H  nSn	UR                  R                  U R                  US   5      5      nUR                  R                  U R                  US   5      5      n[        U5       HH  u  pX{R                  :X  d  M  S	n	UR!                  U5        UR                  UR                  UUS95          O   U	(       d  UR                  UR                  UUS95        UR                  US9UR                   l        M     UR                  S
5      (       Ga  UR"                   Vs/ s H  n[
        R                  " U5      PM     sn H  nUR                  R                  U R                  US   5      5      nUR                  R                  U R                  US   5      5      n[        U5       Hm  u  pUR                  R                  U5      UR                  :X  d  M0  UR                  R                  U5      UR$                  :X  d  M[  UR!                  U5          M     M     UR                  S5      (       a  SUR                   l        ggs  snf s  snf s  snf )z2Updates the RaiFilterSettings in the FloorSetting.Nr   rh   rg   )rh   rg   )
raiFiltersr   FTr   r   )r   raiSettingsr   r   r   rj   rk   rn   ro   rU   rp   rZ   RaiFilterSettingsr   	enumeraterh   remover   rg   )rS   r7   r   r   rai_filtersrs   rt   arg_filter_typearg_confidence_levelalready_existsrP   
rai_filters               r    r   Update._UpdateRaiSettings  s   K))55A)66BBMMk.//k*.*C*CD*CQ4::a=*CD$",,FFtL12
 ==""4(9#:; 	
 	* 4  	
 E  
$
$
$
< ((4 233*.*G*GH*GQ4::a=*GH$",,FFtL12
 ==""4(9#:; 	
 '{3MA 5 55!Nz*"".$8 #   4 


  ,"6 !  &&+&> 	**69 I@ 566*.*J*JK*JQ4::a=*JK$",,FFtL12
 ==""4(9#:; 	
 '{3MA  ::?K&&'$$CC& ++,
 z* 4 L( 4557;((4 6Q E& IB Ls     N5 N: N?c                 r   UR                  S5      (       a  U R                  UR                  5      nUR                  R                   c8  UR                  UR
                  R                  U5      S9UR                  l        O4UR
                  R                  U5      UR                  R                  l        UR                  S5      (       al  U R                  UR                  5      nUR                  R                   c8  UR                  UR
                  R                  U5      S9UR                  l        ggg)z=Updates the PiAndJailbreakFilterSettings in the FloorSetting.r   NfilterEnforcementr   )rg   )
r   rU   r   r   piAndJailbreakFilterSettingsr   r   r   r   rp   )rS   r7   r   r   r   r   s         r    r   $Update._UpdatePiAndJailbreakSettings  sS    FGG595G5G

;
;62  
,
,
I
I KSJoJo&CCdd< Kp K
**G ]e  ]B  ]B  ]c  ]c8]
**GGY KLL:>:L:L

@
@;7  
,
,
I
I KSJoJo$AA``A Kp K
**G Mr   c                    UR                   c  UR                  5       Ul         UR                   R                   c)  UR                  UR                  S9UR                   l        gUR                  UR                   R                  l        g)z7Updates the MultiLanguageDetection in the FloorSetting.N)enableMultiLanguageDetection)floorSettingMetadataFloorSettingMetadatamultiLanguageDetection6FloorSettingFloorSettingMetadataMultiLanguageDetectionr   r   rS   r7   r   r   s       r    r   $Update._UpdateMultiLanguageDetection  s     119

'
'
) 0 	22II	 
I
I+/+O+O J  00G 
.
.  
4
4
K
K
hr   c                    [        U5      nU H  nUR                  n[        X65      nUR                  UR                  5      nUR                  UR
                  5      n	U(       d  U	(       a  Uc  UR                  5       n[        X6U5        U(       a%  [        X65      n[        X%R                  5      Ul        U	(       d  M  U R                  [        X%R
                  5      5      n
U R                  X5        M     g)zCHandles Cloud Logging and Enforcement Type for Integrated Services.N)r8   r   getattrr   r   r   r   rb   enableCloudLoggingrU   rd   )rS   r7   r   r   r   r   service_attrservice_settingis_cloud_logging_specifiedis_enforcement_type_specifiedr[   s              r    r   %Update._UpdateServiceSpecificSettings3  s     )2O)#>>l 5Do#'#3#3

*
*$  '+&6&6

-
-'# 
$'D"*::</
'
G	#!"7F-422.
* 
'	&#11D==> 
 	##$8J1 *r   c                    0 n[        U5      nUR                  S5      (       am  U H`  nUR                  n[        X85      c  M  UR                  UR
                  ;   d  M9  [        X8S5        UR                  UR                  5        Mb     / Ul        UR                  S5      (       d  UR                  S5      (       Ga  / n	UR
                  b  [        UR
                  5      n	U Vs0 s H  nUR                  U_M     n
nUR                  S5      (       Ga  UR                   H  nU R                  U5      nX;   d  M  X   nUR                  U	;   a  M1  UR                  UR                  5      (       d  UR                  n[        UU5      nUc  UR                  5       n[        UUU5        U R                  SU5        U R!                  UR                  SUS9  [        UUU5        SX]R"                  '   UR                  U	;  d  M  U	R                  UR                  5        GM     UR                  S5      (       a  UR$                   H~  nU R                  U5      nX;   d  M  X   nUR                  U	;   d  M1  U	R'                  UR                  5        [        UUR                  S5        UR                  UR                  5        M     Xl        U$ s  snf )z3Updates the IntegratedServices in the FloorSetting.r   Nr   r   rX   r   T)r8   r   r   r   r   integratedServicesrb   rZ   r   listr   r   rU   r   r   rd   r]   r   r   r   )rS   r7   r   r   r\   r   r   r   r   r   r   r{   arg_servicefound_configsetting_attrr   s                   r    r    Update._UpdateIntegratedServicesR  s    (2O344+.%@@)8D##'<'O'OO
't
<


^EE
F , 24.122d6F6F$7 7 		1	1	="#8#K#KL !0! /n 

~
- /  ! 
		3	4	433G**73+32?L  $77##L$E$EFF)DDl ''!o !(".">">"@) #
 ))./J00,8,R,R'5) 1 
 '!  $$K$KL   (;;!(():):;G 4J 
		6	7	766G**73+32?L  $77!(():):;'99
   !G!GH 7 2E.  s!s   &Kc                    UR                  S5      (       a  UR                  R                  cQ  UR                  UR                  R	                  U R                  UR                  5      5      S9UR                  l        gUR                  R	                  U R                  UR                  5      5      UR                  R                  l        gg)z;Updates the MaliciousUriFilterSettings in the FloorSetting.r   Nr   )r   r   maliciousUriFilterSettingsr   r   rU   r   r   r   s       r    r   "Update._UpdateMaliciousUriSettings  s    CDD		+	+	F	F	NHPHkHk&AAbb""BB Il I
**E [cZ}Z}  [_  [_tMMN[
**EEW Er   c           	         UR                  S5      (       a  UR                  R                  c^  UR                  UR	                  UR                  R                  U R                  UR                  5      5      S9S9UR                  l        OuSUR                  R                  l        UR	                  UR                  R                  U R                  UR                  5      5      S9UR                  R                  l	        UR                  S5      (       a  UR                  R                  c6  UR                  UR                  UR                  S9S9UR                  l        OSUR                  R                  l	        UR                  R                  R                   c3  UR                  UR                  S9UR                  R                  l        O/UR                  UR                  R                  R                  l        UR                  S5      (       a  UR                  R                  c6  UR                  UR                  UR                  S	9S9UR                  l        gSUR                  R                  l	        UR                  R                  R                   c3  UR                  UR                  S	9UR                  R                  l        gUR                  UR                  R                  R                  l        gg)
z2Updates the SdpFilterSettings in the FloorSetting.r   Nr   )basicConfigr   )inspectTemplate)advancedConfigr   )deidentifyTemplate)r   r   sdpSettingsSdpFilterSettingsr   r   rU   r   r   r   SdpAdvancedConfigr   r   r   r   r   s       r    r   Update._UpdateSdpSettings  s   9::		+	+	7	7	?9A9S9S //++LL**4+O+OP 0  :T :
**6 IM**66EEME\E\&55VV""4#G#GH F] F
**66B
 :;;		+	+	7	7	?&&'99$($I$I  :   '  	**6 FJ**66B!..::II (("&"G"G )   
,
,
8
8
G 33  
,
,
8
8
G
G
W =>>		+	+	7	7	?&&'99'+'O'O  :   '  	**6 FJ**66B!..::II ((%)%M%M )   
,
,
8
8
G 66  
,
,
8
8
G
G
Z+ ?r   c                    [         R                  " U R                  5       5      nUR                  n[         R                  " US9R                  U5      nU R                  XA5      u  pV/ nU(       ay  UR                  5        H  nUR                  US    S35        M     SR                  U Vs/ s H	  nSU S3PM     sn5      n	SU	 S3n
[        R                  R                  U
5        U$ s  snf )Nr   r   z=INSPECT_AND_BLOCKz and "zEnforcement type defaulted to INSPECT_ONLY. This means that traffic violating Model Armor settings will be inspected but not blocked. To block such traffic, please specify .)r   r   r   r   r   Getr   itemsrZ   joinr   statusPrint)rS   r   r   r   r   resr   $defaulted_enforcement_services_flagsr{   defaulted_services_strmessages              r    Run
Update.Run  s    !11$2C2C2EFK}}H,,EIIH $(??8#B S+-(*002',33qzl,-	
 3
  '||)M
N)MgQwiq>)M
N 44J3K1N 
 
jjwJ Os   -C+r   N)r   r   r   r   r   r   staticmethodrL   rU   r]   rd   rw   r|   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r    r:   r:   P   s    

 O7 7,+K&"	.
BHBQ<f!
F/,K>P!d
 CJr   r:   )r   dataclassesrj   "googlecloudsdk.api_lib.model_armorr   r   googlecloudsdk.callioper   r   &googlecloudsdk.command_lib.model_armorr   r@   r   rl   googlecloudsdk.corer   	dataclassr
   r8   DefaultUniverseOnlyReleaseTracksr   ALPHABETAGACommandr:   r   r   r    <module>r     s    '   E ( . K K #   !H T..33T5F5F5I5I|
T\\ |
 |
r   