Module: check_mk
Branch: master
Commit: 863412222962f110203d1180278eb9fecb34d839
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=863412222962f1…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Mon Dec 1 14:31:36 2014 +0100
Redirect error messages and print output from checks to stderr
---
modules/check_mk.py | 22 +++++++++++++---------
modules/check_mk_base.py | 12 ++++++++++++
2 files changed, 25 insertions(+), 9 deletions(-)
diff --git a/modules/check_mk.py b/modules/check_mk.py
index 426962a..5feef4e 100755
--- a/modules/check_mk.py
+++ b/modules/check_mk.py
@@ -5479,9 +5479,7 @@ def keepalive_check_memory(num_checks, keepalive_fd):
usage = current_memory_usage()
# Allow VM size to grow by at most 50%
if usage[0] > 1.5 * g_keepalive_initial_memusage[0]:
- file(log_dir + "/cmc-helper.log", "a") \
- .write("%s [4] check helper[%d]: memory usage increased from %s to %s after %d check cycles. Restarting.\n" %
- (time.strftime("%F %T", time.localtime()), os.getpid(),
+ sys.stderr.write("memory usage increased from %s to %s after %d check cycles. Restarting.\n" % (
get_bytes_human_readable(g_keepalive_initial_memusage[0]),
get_bytes_human_readable(usage[0]), num_checks))
restart_myself(keepalive_fd)
@@ -5502,18 +5500,17 @@ def do_check_keepalive():
# Prevent against plugins that output debug information (but shouldn't).
# Their stdout will interfer with communication with the Micro Core.
- # We do this with a trick:
+ # So we simply redirect stdout to stderr, which will appear in the cmc.log,
+ # with the following trick:
# 1. move the filedescriptor 1 to a parking position
- # 2. re-open 0 on /dev/null
+ # 2. dup the stderr channel to stdout (2 to 1)
# 3. Send our answers to the Micro Core with the parked FD.
# BEWARE: this must not happen after we have execve'd ourselves!
if opt_keepalive_fd:
keepalive_fd = opt_keepalive_fd
else:
keepalive_fd = os.dup(1)
- devnull = os.open("/dev/null", os.O_WRONLY | os.O_CREAT)
- os.dup2(devnull, 1)
- os.close(devnull)
+ os.dup2(2, 1) # Send stuff that is written to stdout instead to stderr
num_checks = 0 # count total number of check cycles
@@ -5569,6 +5566,12 @@ def do_check_keepalive():
os.write(keepalive_fd, "%03d\n%08d\n%s" %
(status, len(total_check_output), total_check_output))
total_check_output = ""
+
+ # Flush file descriptors of stdout and stderr, so that diagnostic
+ # messages arrive in time in cmc.log
+ sys.stdout.flush()
+ sys.stderr.flush()
+
cleanup_globals()
# Check if all global variables are clean, but only in debug mode
@@ -5580,7 +5583,8 @@ def do_check_keepalive():
% (varname, value, repr(after[varname])[:50]))
new_vars = set(after.keys()).difference(set(before.keys()))
if (new_vars):
- sys.stderr.write("WARNING: new variable appeared: %s" % ", ".join(new_vars))
+ sys.stderr.write("WARNING: new variable appeared: %s\n" % ", ".join(new_vars))
+ sys.stderr.flush()
except Exception, e:
signal.signal(signal.SIGALRM, signal.SIG_IGN) # Prevent ALRM from CheckHelper.cc
diff --git a/modules/check_mk_base.py b/modules/check_mk_base.py
index db6b925..23829cd 100644
--- a/modules/check_mk_base.py
+++ b/modules/check_mk_base.py
@@ -24,6 +24,18 @@
# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
# Boston, MA 02110-1301 USA.
+# PLANNED CLEANUP:
+# - central functions for outputting verbose information and bailing
+# out because of errors. Remove all explicit "if opt_debug:...".
+# Note: these new functions should force a flush() if TTY is not
+# a terminal (so that error messages arrive the CMC in time)
+# - --debug should *only* influence exception handling
+# - introduce second levels of verbosity, that takes over debug output
+# from --debug
+# - remove all remaining print commands and use sys.stdout.write instead
+# or define a new output function
+# - Also create a function bail_out() for printing and error and exiting
+
import socket, os, sys, time, re, signal, math, tempfile
# Python 2.3 does not have 'set' in normal namespace.
Module: check_mk
Branch: master
Commit: d90f14e473dcab6a4314591a4a2ab0300cea8f9b
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=d90f14e473dcab…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Mon Dec 1 08:52:41 2014 +0100
#1541 FIX Fixed missing form fields for notification method when editing rbn default rule
---
.bugs/2224 | 7 +++++--
.werks/1541 | 9 +++++++++
ChangeLog | 1 +
web/htdocs/wato.py | 4 +---
4 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/.bugs/2224 b/.bugs/2224
index e273344..4b15189 100644
--- a/.bugs/2224
+++ b/.bugs/2224
@@ -1,11 +1,14 @@
Title: Options for Email notification not visible when entering rule
Component: wato
-State: open
+Class: bug
+State: done
Date: 2014-11-17 11:35:35
Targetversion: 1.2.5i1
-Class: bug
When you go to the default rule in the RBN then the method
is set to HTML Email, but the actual options are not visible.
When you switch back and forth between Cancel, then they
become visible. Seems to be a bug in the valuespec.
+
+2014-12-01 08:51:55: changed state open -> done
+Fixed.
diff --git a/.werks/1541 b/.werks/1541
new file mode 100644
index 0000000..4e55dfb
--- /dev/null
+++ b/.werks/1541
@@ -0,0 +1,9 @@
+Title: Fixed missing form fields for notification method when editing rbn default rule
+Level: 1
+Component: wato
+Compatible: compat
+Version: 1.2.5i7
+Date: 1417420318
+Class: fix
+
+
diff --git a/ChangeLog b/ChangeLog
index 2552865..3ff5882 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -95,6 +95,7 @@
* 1502 FIX: Fixed removing elements from ListOf choices during complain phase
* 1505 FIX: Snapshots are now bound to the used monitoring core...
* 1540 FIX: Host diagnose page: Some tests were failing randomly
+ * 1541 FIX: Fixed missing form fields for notification method when editing rbn default rule
Notifications:
* 1512 Bulk notification can now be grouped according to custom macro values...
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index 735a533..b7578a8 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -9077,7 +9077,6 @@ def mode_notification_rule(phase, profilemode):
else:
rule = rules[edit_nr]
-
vs = vs_notification_rule(userid)
if phase == "action":
@@ -15890,8 +15889,7 @@ def create_sample_config():
'contact_object' : True,
'description' : 'Notify all contacts of a host/service via HTML email',
'disabled' : False,
- 'notify_method' : [],
- 'notify_plugin' : 'mail'
+ 'notify_plugin' : ('mail', {}),
}]
save_notification_rules(notification_rules)
option to be clearer in distributed setups
Message-ID: <547c5f55.g4DqFake8FJwrozK%lm(a)mathias-kettner.de>
User-Agent: Heirloom mailx 12.5 6/20/10
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Module: check_mk
Branch: master
Commit: e17eed5879a520bea49737d2d222eb979f596f7e
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=e17eed5879a520…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Mon Dec 1 08:59:12 2014 +0100
#1542 FIX Changed text of "debug_log" option to be clearer in distributed setups
The text of the rule was always refering to the central site, which is
missleading in distributed setups. Replaced the siteid in the path
with a spacer.
---
.bugs/2205 | 7 +++++--
.werks/1542 | 11 +++++++++++
ChangeLog | 1 +
web/plugins/wato/check_mk_configuration.py | 14 +++++++++++---
4 files changed, 28 insertions(+), 5 deletions(-)
diff --git a/.bugs/2205 b/.bugs/2205
index d9ac414..27c0824 100644
--- a/.bugs/2205
+++ b/.bugs/2205
@@ -1,10 +1,13 @@
Title: Path in debug_log is wrong in distributed WATO setups
Component: wato
-State: open
+Class: bug
+State: done
Date: 2014-11-24 15:07:07
Targetversion: 1.2.5i1
-Class: bug
The shown path always shows the path on the centeral site. It should either
show the path to the correct site, or better, just a spacer which indicates
that the site id needs to be put into the path.
+
+2014-12-01 08:57:49: changed state open -> done
+Fixed.
diff --git a/.werks/1542 b/.werks/1542
new file mode 100644
index 0000000..6119da6
--- /dev/null
+++ b/.werks/1542
@@ -0,0 +1,11 @@
+Title: Changed text of "debug_log" option to be clearer in distributed setups
+Level: 1
+Component: wato
+Compatible: compat
+Version: 1.2.5i7
+Date: 1417420673
+Class: fix
+
+The text of the rule was always refering to the central site, which is
+missleading in distributed setups. Replaced the siteid in the path
+with a spacer.
diff --git a/ChangeLog b/ChangeLog
index 3ff5882..becbc9d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -96,6 +96,7 @@
* 1505 FIX: Snapshots are now bound to the used monitoring core...
* 1540 FIX: Host diagnose page: Some tests were failing randomly
* 1541 FIX: Fixed missing form fields for notification method when editing rbn default rule
+ * 1542 FIX: Changed text of "debug_log" option to be clearer in distributed setups...
Notifications:
* 1512 Bulk notification can now be grouped according to custom macro values...
diff --git a/web/plugins/wato/check_mk_configuration.py b/web/plugins/wato/check_mk_configuration.py
index 782cb0d..caa2468 100644
--- a/web/plugins/wato/check_mk_configuration.py
+++ b/web/plugins/wato/check_mk_configuration.py
@@ -1138,19 +1138,27 @@ register_configvar(group,
"for the operation, but on the other hand will lead to a slightly higher load "
"of Nagios for the first couple of minutes after the restart. ")))
+def log_dir_path():
+ path = defaults.log_dir
+ if path.startswith('/omd'):
+ parts = path.split('/')
+ parts[2] = '<siteid>'
+ return '/'.join(parts)
+ else:
+ return path
register_configvar(group,
"debug_log",
Transform(
Checkbox(
- label = _("Write exceptions to <tt>%s/crashed-checks.log</tt>" % defaults.log_dir),
+ label = _("Write exceptions to <tt>%s/crashed-checks.log</tt>" % log_dir_path()),
),
title = _("Log exceptions in check plugins"),
help = _("If this option is enabled Check_MK will create a debug logfile at "
- "<tt>%s/chrashed-checks.log</tt> "
+ "<tt>%s/crashed-checks.log</tt> "
"containing details about failed checks (those which have the state <i>UNKNOWN "
"and the output UNKNOWN - invalid output from plugin</i>...) Per default no "
- "logfile is written.") % defaults.log_dir,
+ "logfile is written.") % log_dir_path(),
forth = lambda x: not not x,
),
need_restart = True)
Module: check_mk
Branch: master
Commit: 83b1c79dc95edba0ad0451ba3aebd44324707f25
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=83b1c79dc95edb…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Mon Dec 1 09:41:46 2014 +0100
#1543 FIX Hosttag columns are now available right ater creating a tag
In previous versions you had to restart the webserver before the tag
related columns were available. Also cleaned up names of the column titles.
---
.bugs/2187 | 7 +++++--
.werks/1543 | 10 ++++++++++
ChangeLog | 1 +
web/htdocs/views.py | 4 ++++
web/plugins/sidebar/shipped.py | 6 ------
web/plugins/views/painters.py | 40 +++++++++++++++++++++++++++-------------
6 files changed, 47 insertions(+), 21 deletions(-)
diff --git a/.bugs/2187 b/.bugs/2187
index 1ca48cf..dfa6565 100644
--- a/.bugs/2187
+++ b/.bugs/2187
@@ -1,12 +1,15 @@
Title: Host tag painters missing after new tags have been created
Component: multisite
-State: open
+Class: bug
+State: done
Date: 2014-10-16 10:53:29
Targetversion: 1.2.5i1
-Class: bug
If you create a new host tag group in WATO then the according
Multisite painter for that tag is not present. It needs an
Apache reload. Seems that the automatic creation of painters for
the host tag groups is just done once one the module is being
loaded.
+
+2014-12-01 09:40:18: changed state open -> done
+Fixed.
diff --git a/.werks/1543 b/.werks/1543
new file mode 100644
index 0000000..94df177
--- /dev/null
+++ b/.werks/1543
@@ -0,0 +1,10 @@
+Title: Hosttag columns are now available right ater creating a tag
+Level: 1
+Component: multisite
+Compatible: compat
+Version: 1.2.5i7
+Date: 1417423222
+Class: fix
+
+In previous versions you had to restart the webserver before the tag
+related columns were available. Also cleaned up names of the column titles.
diff --git a/ChangeLog b/ChangeLog
index becbc9d..80be8df 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -80,6 +80,7 @@
* 1537 FIX: Added transformation code for user dashboards created between 2014-08 and 2014-10...
* 1538 FIX: Only allow switching sites on/off when permitted to...
* 1539 FIX: Fixed refreshing of PNP graphs in dashboards...
+ * 1543 FIX: Hosttag columns are now available right ater creating a tag...
WATO:
* 1170 Added buttons to move rules to top/bottom of the list to ruleset edit dialog
diff --git a/web/htdocs/views.py b/web/htdocs/views.py
index fb601f9..b8f46ae 100644
--- a/web/htdocs/views.py
+++ b/web/htdocs/views.py
@@ -41,7 +41,11 @@ loaded_with_language = False
# Load all view plugins
def load_plugins():
global loaded_with_language
+
if loaded_with_language == current_language:
+ # always reload the hosttag painters, because new hosttags might have been
+ # added during runtime
+ load_host_tag_painters()
return
global multisite_datasources ; multisite_datasources = {}
diff --git a/web/plugins/sidebar/shipped.py b/web/plugins/sidebar/shipped.py
index fb498a4..1fb38a4 100644
--- a/web/plugins/sidebar/shipped.py
+++ b/web/plugins/sidebar/shipped.py
@@ -1257,12 +1257,6 @@ if defaults.omd_root:
# | |
# '----------------------------------------------------------------------'
-def parse_hosttag_title(title):
- if '/' in title:
- return title.split('/', 1)
- else:
- return None, title
-
def compute_tag_tree(taglist):
html.live.set_prepend_site(True)
query = "GET hosts\n" \
diff --git a/web/plugins/views/painters.py b/web/plugins/views/painters.py
index 172bbcf..f264933 100644
--- a/web/plugins/views/painters.py
+++ b/web/plugins/views/painters.py
@@ -1941,16 +1941,30 @@ def groupby_host_tag(row, tgid):
cssclass, title = paint_host_tag(row, tgid)
return title
-for entry in config.wato_host_tags:
- tgid = entry[0]
- tit = entry[1]
- ch = entry[2]
-
- multisite_painters["host_tag_" + tgid] = {
- "title" : _("Host tag:") + ' ' + tit,
- "short" : tit,
- "columns" : [ "host_custom_variables" ],
- "paint" : paint_host_tag,
- "groupby" : groupby_host_tag,
- "args" : [ tgid ],
- }
+def load_host_tag_painters():
+ # first remove all old painters to reflect delted painters during runtime
+ for key in multisite_painters.keys():
+ if key.startswith('host_tag_'):
+ del multisite_painters[key]
+
+ for entry in config.wato_host_tags:
+ tgid = entry[0]
+ tit = entry[1]
+ ch = entry[2]
+
+ long_tit = tit
+ if '/' in tit:
+ topic, tit = tit.split('/', 1)
+ if topic:
+ long_tit = topic + ' / ' + tit
+ else:
+ long_tit = tit
+
+ multisite_painters["host_tag_" + tgid] = {
+ "title" : _("Host tag:") + ' ' + long_tit,
+ "short" : tit,
+ "columns" : [ "host_custom_variables" ],
+ "paint" : paint_host_tag,
+ "groupby" : groupby_host_tag,
+ "args" : [ tgid ],
+ }
Module: check_mk
Branch: master
Commit: 008e7e2b8329b309f257c81fbd19772fc024b6fa
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=008e7e2b8329b3…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Mon Dec 1 10:09:52 2014 +0100
#1544 FIX Fixed exception in complain phase in view editor
Fixed exception "Internal error:: No datasource defined." in view editor
when editing a view and getting an invalid input error which leads the
user to the complain phase.
---
.werks/1544 | 11 +++++++++++
ChangeLog | 1 +
web/htdocs/views.py | 1 +
3 files changed, 13 insertions(+)
diff --git a/.werks/1544 b/.werks/1544
new file mode 100644
index 0000000..314fd97
--- /dev/null
+++ b/.werks/1544
@@ -0,0 +1,11 @@
+Title: Fixed exception in complain phase in view editor
+Level: 1
+Component: multisite
+Compatible: compat
+Version: 1.2.5i7
+Date: 1417424913
+Class: fix
+
+Fixed exception "Internal error:: No datasource defined." in view editor
+when editing a view and getting an invalid input error which leads the
+user to the complain phase.
diff --git a/ChangeLog b/ChangeLog
index 80be8df..5875a2a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -81,6 +81,7 @@
* 1538 FIX: Only allow switching sites on/off when permitted to...
* 1539 FIX: Fixed refreshing of PNP graphs in dashboards...
* 1543 FIX: Hosttag columns are now available right ater creating a tag...
+ * 1544 FIX: Fixed exception in complain phase in view editor...
WATO:
* 1170 Added buttons to move rules to top/bottom of the list to ruleset edit dialog
diff --git a/web/htdocs/views.py b/web/htdocs/views.py
index b8f46ae..8076d6a 100644
--- a/web/htdocs/views.py
+++ b/web/htdocs/views.py
@@ -679,6 +679,7 @@ def transform_valuespec_value_to_view(view):
# view is the new dict object to be updated.
def create_view_from_valuespec(old_view, view):
ds_name = old_view.get('datasource', html.var('datasource'))
+ view['datasource'] = ds_name
datasource = multisite_datasources[ds_name]
vs_value = {}
for ident, vs in view_editor_specs(ds_name):