* Read path, main API
* Define record field for incoming requests
* Refactor several alerting specific validators into two paths
* Refactor validateCondition actually contain all the condition validation logic
* Move condition validation inside rule path
* Validators for recording rules
* Wire feature flag through to validators
* Test for accepting a valid recording rule
* Tests for negative case, no UID
* Test for ignoring alerting fields
* Build conditions based on recording rules as well
* Regenerate swagger docs
* Fix CRUD test to cover the right thing
* Re-generate swagger docs with backdated v0.30.2 version
* Regenerate base spec
* Regenerate ngalert specs
* Regenerate top level specs
* Comment and rename
* Return struct instead of modifying ref
returnnil,fmt.Errorf("%w: query is not specified by condition is. You must specify both query and condition to update existing alert rule",ngmodels.ErrAlertRuleFailedValidation)
}
}else{
returnnil,fmt.Errorf("%w: no queries or expressions are found",ngmodels.ErrAlertRuleFailedValidation)
returnngmodels.AlertRule{},fmt.Errorf("%w: %s",ngmodels.ErrAlertRuleFailedValidation,"metric name for recording rule must be a valid utf8 string")
}
if!prommodels.IsValidMetricName(metricName){
returnngmodels.AlertRule{},fmt.Errorf("%w: %s",ngmodels.ErrAlertRuleFailedValidation,"metric name for recording rule must be a valid Prometheus metric name")
// Patch requests may leave both query and condition blank. If a request supplies one, it must supply the other.
iflen(queries)==0&&condition==""{
returnnil
}
iflen(queries)==0&&condition!=""{
returnfmt.Errorf("%w: query is not specified but condition is. You must specify both query and condition to update existing alert rule",ngmodels.ErrAlertRuleFailedValidation)
}
iflen(queries)>0&&condition==""{
returnfmt.Errorf("%w: condition is not specified but query is. You must specify both query and condition to update existing alert rule",ngmodels.ErrAlertRuleFailedValidation)
}
}
ifcondition==""{
returnerrors.New("condition cannot be empty")
returnfmt.Errorf("%w: condition cannot be empty",ngmodels.ErrAlertRuleFailedValidation)