Module: check_mk
Branch: master
Commit: a7f56be3f62696846cb59210da330a50e147de34
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=a7f56be3f62696…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Fri Jul 3 14:57:12 2015 +0200
Fixed using cached agent data in keepalive mode
Conflicts:
modules/check_mk.py
---
modules/check_mk.py | 46 ++++++++++++++++++++++++++++++++++------------
1 file changed, 34 insertions(+), 12 deletions(-)
diff --git a/modules/check_mk.py b/modules/check_mk.py
index f3ab241..4d23e3c 100755
--- a/modules/check_mk.py
+++ b/modules/check_mk.py
@@ -608,6 +608,36 @@ def agent_target_version(hostname):
return spec # return the whole spec in case of an "at least
version" config
+orig_check_max_cachefile_age = None
+orig_cluster_max_cachefile_age = None
+orig_inventory_max_cachefile_age = None
+
+# TODO: Why 1000000000? Can't we really clean this up to a global variable which can
+# be toggled to enforce the cache usage (if available). This way we would not need
+# to store the original values of the different caches and modify them etc.
+def enforce_using_agent_cache():
+ global check_max_cachefile_age, cluster_max_cachefile_age,
inventory_max_cachefile_age
+ global orig_check_max_cachefile_age, orig_cluster_max_cachefile_age, \
+ orig_inventory_max_cachefile_age
+
+ if check_max_cachefile_age != 1000000000:
+ orig_check_max_cachefile_age = check_max_cachefile_age
+ orig_cluster_max_cachefile_age = cluster_max_cachefile_age
+ orig_inventory_max_cachefile_age = inventory_max_cachefile_age
+
+ check_max_cachefile_age = 1000000000
+ cluster_max_cachefile_age = 1000000000
+ inventory_max_cachefile_age = 1000000000
+
+
+def restore_original_agent_caching_usage():
+ global check_max_cachefile_age, cluster_max_cachefile_age,
inventory_max_cachefile_age
+ if orig_check_max_cachefile_age != None:
+ check_max_cachefile_age = orig_check_max_cachefile_age
+ cluster_max_cachefile_age = orig_cluster_max_cachefile_age
+ inventory_max_cachefile_age = orig_inventory_max_cachefile_age
+
+
#.
# .--SNMP----------------------------------------------------------------.
# | ____ _ _ __ __ ____ |
@@ -5231,8 +5261,7 @@ def add_keepalive_check_result(service, state, output,
cached_at=None, cache_int
def do_check_keepalive():
- global g_initial_times, g_timeout, check_max_cachefile_age,
inventory_max_cachefile_age
- global g_total_check_output
+ global g_initial_times, g_timeout, g_total_check_output
def check_timeout(signum, frame):
raise MKCheckTimeout()
@@ -5262,9 +5291,6 @@ def do_check_keepalive():
global vars_before_config
vars_before_config = set([])
- orig_check_max_cachefile_age = check_max_cachefile_age
- orig_inventory_max_cachefile_age = inventory_max_cachefile_age
-
g_total_check_output = ""
if opt_verbose:
@@ -5306,11 +5332,7 @@ def do_check_keepalive():
args = cmdline.split()
if '--cache' in args:
args.remove('--cache')
- check_max_cachefile_age = 1000000000
- inventory_max_cachefile_age = 1000000000
- else:
- check_max_cachefile_age = orig_check_max_cachefile_age
- inventory_max_cachefile_age = orig_inventory_max_cachefile_age
+ enforce_using_agent_cache()
# FIXME: remove obsolete check-inventory
if '--check-inventory' in args:
@@ -5373,6 +5395,7 @@ def do_check_keepalive():
sys.stderr.flush()
cleanup_globals() # Prepare for next check
+ restore_original_agent_caching_usage()
# Check if all global variables are clean, but only in verbose logging mode
if opt_verbose:
@@ -5785,8 +5808,7 @@ for o,a in opts:
sys.exit(1)
elif o == '--cache':
opt_use_cachefile = True
- check_max_cachefile_age = 1000000000
- inventory_max_cachefile_age = 1000000000
+ enforce_agent_caching()
elif o == '--no-tcp':
opt_no_tcp = True
elif o == '--no-cache':