Alerting: add collision safe update function for alertmanager configurations (#46692)

* Alerting: add collision safe update function for alertmanager configurations

* fix typo

* use bootstrap func for tests

* move hash calculation to store

* remove icons lol

* remove removed field
This commit is contained in:
Jean-Philippe Quéméner
2022-03-23 09:31:46 +01:00
committed by GitHub
parent ff3c1e3144
commit a80f04c949
6 changed files with 141 additions and 0 deletions
+17
View File
@@ -2,6 +2,9 @@ package notifier
import (
"context"
"crypto/md5"
"errors"
"fmt"
"strings"
"sync"
"testing"
@@ -67,6 +70,20 @@ func (f *FakeConfigStore) SaveAlertmanagerConfigurationWithCallback(_ context.Co
return nil
}
func (f *FakeConfigStore) UpdateAlertManagerConfiguration(cmd *models.SaveAlertmanagerConfigurationCmd) error {
if config, exists := f.configs[cmd.OrgID]; exists && config.ConfigurationHash == cmd.FetchedConfigurationHash {
f.configs[cmd.OrgID] = &models.AlertConfiguration{
AlertmanagerConfiguration: cmd.AlertmanagerConfiguration,
OrgID: cmd.OrgID,
ConfigurationHash: fmt.Sprintf("%x", md5.Sum([]byte(cmd.AlertmanagerConfiguration))),
ConfigurationVersion: "v1",
Default: cmd.Default,
}
return nil
}
return errors.New("config not found or hash not valid")
}
type FakeOrgStore struct {
orgs []int64
}