Module: check_mk
Branch: master
Commit: a44bea611442d4c08702faa6c12f1ab18fab458d
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=a44bea611442d4…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Fri Feb 16 13:56:37 2018 +0100
Moved format_plugin_output() to views
Change-Id: I2061ffad4023989cd54eb0e62a0fa08c7608ee2a
---
web/htdocs/bi.py | 3 ++-
web/htdocs/lib.py | 37 -----------------------------
web/htdocs/views.py | 55 +++++++++++++++++++++++++++++++++++++++++++
web/htdocs/wato.py | 4 +++-
web/plugins/views/painters.py | 17 -------------
5 files changed, 60 insertions(+), 56 deletions(-)
diff --git a/web/htdocs/bi.py b/web/htdocs/bi.py
index 917739c..4d634bd 100644
--- a/web/htdocs/bi.py
+++ b/web/htdocs/bi.py
@@ -3138,7 +3138,8 @@ class FoldableTreeRendererTree(FoldableTreeRenderer):
html.close_span()
- output = format_plugin_output(effective_state["output"])
+ import views
+ output = views.format_plugin_output(effective_state["output"])
if output:
output = html.render_b(HTML("♦"),
class_="bullet") + output
else:
diff --git a/web/htdocs/lib.py b/web/htdocs/lib.py
index 5606f65..c39174f 100644
--- a/web/htdocs/lib.py
+++ b/web/htdocs/lib.py
@@ -189,43 +189,6 @@ def pnp_cleanup(s):
def quote_shell_string(s):
return "'" + s.replace("'",
"'\"'\"'") + "'"
-ok_marker = '<b class="stmark state0">OK</b>'
-warn_marker = '<b class="stmark state1">WARN</b>'
-crit_marker = '<b class="stmark state2">CRIT</b>'
-unknown_marker = '<b class="stmark state3">UNKN</b>'
-
-# There is common code with modules/events.py:format_plugin_output(). Please check
-# whether or not that function needs to be changed too
-# TODO(lm): Find a common place to unify this functionality.
-def format_plugin_output(output, row = None):
- import config
- if config.escape_plugin_output:
- output = html.attrencode(output)
-
- output = output.replace("(!)", warn_marker) \
- .replace("(!!)", crit_marker) \
- .replace("(?)", unknown_marker) \
- .replace("(.)", ok_marker)
-
- if row and "[running on" in output:
- a = output.index("[running on")
- e = output.index("]", a)
- hosts = output[a+12:e].replace(" ","").split(",")
- css, h = paint_host_list(row["site"], hosts)
- output = output[:a] + "running on " + h + output[e+1:]
-
- if config.escape_plugin_output:
- # (?:<A HREF="), (?: target="_blank">)?
and endswith(" </A>") is a special
- # handling for the HTML code produced by check_http when "clickable
URL" option is active.
- output = re.sub("(?:<A
HREF=")?(http[s]?://[^\"'>\t\s\n,]+)(?:
target="_blank">)?",
- lambda p: '<a href="%s"><img
class=pluginurl align=absmiddle title="%s"
src="images/pluginurl.png"></a>' %
- (p.group(1).replace('"', ''),
p.group(1).replace('"', '')), output)
-
- if output.endswith(" </A>"):
- output = output[:-11]
-
- return output
-
def log_exception(msg=None):
if msg is None:
diff --git a/web/htdocs/views.py b/web/htdocs/views.py
index 8e8c605..dff613e 100644
--- a/web/htdocs/views.py
+++ b/web/htdocs/views.py
@@ -3114,6 +3114,61 @@ def output_csv_headers(view):
filename = filename.encode("utf-8")
html.req.headers_out['Content-Disposition'] = 'Attachment;
filename="%s"' % filename
+
+def paint_host_list(site, hosts):
+ entries = []
+ for host in hosts:
+ args = [
+ ("view_name", "hoststatus"),
+ ("site", site),
+ ("host", host),
+ ]
+
+ if html.var("display_options"):
+ args.append(("display_options",
html.var("display_options")))
+
+ url = html.makeuri_contextless(args, filename="view.py")
+ entries.append(html.render_a(host, href=url))
+
+ return "", HTML(", ").join(entries)
+
+
+# There is common code with modules/events.py:format_plugin_output(). Please check
+# whether or not that function needs to be changed too
+# TODO(lm): Find a common place to unify this functionality.
+def format_plugin_output(output, row = None):
+ ok_marker = '<b class="stmark state0">OK</b>'
+ warn_marker = '<b class="stmark state1">WARN</b>'
+ crit_marker = '<b class="stmark state2">CRIT</b>'
+ unknown_marker = '<b class="stmark state3">UNKN</b>'
+
+ if config.escape_plugin_output:
+ output = html.attrencode(output)
+
+ output = output.replace("(!)", warn_marker) \
+ .replace("(!!)", crit_marker) \
+ .replace("(?)", unknown_marker) \
+ .replace("(.)", ok_marker)
+
+ if row and "[running on" in output:
+ a = output.index("[running on")
+ e = output.index("]", a)
+ hosts = output[a+12:e].replace(" ","").split(",")
+ css, h = paint_host_list(row["site"], hosts)
+ output = output[:a] + "running on " + h + output[e+1:]
+
+ if config.escape_plugin_output:
+ # (?:<A HREF="), (?: target="_blank">)?
and endswith(" </A>") is a special
+ # handling for the HTML code produced by check_http when "clickable
URL" option is active.
+ output = re.sub("(?:<A
HREF=")?(http[s]?://[^\"'>\t\s\n,]+)(?:
target="_blank">)?",
+ lambda p: '<a href="%s"><img
class=pluginurl align=absmiddle title="%s"
src="images/pluginurl.png"></a>' %
+ (p.group(1).replace('"', ''),
p.group(1).replace('"', '')), output)
+
+ if output.endswith(" </A>"):
+ output = output[:-11]
+
+ return output
+
#.
# .--Icon Selector-------------------------------------------------------.
# | ___ ____ _ _ |
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index 1ebebef..4439830 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -8926,7 +8926,9 @@ def mode_notifications(phase):
table.cell(_("Host"), context.get("HOSTNAME",
""))
table.cell(_("Service"), context.get("SERVICEDESC",
""))
output = context.get("SERVICEOUTPUT",
context.get("HOSTOUTPUT"))
- table.cell(_("Plugin output"), format_plugin_output(output))
+
+ import views
+ table.cell(_("Plugin output"),
views.format_plugin_output(output))
# Add toggleable notitication context
table.row(class_="notification_context hidden",
diff --git a/web/plugins/views/painters.py b/web/plugins/views/painters.py
index 59c780d..0710d41 100644
--- a/web/plugins/views/painters.py
+++ b/web/plugins/views/painters.py
@@ -1761,23 +1761,6 @@ multisite_painters["host_services"] = {
}
-def paint_host_list(site, hosts):
- entries = []
- for host in hosts:
- args = [
- ("view_name", "hoststatus"),
- ("site", site),
- ("host", host),
- ]
-
- if html.var("display_options"):
- args.append(("display_options",
html.var("display_options")))
-
- url = html.makeuri_contextless(args, filename="view.py")
- entries.append(html.render_a(host, href=url))
-
- return "", HTML(", ").join(entries)
-
multisite_painters["host_parents"] = {
"title" : _("Host's parents"),
"short" : _("Parents"),