diff --git a/pkg/services/ngalert/api/api_alertmanager.go b/pkg/services/ngalert/api/api_alertmanager.go index cd3218bb7e2..8cb83a2e2a9 100644 --- a/pkg/services/ngalert/api/api_alertmanager.go +++ b/pkg/services/ngalert/api/api_alertmanager.go @@ -146,7 +146,7 @@ func (srv AlertmanagerSrv) RouteGetAMAlertGroups(c *models.ReqContext) response. c.Query("receiver"), ) if err != nil { - if errors.Is(err, notifier.ErrGetAlertGroupsBadPayload) { + if errors.Is(err, alerting.ErrGetAlertGroupsBadPayload) { return ErrResp(http.StatusBadRequest, err, "") } // any other error here should be an unexpected failure and thus an internal error @@ -170,10 +170,10 @@ func (srv AlertmanagerSrv) RouteGetAMAlerts(c *models.ReqContext) response.Respo c.Query("receiver"), ) if err != nil { - if errors.Is(err, notifier.ErrGetAlertsBadPayload) { + if errors.Is(err, alerting.ErrGetAlertsBadPayload) { return ErrResp(http.StatusBadRequest, err, "") } - if errors.Is(err, notifier.ErrGetAlertsUnavailable) { + if errors.Is(err, alerting.ErrGetAlertsUnavailable) { return ErrResp(http.StatusServiceUnavailable, err, "") } // any other error here should be an unexpected failure and thus an internal error diff --git a/pkg/services/ngalert/notifier/alerts.go b/pkg/services/ngalert/notifier/alerts.go index d06a01b43bd..952a42f0dd7 100644 --- a/pkg/services/ngalert/notifier/alerts.go +++ b/pkg/services/ngalert/notifier/alerts.go @@ -6,6 +6,8 @@ import ( "sort" "time" + "github.com/grafana/alerting/alerting" + apimodels "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions" v2 "github.com/prometheus/alertmanager/api/v2" "github.com/prometheus/alertmanager/dispatch" @@ -14,13 +16,6 @@ import ( prometheus_model "github.com/prometheus/common/model" ) -var ( - ErrGetAlertsInternal = fmt.Errorf("unable to retrieve alerts(s) due to an internal error") - ErrGetAlertsUnavailable = fmt.Errorf("unable to retrieve alerts(s) as alertmanager is not initialised yet") - ErrGetAlertsBadPayload = fmt.Errorf("unable to retrieve alerts") - ErrGetAlertGroupsBadPayload = fmt.Errorf("unable to retrieve alerts groups") -) - func (am *Alertmanager) GetAlerts(active, silenced, inhibited bool, filter []string, receivers string) (apimodels.GettableAlerts, error) { var ( // Initialize result slice to prevent api returning `null` when there @@ -29,19 +24,19 @@ func (am *Alertmanager) GetAlerts(active, silenced, inhibited bool, filter []str ) if !am.Ready() { - return res, ErrGetAlertsUnavailable + return res, alerting.ErrGetAlertsUnavailable } matchers, err := parseFilter(filter) if err != nil { am.logger.Error("failed to parse matchers", "error", err) - return nil, fmt.Errorf("%s: %w", err.Error(), ErrGetAlertsBadPayload) + return nil, fmt.Errorf("%s: %w", err.Error(), alerting.ErrGetAlertsBadPayload) } receiverFilter, err := parseReceivers(receivers) if err != nil { am.logger.Error("failed to parse receiver regex", "error", err) - return nil, fmt.Errorf("%s: %w", err.Error(), ErrGetAlertsBadPayload) + return nil, fmt.Errorf("%s: %w", err.Error(), alerting.ErrGetAlertsBadPayload) } alerts := am.alerts.GetPending() @@ -78,7 +73,7 @@ func (am *Alertmanager) GetAlerts(active, silenced, inhibited bool, filter []str if err != nil { am.logger.Error("failed to iterate through the alerts", "error", err) - return nil, fmt.Errorf("%s: %w", err.Error(), ErrGetAlertsInternal) + return nil, fmt.Errorf("%s: %w", err.Error(), alerting.ErrGetAlertsInternal) } sort.Slice(res, func(i, j int) bool { return *res[i].Fingerprint < *res[j].Fingerprint @@ -91,13 +86,13 @@ func (am *Alertmanager) GetAlertGroups(active, silenced, inhibited bool, filter matchers, err := parseFilter(filter) if err != nil { am.logger.Error("msg", "failed to parse matchers", "error", err) - return nil, fmt.Errorf("%s: %w", err.Error(), ErrGetAlertGroupsBadPayload) + return nil, fmt.Errorf("%s: %w", err.Error(), alerting.ErrGetAlertGroupsBadPayload) } receiverFilter, err := parseReceivers(receivers) if err != nil { am.logger.Error("msg", "failed to compile receiver regex", "error", err) - return nil, fmt.Errorf("%s: %w", err.Error(), ErrGetAlertGroupsBadPayload) + return nil, fmt.Errorf("%s: %w", err.Error(), alerting.ErrGetAlertGroupsBadPayload) } rf := func(receiverFilter *regexp.Regexp) func(r *dispatch.Route) bool {