Commit ea0cee4c by Kyle Brandt Committed by GitHub

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

fixes #18184
parent 9cd069f2
......@@ -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 ""
}
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment