Module: check_mk
Branch: master
Commit: 604eeb6407fe7991dd94cd28aae6463b68bae59c
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=604eeb6407fe79…
Author: Sven Panne <sp(a)mathias-kettner.de>
Date: Wed Apr 18 12:21:05 2018 +0200
6010 Service levels in event console rules can now have a precedence
Event console rules specify a service level, but it was a bit unclear what
that actually means. Previously it was just a default value to use when the
incoming message did not carry a service level itself. If it carried one
(including '0'), this part of the rule did not have any effect.
This behavior was a bit confusing and did not cover all use cases, so you
can now specify what should happen when the incoming message already has a
service level: Keep it (old behavior, the default) or overwrite it
unconditionally with the configured service level.
Change-Id: Idaae7a26f8b41514b8ebe71e5b6416c93b11e973
---
.werks/6010 | 18 ++++++++++++++++++
cmk/ec/main.py | 4 ++--
web/plugins/wato/mkeventd.py | 34 ++++++++++++++++++++++++++--------
3 files changed, 46 insertions(+), 10 deletions(-)
diff --git a/.werks/6010 b/.werks/6010
new file mode 100644
index 0000000..9f17674
--- /dev/null
+++ b/.werks/6010
@@ -0,0 +1,18 @@
+Title: Service levels in event console rules can now have a precedence
+Level: 1
+Component: ec
+Compatible: compat
+Edition: cre
+Version: 1.6.0i1
+Date: 1524046455
+Class: feature
+
+Event console rules specify a service level, but it was a bit unclear what
+that actually means. Previously it was just a default value to use when the
+incoming message did not carry a service level itself. If it carried one
+(including '0'), this part of the rule did not have any effect.
+
+This behavior was a bit confusing and did not cover all use cases, so you
+can now specify what should happen when the incoming message already has a
+service level: Keep it (old behavior, the default) or overwrite it
+unconditionally with the configured service level.
diff --git a/cmk/ec/main.py b/cmk/ec/main.py
index 86e34b5..8336ff6 100644
--- a/cmk/ec/main.py
+++ b/cmk/ec/main.py
@@ -2599,8 +2599,8 @@ class EventServer(ECServerThread):
else:
event["state"] = rule["state"]
- if "sl" not in event:
- event["sl"] = rule["sl"]
+ if ("sl" not in event) or
(rule["sl"]["precedence"] == "rule"):
+ event["sl"] = rule["sl"]["value"]
event["first"] = event["time"]
event["last"] = event["time"]
if "set_comment" in rule:
diff --git a/web/plugins/wato/mkeventd.py b/web/plugins/wato/mkeventd.py
index 929d43a..9fa5091 100644
--- a/web/plugins/wato/mkeventd.py
+++ b/web/plugins/wato/mkeventd.py
@@ -351,13 +351,31 @@ def vs_mkeventd_rule(customer=None):
help = _("The monitoring state that this event will trigger."),
default_value = -1,
)),
- ( "sl",
- DropdownChoice(
- title = _("Service Level"),
- choices = mkeventd.service_levels,
- prefix_values = True,
- ),
- ),
+ ( "sl", Transform(
+ Dictionary(
+ title = _("Service Level"),
+ optional_keys = False,
+ elements = [
+ ( "value", DropdownChoice(
+ title = _("Value"),
+ choices = mkeventd.service_levels,
+ prefix_values = True,
+ help = _("The default/fixed service level to use for this
rule."),
+ )),
+ ( "precedence", DropdownChoice(
+ title = _("Precedence"),
+ choices = [
+ ( "message", _("Keep service level from
message (if available)") ),
+ ( "rule", _("Always use service level from
rule") ),
+ ],
+ help = _("Here you can specify which service level will be
used when "
+ "the incoming message already carries a service
level."),
+ default_value = "message",
+ )),
+ ]
+ ),
+ forth = lambda x: {"value": x, "precedence":
"message"} if isinstance(x, int) else x
+ )),
( "contact_groups", Dictionary(
title = _("Contact Groups"),
elements = [
@@ -1574,7 +1592,7 @@ def mode_mkeventd_rules(phase):
html.write("%s" % dict(mkeventd.syslog_facilities)[facnr])
table.cell(_("Service Level"),
- dict(mkeventd.service_levels()).get(rule["sl"],
rule["sl"]))
+
dict(mkeventd.service_levels()).get(rule["sl"]["value"],
rule["sl"]["value"]))
hits = rule.get('hits')
table.cell(_("Hits"), hits != None and hits or '',
css="number")