Module: check_mk
Branch: master
Commit: eaa07d1a147bda8b3565d78b1a5f230647339c68
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=eaa07d1a147bda…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Thu Mar 16 09:58:26 2017 +0100
CME: Event simulator now handles customers
Change-Id: Iee039d09e5d8bb6fac101a9451e64eb4ab6debfd
---
web/htdocs/mkeventd.py | 22 +++++++++++++++++++---
web/plugins/wato/mkeventd.py | 9 +++++++--
2 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/web/htdocs/mkeventd.py b/web/htdocs/mkeventd.py
index 5cc4292..3226e7d 100644
--- a/web/htdocs/mkeventd.py
+++ b/web/htdocs/mkeventd.py
@@ -31,6 +31,10 @@ import sites
from lib import *
import cmk.paths
+if cmk.is_managed_edition():
+ import managed
+else:
+ managed = None
# ASN1 MIB source directory candidates. Non existing dirs are ok.
# Please sync these paths with htdocs/mkeventd.py
@@ -292,8 +296,8 @@ def get_stats_per_site(only_sites, stats_keys):
# here. But it does not make sense to query the live eventd here since it
# does not know anything about the currently configured but not yet activated
# rules. And also we do not want to have shared code.
-def event_rule_matches(rule, event):
- result = event_rule_matches_non_inverted(rule, event)
+def event_rule_matches(rule_pack, rule, event):
+ result = event_rule_matches_non_inverted(rule_pack, rule, event)
if rule.get("invert_matching"):
if type(result) == tuple:
return _("The rule would match, but matching is inverted.")
@@ -303,7 +307,7 @@ def event_rule_matches(rule, event):
return result
-def event_rule_matches_non_inverted(rule, event):
+def event_rule_matches_non_inverted(rule_pack, rule, event):
if False == match_ipv4_network(rule.get("match_ipaddress",
"0.0.0.0/0"), event["ipaddress"]):
return _("The source IP address does not match.")
@@ -362,6 +366,18 @@ def event_rule_matches_non_inverted(rule, event):
if reason:
return reason
+ if cmk.is_managed_edition():
+ import managed
+ if "customer" in rule_pack:
+ rule_customer_id = rule_pack["customer"]
+ else:
+ rule_customer_id = rule.get("customer", managed.SCOPE_GLOBAL)
+
+ site_customer_id =
managed.get_customer_id(config.sites[event["site"]])
+
+ if rule_customer_id != managed.SCOPE_GLOBAL and site_customer_id !=
rule_customer_id:
+ return _("Wrong customer")
+
if match_groups == True:
match_groups = () # no matching groups
return False, match_groups
diff --git a/web/plugins/wato/mkeventd.py b/web/plugins/wato/mkeventd.py
index 81db875..060bfd9 100644
--- a/web/plugins/wato/mkeventd.py
+++ b/web/plugins/wato/mkeventd.py
@@ -1150,7 +1150,7 @@ def mode_mkeventd_rule_packs(phase):
skips = 0
for rule in rule_pack["rules"]:
- result = mkeventd.event_rule_matches(rule, event)
+ result = mkeventd.event_rule_matches(rule_pack, rule, event)
if type(result) == tuple:
cancelling, groups = result
@@ -1336,7 +1336,7 @@ def mode_mkeventd_rules(phase):
if rule.get("disabled"):
html.icon(_("This rule is currently disabled and will not be
applied"), "disabled")
elif event:
- result = mkeventd.event_rule_matches(rule, event)
+ result = mkeventd.event_rule_matches(rule_pack, rule, event)
if type(result) != tuple:
html.icon(_("Rule does not match: %s") % result,
"rulenmatch")
else:
@@ -1639,6 +1639,11 @@ def mode_mkeventd_edit_rule(phase):
num_repl, num_groups))
num_repl -= 1
+ if cmk.is_managed_edition() and "customer" in rule_pack:
+ try:
+ del rule["customer"]
+ except KeyError:
+ pass
if new and clone_nr >= 0:
rules[clone_nr:clone_nr] = [ rule ]