mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Alerting: Implement DeleteSilence in the forked AM (remote primary) (#85721)
This commit is contained in:
parent
7590f4afe1
commit
1af2e69625
@ -451,15 +451,23 @@ func TestForkedAlertmanager_ModeRemotePrimary(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("DeleteSilence", func(tt *testing.T) {
|
||||
// We should delete the silence in the remote Alertmanager.
|
||||
_, remote, forked := genTestAlertmanagers(tt, modeRemotePrimary)
|
||||
remote.EXPECT().DeleteSilence(mock.Anything, mock.Anything).Return(nil).Once()
|
||||
require.NoError(tt, forked.DeleteSilence(ctx, ""))
|
||||
// We should delete the silence in both Alertmanagers.
|
||||
testID := "test-id"
|
||||
internal, remote, forked := genTestAlertmanagers(tt, modeRemotePrimary)
|
||||
remote.EXPECT().DeleteSilence(mock.Anything, testID).Return(nil).Once()
|
||||
internal.EXPECT().DeleteSilence(mock.Anything, testID).Return(nil).Once()
|
||||
require.NoError(tt, forked.DeleteSilence(ctx, testID))
|
||||
|
||||
// If there's an error in the remote Alertmanager, the error should be returned.
|
||||
_, remote, forked = genTestAlertmanagers(tt, modeRemotePrimary)
|
||||
remote.EXPECT().DeleteSilence(mock.Anything, mock.Anything).Return(expErr).Maybe()
|
||||
require.ErrorIs(tt, expErr, forked.DeleteSilence(ctx, ""))
|
||||
remote.EXPECT().DeleteSilence(mock.Anything, testID).Return(expErr).Maybe()
|
||||
require.ErrorIs(tt, expErr, forked.DeleteSilence(ctx, testID))
|
||||
|
||||
// An error in the internal Alertmanager should not be returned.
|
||||
internal, remote, forked = genTestAlertmanagers(tt, modeRemotePrimary)
|
||||
remote.EXPECT().DeleteSilence(mock.Anything, testID).Return(nil).Maybe()
|
||||
internal.EXPECT().DeleteSilence(mock.Anything, testID).Return(nil).Maybe()
|
||||
require.NoError(tt, forked.DeleteSilence(ctx, testID))
|
||||
})
|
||||
|
||||
t.Run("GetSilence", func(tt *testing.T) {
|
||||
|
@ -76,7 +76,13 @@ func (fam *RemotePrimaryForkedAlertmanager) CreateSilence(ctx context.Context, s
|
||||
}
|
||||
|
||||
func (fam *RemotePrimaryForkedAlertmanager) DeleteSilence(ctx context.Context, id string) error {
|
||||
return fam.remote.DeleteSilence(ctx, id)
|
||||
if err := fam.remote.DeleteSilence(ctx, id); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := fam.internal.DeleteSilence(ctx, id); err != nil {
|
||||
fam.log.Error("Error deleting silence in the internal Alertmanager", "err", err, "id", id)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (fam *RemotePrimaryForkedAlertmanager) GetSilence(ctx context.Context, id string) (apimodels.GettableSilence, error) {
|
||||
|
Loading…
Reference in New Issue
Block a user