Module: check_mk
Branch: master
Commit: e3241dbb7a4a3c44f4fd80a025c769bdd801d81f
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=e3241dbb7a4a3c…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Wed Feb 10 12:14:15 2016 +0100
Updated bug entries #2420
---
.bugs/2420 | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/.bugs/2420 b/.bugs/2420
new file mode 100644
index 0000000..ba174fe
--- /dev/null
+++ b/.bugs/2420
@@ -0,0 +1,12 @@
+Title: Renaming hosts can lead to duplicate host names
+Component: wato
+State: open
+Date: 2016-02-10 12:12:50
+Targetversion: future
+Class: bug
+
+You have host A in folder F and host B in folder G. Now you can rename
+B into A without WATO complaining. You end with two times A - which causes
+*lots* of trouble.
+
+We need to check better for duplicate hosts when renaming.
Module: check_mk
Branch: master
Commit: 34fdd74760a90bc094b1d0a359a7f3f99f848a1a
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=34fdd74760a90b…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Wed Feb 10 11:18:55 2016 +0100
Made crash reporting with local variables more robust agains non JSON compatible data
---
modules/check_mk_base.py | 7 +++++--
web/htdocs/crash_reporting.py | 9 +++++++--
2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/modules/check_mk_base.py b/modules/check_mk_base.py
index d5539c6..423f733 100644
--- a/modules/check_mk_base.py
+++ b/modules/check_mk_base.py
@@ -1543,10 +1543,13 @@ def format_var_for_export(val):
def get_local_vars_of_last_exception():
local_vars = {}
- import inspect
+ import inspect, base64, pprint
for key, val in inspect.trace()[-1][0].f_locals.items():
local_vars[key] = format_var_for_export(val)
- return local_vars
+
+ # This needs to be encoded as the local vars might contain binary data which can not be
+ # transported using JSON.
+ return base64.b64encode(pprint.pformat(local_vars))
def create_crash_dump_info_file(crash_dir, hostname, check_type, item, params, description, info, text):
diff --git a/web/htdocs/crash_reporting.py b/web/htdocs/crash_reporting.py
index f587732..e62cf59 100644
--- a/web/htdocs/crash_reporting.py
+++ b/web/htdocs/crash_reporting.py
@@ -283,8 +283,10 @@ def show_crash_report(info):
html.write("</table>")
+# Local vars are a base64 encoded repr of the python dict containing the local vars of
+# the exception context. Decode it!
def format_local_vars(local_vars):
- return pprint.pformat(local_vars)
+ return base64.b64decode(local_vars)
def show_crashed_check_details(info):
@@ -389,7 +391,10 @@ def get_local_vars_of_last_exception():
local_vars = {}
for key, val in inspect.trace()[-1][0].f_locals.items():
local_vars[key] = format_var_for_export(val)
- return local_vars
+
+ # This needs to be encoded as the local vars might contain binary data which can not be
+ # transported using JSON.
+ return base64.b64encode(pprint.pformat(local_vars))
def format_var_for_export(val):
Module: check_mk
Branch: master
Commit: 541df6d0100e9facd9acc5e67b133d0e8f4ec0ab
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=541df6d0100e9f…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Tue Feb 9 16:57:28 2016 +0100
Fix exception in table sorting in case number of columns change
---
web/htdocs/table.py | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/web/htdocs/table.py b/web/htdocs/table.py
index 3578125..edc2cb3 100644
--- a/web/htdocs/table.py
+++ b/web/htdocs/table.py
@@ -221,10 +221,18 @@ def end():
rows.remove(row)
fixed_rows.append((index, row))
- # Then use natural sorting to sort the list
- rows.sort(cmp=lambda a, b: cmp(num_split(a[0][sort_col][0]),
- num_split(b[0][sort_col][0])),
- reverse=sort_reverse==1)
+ # Then use natural sorting to sort the list. Note: due to a
+ # change in the number of columns of a table in different software
+ # versions the cmp-function might fail. This is because the sorting
+ # column is persisted in a user file. So we ignore exceptions during
+ # sorting. This gives the user the chance to change the sorting and
+ # see the table in the first place.
+ try:
+ rows.sort(cmp=lambda a, b: cmp(num_split(a[0][sort_col][0]),
+ num_split(b[0][sort_col][0])),
+ reverse=sort_reverse==1)
+ except IndexError:
+ pass
# Now re-add the removed "fixed" rows to the list again
if fixed_rows: