From 7d99a18c935659967b19051f999e3fc353720e56 Mon Sep 17 00:00:00 2001 From: Tom Date: Sun, 10 Jun 2012 18:34:23 +0200 Subject: increased shininess --- Src/PyCatcher/src/evaluators.py | 38 +++++++++++++++++--------------------- 1 file changed, 17 insertions(+), 21 deletions(-) (limited to 'Src/PyCatcher/src/evaluators.py') diff --git a/Src/PyCatcher/src/evaluators.py b/Src/PyCatcher/src/evaluators.py index 759d400..d567de3 100644 --- a/Src/PyCatcher/src/evaluators.py +++ b/Src/PyCatcher/src/evaluators.py @@ -1,9 +1,8 @@ from rules import RuleResult -from settings import Rule_Groups, Rule_Weights +from settings import Rule_Groups class EvaluatorSelect: CONSERVATIVE = 0 - WEIGHTED = 1 GROUP = 2 class Evaluator: @@ -32,16 +31,6 @@ class ConservativeEvaluator(Evaluator): return final_result, {'Decision founded on': decision_rule} - -class WeightedEvaluator(Evaluator): - identifier = 'Weighted Evaluator' - - def evaluate(self, result_list): - for rule, evaluation in reseult_list: - pass - - - class GroupEvaluator(Evaluator): identifier = 'Group Evaluator' @@ -50,28 +39,35 @@ class GroupEvaluator(Evaluator): for group in Rule_Groups: group_results.append(self.evaluate_group_results(self.convert_to_group_result_list(group,result_list))) - if group_results.count(RuleResult.CRITICAL) > 0: - return RuleResult.CRITICAL - elif group_results.count(RuleResult.WARNING) > 0: - return RuleResult.WARNING + criticals = group_results.count(RuleResult.CRITICAL) + warnings = group_results.count(RuleResult.WARNING) + oks = group_results.count(RuleResult.OK) + + if criticals > 0: + return RuleResult.CRITICAL,{'Criticals': criticals, 'Warnings': warnings, 'Oks':oks} + elif warnings > 0: + return RuleResult.WARNING,{'Criticals': criticals, 'Warnings': warnings, 'Oks':oks} + elif oks > 0: + return RuleResult.OK,{'Criticals': criticals, 'Warnings': warnings, 'Oks':oks} else: - return RuleResult.OK + return RuleResult.CRITICAL,{'Reason': 'No evaluation possible, all active rules yield IGNORE.'} def convert_to_group_result_list(self, group, result_list): group_result_list = [] for rule in group: - group_results.append(result_list[rule]) + if result_list.has_key(rule): + group_result_list.append(result_list[rule]) return group_result_list def evaluate_group_results(self, results): oks = results.count(RuleResult.OK) warnings = results.count(RuleResult.WARNING) criticals = results.count(RuleResult.CRITICAL) - if criticals >= oks and criticals >= warnings: + if criticals >= oks and criticals >= warnings and not criticals == 0: return RuleResult.CRITICAL - elif warnings >= oks and warnings>= criticals: + elif warnings >= oks and warnings>= criticals and not warnings == 0: return RuleResult.WARNING - elif oks >= criticals and oks >= warnings: + elif oks >= criticals and oks >= warnings and not oks == 0: return RuleResult.OK else: return RuleResult.IGNORE \ No newline at end of file -- cgit v1.2.3-55-g7522