55
66from splitio .engine .impressions import ImpressionsMode
77from splitio .client .input_validator import validate_flag_sets , validate_fallback_treatment , validate_regex_name
8- from splitio .models .fallback_config import FallbackConfig
8+ from splitio .models .fallback_config import FallbackConfig , FallbackTreatmentsConfiguration
99
1010_LOGGER = logging .getLogger (__name__ )
1111DEFAULT_DATA_SAMPLING = 1
@@ -71,7 +71,7 @@ class AuthenticateScheme(Enum):
7171 'httpAuthenticateScheme' : AuthenticateScheme .NONE ,
7272 'kerberosPrincipalUser' : None ,
7373 'kerberosPrincipalPassword' : None ,
74- 'fallbackConfig ' : FallbackConfig ( None , None )
74+ 'fallbackTreatmentsConfiguration ' : FallbackTreatmentsConfiguration ( None )
7575}
7676
7777def _parse_operation_mode (sdk_key , config ):
@@ -170,26 +170,37 @@ def sanitize(sdk_key, config):
170170 ' Defaulting to `none` mode.' )
171171 processed ["httpAuthenticateScheme" ] = authenticate_scheme
172172
173- if config .get ('fallbackConfig' ) is not None :
174- if not isinstance (config ['fallbackConfig' ], FallbackConfig ):
175- _LOGGER .warning ('Config: fallbackConfig parameter should be of `FallbackConfig` structure.' )
176- processed ['fallbackConfig' ] = FallbackConfig (None , None )
177- return processed
178-
179- if config ['fallbackConfig' ].global_fallback_treatment is not None and not validate_fallback_treatment (config ['fallbackConfig' ].global_fallback_treatment ):
180- _LOGGER .warning ('Config: global fallbacktreatment parameter is discarded.' )
181- processed ['fallbackConfig' ].global_fallback_treatment = None
182- return processed
183-
184- if config ['fallbackConfig' ].by_flag_fallback_treatment is not None :
185- sanitized_flag_fallback_treatments = {}
186- for feature_name in config ['fallbackConfig' ].by_flag_fallback_treatment .keys ():
187- if not validate_regex_name (feature_name ) or not validate_fallback_treatment (config ['fallbackConfig' ].by_flag_fallback_treatment [feature_name ]):
188- _LOGGER .warning ('Config: fallback treatment parameter for feature flag %s is discarded.' , feature_name )
189- continue
190-
191- sanitized_flag_fallback_treatments [feature_name ] = config ['fallbackConfig' ].by_flag_fallback_treatment [feature_name ]
192-
193- processed ['fallbackConfig' ] = FallbackConfig (config ['fallbackConfig' ].global_fallback_treatment , sanitized_flag_fallback_treatments )
173+ processed = _sanitize_fallback_config (config , processed )
194174
195175 return processed
176+
177+ def _sanitize_fallback_config (config , processed ):
178+ if config .get ('fallbackTreatmentsConfiguration' ) is not None :
179+ if not isinstance (config ['fallbackTreatmentsConfiguration' ], FallbackTreatmentsConfiguration ):
180+ _LOGGER .warning ('Config: fallbackTreatmentsConfiguration parameter should be of `FallbackTreatmentsConfiguration` class.' )
181+ processed ['fallbackTreatmentsConfiguration' ] = FallbackTreatmentsConfiguration (None )
182+ return processed
183+
184+ if config ['fallbackTreatmentsConfiguration' ].fallback_config != None :
185+ if not isinstance (config ['fallbackTreatmentsConfiguration' ].fallback_config , FallbackConfig ):
186+ _LOGGER .warning ('Config: fallback_config parameter should be of `FallbackConfig` class.' )
187+ processed ['fallbackTreatmentsConfiguration' ].fallback_config = FallbackConfig (None , None )
188+ return processed
189+
190+ if config ['fallbackTreatmentsConfiguration' ].fallback_config .global_fallback_treatment is not None and not validate_fallback_treatment (config ['fallbackTreatmentsConfiguration' ].fallback_config .global_fallback_treatment ):
191+ _LOGGER .warning ('Config: global fallbacktreatment parameter is discarded.' )
192+ processed ['fallbackTreatmentsConfiguration' ].fallback_config .global_fallback_treatment = None
193+ return processed
194+
195+ if config ['fallbackTreatmentsConfiguration' ].fallback_config .by_flag_fallback_treatment is not None :
196+ sanitized_flag_fallback_treatments = {}
197+ for feature_name in config ['fallbackTreatmentsConfiguration' ].fallback_config .by_flag_fallback_treatment .keys ():
198+ if not validate_regex_name (feature_name ) or not validate_fallback_treatment (config ['fallbackTreatmentsConfiguration' ].fallback_config .by_flag_fallback_treatment [feature_name ]):
199+ _LOGGER .warning ('Config: fallback treatment parameter for feature flag %s is discarded.' , feature_name )
200+ continue
201+
202+ sanitized_flag_fallback_treatments [feature_name ] = config ['fallbackTreatmentsConfiguration' ].fallback_config .by_flag_fallback_treatment [feature_name ]
203+
204+ processed ['fallbackTreatmentsConfiguration' ].fallback_config = FallbackConfig (config ['fallbackTreatmentsConfiguration' ].fallback_config .global_fallback_treatment , sanitized_flag_fallback_treatments )
205+
206+ return processed
0 commit comments