def test_boil_down_parameters_good_case(): assert boil_down_parameters(_all_dicts(), {"default": "some_value"}) == { "key": "first_value", "key2": "some_value", "default": "some_value", } assert boil_down_parameters(_all_dicts(), None) == { "key": "first_value", "key2": "some_value", }
def _evaluate_timespecific_entry(entry: Dict[str, Any]) -> LegacyCheckParameters: # Dictionary entries without timespecific settings if "tp_default_value" not in entry: return entry merged = boil_down_parameters( _filter_active_parameter_subsets(entry["tp_values"]), entry["tp_default_value"], ) return merged
def get_service_ruleset_merged_dict(self, match_object: RulesetMatchObject, ruleset: Ruleset) -> Dict[str, Any]: """Returns a dictionary of the merged dict values of the matched rules The first dict setting a key defines the final value. Replaces host_extra_conf_merged / service_extra_conf_merged""" merged = boil_down_parameters( self.get_service_ruleset_values(match_object, ruleset, is_binary=False), {}) assert isinstance(merged, dict) # remove along with LegacyCheckParameters return merged
def time_resolved_check_parameters( entries: cmk.base.config.TimespecificParamList, ) -> LegacyCheckParameters: # Check if first entry is not dict based or if its dict based # check if the tp_default_value is not a dict if not isinstance(entries[0], dict) or not isinstance( entries[0].get("tp_default_value", {}), dict): # This rule is tuple based, means no dict-key merging if not isinstance(entries[0], dict): return entries[0] # A tuple rule, simply return first match return _evaluate_timespecific_entry( entries[0]) # A timespecific rule, determine the correct tuple return boil_down_parameters( # Ignore (old) default parameters like # 'NAME_default_levels' = (80.0, 85.0) # A rule with a timespecifc parameter settings always has an # implicit default parameter set, even if no timeperiod matches. (_evaluate_timespecific_entry(entry) for entry in entries if isinstance(entry, dict)), {}, )
def test_boil_down_parameters_default_is_tuple(): assert boil_down_parameters((), (42, 42)) == (42, 42) assert boil_down_parameters(_all_dicts(), (42, 42)) == { "key": "first_value", "key2": "some_value", }
def test_boil_down_parameters_first_tuple_wins(): assert boil_down_parameters(_with_tuple(), (42, 42)) == (23, 23) assert boil_down_parameters((), (42, 42)) == (42, 42)