def _find_usages_of_group_in_rules(name, varnames): used_in = [] rulesets = AllRulesets() rulesets.load() for varname in varnames: ruleset = rulesets.get(varname) for _folder, _rulenr, rule in ruleset.get_rules(): if rule.value == name: used_in.append(("%s: %s" % (_("Ruleset"), ruleset.title()), folder_preserving_link([("mode", "edit_ruleset"), ("varname", varname)]))) return used_in
def _save_service_enable_disable_rules(self, services, value): if not services: return rulesets = AllRulesets() rulesets.load() try: ruleset = rulesets.get("ignored_services") except KeyError: ruleset = Ruleset( "ignored_services", ruleset_matcher.get_tag_to_group_map(active_config.tags)) modified_folders = [] service_patterns: HostOrServiceConditions = [ service_description_to_condition(s) for s in services ] modified_folders += self._remove_from_rule_of_host(ruleset, service_patterns, value=not value) # Check whether or not the service still needs a host specific setting after removing # the host specific setting above and remove all services from the service list # that are fine without an additional change. for service in list(services): value_without_host_rule = ruleset.analyse_ruleset( self._host.name(), service, service)[0] if (not value and value_without_host_rule in [None, False]) or value == value_without_host_rule: services.remove(service) service_patterns = [ service_description_to_condition(s) for s in services ] modified_folders += self._update_rule_of_host(ruleset, service_patterns, value=value) for folder in modified_folders: rulesets.save_folder(folder)
def list_rules(param): """List rules""" user.need_permission("wato.rulesets") all_rulesets = AllRulesets() all_rulesets.load() ruleset_name = param["ruleset_name"] try: ruleset = all_rulesets.get(ruleset_name.replace("-", ":")) except KeyError: return problem( status=400, title="Unknown ruleset.", detail=f"The ruleset of name {ruleset_name!r} is not known.", ) result = [] for folder, index, rule in ruleset.get_rules(): result.append( _serialize_rule( RuleEntry( rule=rule, ruleset=rule.ruleset, folder=folder, index_nr=index, all_rulesets=all_rulesets, ))) return serve_json( constructors.collection_object( domain_type="rule", value=result, extensions={ "found_rules": len(result), }, ))