Module: check_mk
Branch: master
Commit: a94bbb9b1d1a617abfd4403a1b510ecc90578cce
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=a94bbb9b1d1a61…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Fri Dec 23 09:13:13 2011 +0100
WATO: better item specification for kernel counters
---
web/htdocs/wato.py | 81 +++++++++++++++++++--------------
web/plugins/wato/check_parameters.py | 5 ++
2 files changed, 52 insertions(+), 34 deletions(-)
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index 0efe798..ef2c9b2 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -9347,16 +9347,21 @@ def get_rule_conditions(ruleset):
if not explicit:
item_list = [ "" ]
else:
- nr = 0
- item_list = []
- while True:
- var = "item_%d" % nr
- item = html.var(var, "").strip()
- if nr > config.wato_num_itemspecs and not item:
- break
- if item:
- item_list.append(item)
- nr += 1
+ itemenum = ruleset["itemenum"]
+ if itemenum:
+ itemspec = ListChoice(choices = itemenum, columns = 3)
+ item_list = [ x+"$" for x in
itemspec.from_html_vars("item") ]
+ else:
+ nr = 0
+ item_list = []
+ while True:
+ var = "item_%d" % nr
+ item = html.var(var, "").strip()
+ if nr > config.wato_num_itemspecs and not item:
+ break
+ if item:
+ item_list.append(item)
+ nr += 1
if len(item_list) == 0:
raise MKUserError("item_0", _("Please specify at least one
%s or "
"this rule will never match.") %
ruleset["itemname"])
@@ -9585,30 +9590,37 @@ def mode_edit_rule(phase):
div_id = "itemlist"
html.checkbox("explicit_services", checked,
onclick="wato_toggle_option(this, %r)" % div_id)
html.write(" " + _("Specify explicit values"))
- html.write('<div id="%s" style="display:
%s">' % (
+ html.write('<div id="%s" style="display: %s; padding:
0px;">' % (
div_id, not checked and "none" or ""))
- html.write("<table class=itemlist>")
- num_cols = 3
- for nr in range(config.wato_num_itemspecs):
- x = nr % num_cols
- if x == 0:
- html.write("<tr>")
- html.write("<td>")
- item = nr < len(item_list) and item_list[nr] or ""
- html.text_input("item_%d" % nr, item)
- html.write("</td>")
- if x == num_cols - 1:
- html.write("</tr>")
- while x < num_cols - 1:
- html.write("<td></td>")
- if x == num_cols - 1:
- html.write("</tr>")
- x += 1
- html.write("</table>")
- html.write(_("The entries here are regular expressions to match the
beginning. "
- "Add a <tt>$</tt> for an exact match. An
arbitrary substring is matched "
- "with <tt>.*</tt>"))
- html.write("</div>")
+ itemenum = rulespec["itemenum"]
+ if itemenum:
+ value = [ x.rstrip("$") for x in item_list ]
+ itemspec = ListChoice(choices = itemenum, columns = 3)
+ itemspec.render_input("item", value)
+ else:
+ html.write("<table class=itemlist>")
+ num_cols = 3
+ for nr in range(config.wato_num_itemspecs):
+ x = nr % num_cols
+ if x == 0:
+ html.write("<tr>")
+ html.write("<td>")
+ html.write("HIRN")
+ item = nr < len(item_list) and item_list[nr] or ""
+ html.text_input("item_%d" % nr, item)
+ html.write("</td>")
+ if x == num_cols - 1:
+ html.write("</tr>")
+ while x < num_cols - 1:
+ html.write("<td></td>")
+ if x == num_cols - 1:
+ html.write("</tr>")
+ x += 1
+ html.write("</table>")
+ html.write(_("The entries here are regular expressions to match the
beginning. "
+ "Add a <tt>$</tt> for an exact match. An
arbitrary substring is matched "
+ "with <tt>.*</tt>"))
+ html.write("</div>")
html.write("<tr><td class=buttons colspan=2>")
html.button("save", _("Save"))
@@ -9744,7 +9756,7 @@ g_rulespecs = {}
g_rulespec_groups = {}
def register_rule(group, varname, valuespec = None, title = None,
help = None, itemtype = None, itemname = None,
- itemhelp = None,
+ itemhelp = None, itemenum = None,
match = "first", optional = False):
ruleset = {
"group" : group,
@@ -9753,6 +9765,7 @@ def register_rule(group, varname, valuespec = None, title = None,
"itemtype" : itemtype, # None, "service",
"checktype" or "checkitem"
"itemname" : itemname, # e.g. "mount point"
"itemhelp" : itemhelp, # a description of the item, only rarely used
+ "itemenum" : itemenum, # possible fixed values for items
"match" : match,
"title" : title or valuespec.title(),
"help" : help or valuespec.help(),
diff --git a/web/plugins/wato/check_parameters.py b/web/plugins/wato/check_parameters.py
index 9f5d653..b8d4cbe 100644
--- a/web/plugins/wato/check_parameters.py
+++ b/web/plugins/wato/check_parameters.py
@@ -643,6 +643,7 @@ checkgroups.append((
Float(label = _("events per second")),
title = _("Set critical level:"),
sameline = True)]),
+
DropdownChoice(
title = _("kernel counter"),
choices = [ (x,x) for x in [
@@ -714,10 +715,13 @@ checkgroups.append((
for checkgroup, title, valuespec, itemspec, matchtype in checkgroups:
if not valuespec:
continue # would be useles rule if check has no parameters
+ itemenum = None
if itemspec:
itemtype = "item"
itemname = itemspec.title()
itemhelp = itemspec.help()
+ if isinstance(itemspec, DropdownChoice):
+ itemenum = itemspec._choices
else:
itemtype = None
itemname = None
@@ -730,6 +734,7 @@ for checkgroup, title, valuespec, itemspec, matchtype in checkgroups:
valuespec = valuespec,
itemtype = itemtype, itemname = itemname,
itemhelp = itemhelp,
+ itemenum = itemenum,
match = matchtype)