alerting: more specific error when missing threshold (#18221)

fixes #18184
This commit is contained in:
Kyle Brandt
2019-07-22 13:23:33 -04:00
committed by GitHub
parent 9cd069f2c5
commit ea0cee4c35
2 changed files with 19 additions and 3 deletions
+18 -2
View File
@@ -34,8 +34,8 @@ type thresholdEvaluator struct {
func newThresholdEvaluator(typ string, model *simplejson.Json) (*thresholdEvaluator, error) {
params := model.Get("params").MustArray()
if len(params) == 0 {
return nil, fmt.Errorf("Evaluator missing threshold parameter")
if len(params) == 0 || params[0] == nil {
return nil, fmt.Errorf("Evaluator '%v' is missing the threshold parameter", HumanThresholdType(typ))
}
firstParam, ok := params[0].(json.Number)
@@ -139,3 +139,19 @@ func inSlice(a string, list []string) bool {
}
return false
}
// HumanThresholdType converts a treshold "type" string to a string that matches the UI
// so errors are less confusing.
func HumanThresholdType(typ string) string {
switch typ {
case "gt":
return "IS ABOVE"
case "lt":
return "IS BELOW"
case "within_range":
return "IS WITHIN RANGE"
case "outside_range":
return "IS OUTSIDE RANGE"
}
return ""
}
+1 -1
View File
@@ -234,7 +234,7 @@ func newQueryCondition(model *simplejson.Json, index int) (*QueryCondition, erro
evaluatorJSON := model.Get("evaluator")
evaluator, err := NewAlertEvaluator(evaluatorJSON)
if err != nil {
return nil, err
return nil, fmt.Errorf("error in condition %v: %v", index, err)
}
condition.Evaluator = evaluator