Alerting: Manage remote Alertmanager silences (#75452)

* Alerting: Manage remote Alertmanager silences

* fix typo

* check errors when encoding json in fake external AM

* take path from configured URL, check for nil responses
This commit is contained in:
Santiago
2023-10-02 07:36:11 -03:00
committed by GitHub
parent ec774c901a
commit 73be9449d1
7 changed files with 311 additions and 32 deletions

View File

@@ -75,7 +75,7 @@ func (srv AlertmanagerSrv) RouteCreateSilence(c *contextmodel.ReqContext, postab
return ErrResp(http.StatusUnauthorized, fmt.Errorf("user is not authorized to %s silences", errAction), "")
}
silenceID, err := am.CreateSilence(&postableSilence)
silenceID, err := am.CreateSilence(c.Req.Context(), &postableSilence)
if err != nil {
if errors.Is(err, alertingNotify.ErrSilenceNotFound) {
return ErrResp(http.StatusNotFound, err, "")
@@ -112,7 +112,7 @@ func (srv AlertmanagerSrv) RouteDeleteSilence(c *contextmodel.ReqContext, silenc
return errResp
}
if err := am.DeleteSilence(silenceID); err != nil {
if err := am.DeleteSilence(c.Req.Context(), silenceID); err != nil {
if errors.Is(err, alertingNotify.ErrSilenceNotFound) {
return ErrResp(http.StatusNotFound, err, "")
}
@@ -199,7 +199,7 @@ func (srv AlertmanagerSrv) RouteGetSilence(c *contextmodel.ReqContext, silenceID
return errResp
}
gettableSilence, err := am.GetSilence(silenceID)
gettableSilence, err := am.GetSilence(c.Req.Context(), silenceID)
if err != nil {
if errors.Is(err, alertingNotify.ErrSilenceNotFound) {
return ErrResp(http.StatusNotFound, err, "")
@@ -216,7 +216,7 @@ func (srv AlertmanagerSrv) RouteGetSilences(c *contextmodel.ReqContext) response
return errResp
}
gettableSilences, err := am.ListSilences(c.QueryStrings("filter"))
gettableSilences, err := am.ListSilences(c.Req.Context(), c.QueryStrings("filter"))
if err != nil {
if errors.Is(err, alertingNotify.ErrListSilencesBadPayload) {
return ErrResp(http.StatusBadRequest, err, "")

View File

@@ -617,7 +617,7 @@ func TestRouteCreateSilence(t *testing.T) {
alertmanagerFor, err := sut.mam.AlertmanagerFor(1)
require.NoError(t, err)
silence.ID = ""
newID, err := alertmanagerFor.CreateSilence(&silence)
newID, err := alertmanagerFor.CreateSilence(context.Background(), &silence)
require.NoError(t, err)
silence.ID = newID
}