summaryrefslogtreecommitdiffstats
path: root/Src/PyCatcher/src/evaluators.py
diff options
context:
space:
mode:
Diffstat (limited to 'Src/PyCatcher/src/evaluators.py')
-rw-r--r--Src/PyCatcher/src/evaluators.py38
1 files changed, 17 insertions, 21 deletions
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