Module: check_mk
Branch: master
Commit: dde1c7356f2daf1aacfcb32c96562160fd131e4f
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=dde1c7356f2daf…
Author: Simon Betz <si(a)mathias-kettner.de>
Date: Mon Nov 28 13:53:10 2016 +0100
4106 new filter host/service-service-level
Now you are able to filter by host- resp. service-service-level
defined in global settings/notifications.
---
.werks/4106 | 11 +++++++++++
ChangeLog | 1 +
web/plugins/views/painters.py | 21 ++++++++++++++++-----
web/plugins/visuals/filters.py | 34 ++++++++++++++++++++++++++++++++++
4 files changed, 62 insertions(+), 5 deletions(-)
diff --git a/.werks/4106 b/.werks/4106
new file mode 100644
index 0000000..3534f67
--- /dev/null
+++ b/.werks/4106
@@ -0,0 +1,11 @@
+Title: new filter host/service-service-level
+Level: 1
+Component: multisite
+Compatible: compat
+Version: 1.4.0i3
+Date: 1480337391
+Class: feature
+
+Now you are able to filter by host- resp. service-service-level
+defined in global settings/notifications.
+
diff --git a/ChangeLog b/ChangeLog
index 8b0d8ba..c82c455 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -36,6 +36,7 @@
Multisite:
* 4070 Added a painter for the service check period
* 4095 new filter host auxiliary tags
+ * 4106 new filter host/service-service-level...
* 3974 FIX: Sorting comments in hover menu of comments icon by time now
* 4040 FIX: Fix error in view about "No WATO folder ..." in case of host
imported via cmcdump...
* 4046 FIX: Repaired html rendering....
diff --git a/web/plugins/views/painters.py b/web/plugins/views/painters.py
index 283c4e3..8f2a093 100644
--- a/web/plugins/views/painters.py
+++ b/web/plugins/views/painters.py
@@ -138,15 +138,24 @@ multisite_painter_options["matrix_omit_uniform"] = {
# This helper function returns the value of the given custom var
-def paint_custom_var(what, key, row):
+def paint_custom_var(what, key, row, choices=None):
+ if choices is None:
+ choices = []
+
if what:
what += '_'
+
custom_vars = dict(zip(row[what + "custom_variable_names"],
row[what + "custom_variable_values"]))
if key in custom_vars:
- return key, custom_vars[key]
- return key, ""
+ custom_val = custom_vars[key]
+ if choices:
+ custom_val = dict(choices).get(int(custom_val), custom_val)
+ return key, custom_val
+
+ return key, ""
+
def paint_nagios_link(row):
@@ -1187,7 +1196,8 @@ multisite_painters["svc_servicelevel"] = {
"title" : _("Service service level"),
"short" : _("Service Level"),
"columns" : [ "service_custom_variable_names",
"service_custom_variable_values" ],
- "paint" : lambda row: paint_custom_var('service',
'EC_SL', row),
+ "paint" : lambda row: paint_custom_var('service',
'EC_SL', row,
+ config.mkeventd_service_levels),
"sorter" : 'servicelevel',
}
@@ -1745,7 +1755,8 @@ multisite_painters["host_servicelevel"] = {
"title" : _("Host service level"),
"short" : _("Service Level"),
"columns" : [ "host_custom_variable_names",
"host_custom_variable_values" ],
- "paint" : lambda row: paint_custom_var('host', 'EC_SL',
row),
+ "paint" : lambda row: paint_custom_var('host', 'EC_SL',
row,
+ config.mkeventd_service_levels),
"sorter" : 'servicelevel',
}
diff --git a/web/plugins/visuals/filters.py b/web/plugins/visuals/filters.py
index f360a17..3c535a9 100644
--- a/web/plugins/visuals/filters.py
+++ b/web/plugins/visuals/filters.py
@@ -1215,6 +1215,40 @@ declare_filter(302, FilterHostAuxTags())
+# choices = [ (value, "readable"), .. ]
+class FilterCustomVarChoice(Filter):
+ def __init__(self, name, title, info, custom_var, choices):
+ Filter.__init__(self, name, title, info, [ name ], [])
+ self.custom_var = custom_var
+ self.choices = choices
+
+
+ def display(self):
+ selection = [ ("", "") ] + self.choices
+ html.sorted_select(self.name, selection)
+
+
+ def filter(self, infoname):
+ this_custom_value = html.var(self.name)
+ if this_custom_value:
+ return "Filter: %s_custom_variables = %s %s\n" % \
+ ( self.info, self.custom_var, lqencode(this_custom_value) )
+ else:
+ return ""
+
+
+
+declare_filter(310, FilterCustomVarChoice(
+ "svc_service_level", _("Service service level"),
+ "service", "EC_SL", config.mkeventd_service_levels ))
+
+
+declare_filter(310, FilterCustomVarChoice(
+ "hst_service_level", _("Host service level"),
+ "host", "EC_SL", config.mkeventd_service_levels ))
+
+
+
class FilterStarred(FilterTristate):
def __init__(self, what):
self.what = what