Module: check_mk
Branch: master
Commit: 30c3fead2e9ed3dad3892bc00072165c1fab6dbc
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=30c3fead2e9ed3…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Wed Mar 27 12:49:33 2019 +0100
Use generic host_extra_conf() for filtering host related rules
This is the only check left that uses all_matching_hosts(). We can avoid
this by bringing the logwatch_rules ruleset in the format of a host
ruleset and use the more common host_extra_conf() function.
Change-Id: I745d1d1aac76ebaca5f0b7a5da72f7d7f2e7778e
---
checks/logwatch | 15 ++++++---------
cmk_base/check_api.py | 2 +-
2 files changed, 7 insertions(+), 10 deletions(-)
diff --git a/checks/logwatch b/checks/logwatch
index 116891a..a344fe1 100644
--- a/checks/logwatch
+++ b/checks/logwatch
@@ -1158,11 +1158,12 @@ def _precompile_ec_logwatch_settings(hostname, params,
logwatch_rules):
"""The following code is used for creating the params of precompiled
checks
and when Check_MK is called on the command line.
Check_MK in keepalive mode (in a running cmc) should never reach this
code..."""
- ruleset = []
+
+ # Bring the logwatch_rules structure in a host ruleset structure to be able
+ # to use the generic host_extra_conf rule matching function
+ host_rules = []
for rule in logwatch_rules:
rule, rule_options = get_rule_options(rule)
- if rule_options.get("disabled"):
- continue
if len(rule) == 3:
settings, hostlist, servlist = rule
@@ -1172,13 +1173,9 @@ def _precompile_ec_logwatch_settings(hostname, params,
logwatch_rules):
else:
continue
- # Directly compute set of all matching hosts here, this
- # will avoid recomputation later
- hosts = all_matching_hosts(tags, hostlist, with_foreign_hosts=False)
- if hostname not in hosts:
- continue
+ host_rules.append(((settings, servlist), tags, hostlist, rule_options))
- ruleset.append((settings, servlist))
+ ruleset = host_extra_conf(hostname, host_rules)
# Do not use rules with configured items where no item matches the
# "restrict_logfiles" condition (if applicable)
diff --git a/cmk_base/check_api.py b/cmk_base/check_api.py
index 7b86370..075f8dc 100644
--- a/cmk_base/check_api.py
+++ b/cmk_base/check_api.py
@@ -218,13 +218,13 @@ host_extra_conf_merged = _config.host_extra_conf_merged
# TODO: Only used by logwatch check. Can we clean this up?
get_rule_options = _config.get_rule_options
-all_matching_hosts = _config.all_matching_hosts
# These functions were used in some specific checks until 1.6. Don't add it to
# the future check API. It's kept here for compatibility reasons for now.
in_extraconf_hostlist = _config.in_extraconf_hostlist
hosttags_match_taglist = _config.hosttags_match_taglist
tags_of_host = _config.tags_of_host
+all_matching_hosts = _config.all_matching_hosts
nagios_illegal_chars = _config.nagios_illegal_chars
is_ipv6_primary = _config.is_ipv6_primary