Module: check_mk
Branch: master
Commit: da4f68113bde3ee934d4ee9a7eb4c3ddc05a9753
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=da4f68113bde3e…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Sat Jun 25 11:47:58 2011 +0200
Remove debug output
---
modules/check_mk.py | 2 --
1 files changed, 0 insertions(+), 2 deletions(-)
diff --git a/modules/check_mk.py b/modules/check_mk.py
index 71b9667..14c3699 100755
--- a/modules/check_mk.py
+++ b/modules/check_mk.py
@@ -3615,8 +3615,6 @@ for _f in list_of_files:
else:
raise
-import pprint ; pprint.pprint(host_paths) ; del pprint
-
# Strip off host tags from the list of all_hosts. Host tags can be
# appended to the hostnames in all_hosts, separated by pipe symbols,
# e.g. "zbghlnx04|bgh|linux|test" and are stored in a separate
Module: check_mk
Branch: master
Commit: bba8d401d05bd31b796f370b37222ae21a863856
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=bba8d401d05bd3…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Sat Jun 25 12:08:22 2011 +0200
Multisite: new filter for WATO folder of host
---
ChangeLog | 1 +
web/htdocs/htmllib.py | 7 ++--
web/htdocs/views.py | 16 ++++++++++
web/plugins/views/wato.py | 73 +++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 93 insertions(+), 4 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 5b101cd..8a11d3b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -29,6 +29,7 @@
* Introduced basic infrastructure for multilanguage support in Multisite
* Make 'Views' snapin foldable
* Replace old main view by dashboard.
+ * new filter for WATO folder of host
WATO:
* Configration files can now be administered via the WEB UI
diff --git a/web/htdocs/htmllib.py b/web/htdocs/htmllib.py
index 4c0878d..ed73cbd 100644
--- a/web/htdocs/htmllib.py
+++ b/web/htdocs/htmllib.py
@@ -336,10 +336,9 @@ class html:
def sorted_select(self, varname, options, deflt="", onchange=None):
# Sort according to display texts, not keys
- swapped = [ (disp, key) for key, disp in options ]
- swapped.sort()
- swapped = [ (key, disp) for disp, key in swapped ]
- html.select(self, varname, swapped, deflt, onchange)
+ sorted = options[:]
+ sorted.sort(lambda a,b: cmp(a[1].lower(), b[1].lower()))
+ html.select(self, varname, sorted, deflt, onchange)
def select(self, varname, options, deflt="", onchange=None):
current = self.var(varname, deflt)
diff --git a/web/htdocs/views.py b/web/htdocs/views.py
index 238156f..bfb11ce 100644
--- a/web/htdocs/views.py
+++ b/web/htdocs/views.py
@@ -186,6 +186,22 @@ def declare_filter(sort_index, f, comment = None):
f.sort_index = sort_index
# Base class for all filters
+# name: The unique id of that filter. This id is e.g. used in the
+# persisted view configuration
+# title: The title of the filter visible to the user. This text
+# may be localized
+# info: The datasource info this filter needs to work. If this
+# is "service", the filter will also be available in tables
+# showing service information. "host" is available in all
+# service and host views. The log datasource provides both
+# "host" and "service". Look into datasource.py for which
+# datasource provides which information
+# htmlvars: HTML variables this filter uses
+# link_columns: If this filter is used for linking (state "hidden"), then
+# these Livestatus columns are needed to fill the filter with
+# the proper information. In most cases, this is just []. Only
+# a few filters are useful for linking (such as the host_name and
+# service_description filters with exact match)
class Filter:
def __init__(self, name, title, info, htmlvars, link_columns):
self.name = name
diff --git a/web/plugins/views/wato.py b/web/plugins/views/wato.py
new file mode 100644
index 0000000..69a087a
--- /dev/null
+++ b/web/plugins/views/wato.py
@@ -0,0 +1,73 @@
+#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2010 mk(a)mathias-kettner.de |
+# +------------------------------------------------------------------+
+#
+# This file is part of Check_MK.
+# The official homepage is at http://mathias-kettner.de/check_mk.
+#
+# check_mk is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation in version 2. check_mk is distributed
+# in the hope that it will be useful, but WITHOUT ANY WARRANTY; with-
+# out even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more de-
+# ails. You should have received a copy of the GNU General Public
+# License along with GNU Make; see the file COPYING. If not, write
+# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301 USA.
+
+import wato
+
+
+class FilterWatoFile(Filter):
+ def __init__(self):
+ Filter.__init__(self, "watofile", "WATO Folder/File", "host", ["watofile"], [])
+ self.tree = wato.api.get_folder_tree()
+ self.path_to_tree = {} # keep mapping from string-paths to folders/files
+ self.selection = self.folder_selection(self.tree, "", 0)
+
+ def display(self):
+ html.select(self.name, [("", "")] + self.selection)
+
+ def filter(self, infoname):
+ current = html.var(self.name)
+ if current and current in self.path_to_tree:
+ return "Filter: host_custom_variables ~ PATH ^%s\n" % current
+ else:
+ return ""
+
+ def folder_selection(self, folder, prefix, depth):
+ my_path = prefix + folder[".name"]
+ if not my_path.endswith(".mk"):
+ my_path += "/"
+
+ if depth:
+ title_prefix = " " * depth + "` " + "- " * depth
+ else:
+ title_prefix = ""
+ self.path_to_tree[my_path] = True
+ sel = [ (my_path , title_prefix + folder["title"]) ]
+ sel += self.sublist(folder.get(".files", {}), my_path, depth)
+ sel += self.sublist(folder.get(".folders", {}), my_path, depth)
+ return sel
+
+ def sublist(self, elements, my_path, depth):
+ vs = elements.values()
+ vs.sort(lambda a, b: cmp(a["title"].lower(), b["title"].lower()))
+ sel = []
+ for e in vs:
+ sel += self.folder_selection(e, my_path, depth + 1)
+ return sel
+
+
+
+declare_filter(10, FilterWatoFile())
+