Module: check_mk
Branch: master
Commit: 6f8b7b7ecddb975129eb9a522aa74eabbc253d13
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=6f8b7b7ecddb97…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Fri Oct 29 12:56:09 2010 +0200
Created script for validating Check_MK checks
---
validate_checks | 150 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 150 insertions(+), 0 deletions(-)
diff --git a/validate_checks b/validate_checks
new file mode 100755
index 0000000..1afe527
--- /dev/null
+++ b/validate_checks
@@ -0,0 +1,150 @@
+#!/usr/bin/python
+
+import os, sys
+
+on_tty = sys.stdout.isatty()
+
+if on_tty:
+ tty_black = '\033[30m'
+ tty_red = '\033[31m'
+ tty_green = '\033[32m'
+ tty_yellow = '\033[33m'
+ tty_blue = '\033[34m'
+ tty_magenta = '\033[35m'
+ tty_cyan = '\033[36m'
+ tty_white = '\033[37m'
+ tty_bgred = '\033[41m'
+ tty_bggreen = '\033[42m'
+ tty_bgyellow = '\033[43m'
+ tty_bgblue = '\033[44m'
+ tty_bgmagenta = '\033[45m'
+ tty_bgcyan = '\033[46m'
+ tty_bgwhite = '\033[47m'
+ tty_bold = '\033[1m'
+ tty_underline = '\033[4m'
+ tty_normal = '\033[0m'
+ tty_ok = tty_green + tty_bold + 'OK' + tty_normal
+ tty_error = tty_red + tty_bold + 'ERROR' + tty_normal
+else:
+ tty_black = ''
+ tty_red = ''
+ tty_green = ''
+ tty_yellow = ''
+ tty_blue = ''
+ tty_magenta = ''
+ tty_cyan = ''
+ tty_white = ''
+ tty_bgred = ''
+ tty_bggreen = ''
+ tty_bgyellow = ''
+ tty_bgblue = ''
+ tty_bgmagenta = ''
+ tty_bgcyan = ''
+ tty_bold = ''
+ tty_underline = ''
+ tty_normal = ''
+ tty_ok = 'OK'
+ tty_error = 'ERROR'
+
+
+
+__name__ = 'asd'
+defaults_path = 'defaults'
+autochecks = []
+execfile('check_mk')
+__name__ = '__main__'
+
+def get_checks():
+ return [ l for l in os.listdir('checks') if not l.startswith('.') ]
+
+def check_has_perfdata(check):
+ return check_info[check][2] == 1
+
+def get_all_checks():
+ k = check_info.keys()
+ k.sort()
+ return k
+
+def is_snmp_check(check):
+ return check in snmp_info or check in snmp_info_single
+
+# Load all checks
+for check in get_checks():
+ execfile('checks/%s' % check)
+
+SCORE_START = 10
+C_OK = 1
+C_FAILED = 2
+C_INVALID = 3
+TESTS = { 'manpage': C_OK, 'pnp_tmpl': C_OK, 'pnp_rra': C_OK,
'snmp_scan': C_OK }
+
+#
+# 1) Perform checks
+#
+results = {}
+for check in get_all_checks():
+ score = SCORE_START
+ check_results = TESTS.copy()
+
+ if not os.path.exists('checkman/%s' % check):
+ check_results['manpage'] = C_FAILED
+ score -= 1
+
+ if check_has_perfdata(check):
+ if not os.path.exists('pnp-templates/check_mk-%s.php' % check):
+ check_results['pnp_tmpl'] = C_FAILED
+ score -= 1
+ if not os.path.exists('pnp-rraconf/check_mk-%s.rra.php' % check):
+ check_results['pnp_rra'] = C_FAILED
+ score -= 1
+ else:
+ check_results['pnp_tmpl'] = C_INVALID
+
+ if is_snmp_check(check):
+ if not check in snmp_scan_functions:
+ check_results['snmp_scan'] = C_FAILED
+ score -= 1
+ else:
+ check_results['snmp_scan'] = C_INVALID
+
+ results[check] = (score, check_results)
+
+#
+# 2) Sort by score
+#
+import operator
+results = sorted(results.iteritems(), key=operator.itemgetter(1))
+
+#
+# 3) Output the results
+#
+sys.stdout.write('%-25s' % 'Check')
+for f in TESTS.keys():
+ sys.stdout.write('%-10s' % f)
+sys.stdout.write('%-8s' % 'Score')
+sys.stdout.write("\n")
+for check, (score, check_results) in results:
+ if score == SCORE_START:
+ color = tty_green
+ elif score == 9:
+ color = tty_yellow
+ else:
+ color = tty_red
+
+ sys.stdout.write('%s%-25s%s' % (color, check, tty_normal))
+
+ for f in TESTS.keys():
+ if check_results[f] == C_FAILED:
+ sub_color = tty_red
+ label = ':-('
+ elif check_results[f] == C_INVALID:
+ sub_color = tty_normal
+ label = ''
+ else:
+ sub_color = tty_green
+ label = ':-)'
+
+ sys.stdout.write('%s%-10s%s' % (sub_color, label, tty_normal))
+
+ sys.stdout.write('%s%-8s%s' % (color, score, tty_normal))
+ sys.stdout.write("\n")