Alerting: Refactor provisioning tests/fakes (#81205)
* Fix up test Alertmanager config JSON * Move fake AM config and provisioning stores to fakes package
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
package fakes
|
||||
|
||||
import (
|
||||
"context"
|
||||
"crypto/md5"
|
||||
"fmt"
|
||||
|
||||
"github.com/grafana/grafana/pkg/services/ngalert/models"
|
||||
)
|
||||
|
||||
type FakeAlertmanagerConfigStore struct {
|
||||
Config models.AlertConfiguration
|
||||
LastSaveCommand *models.SaveAlertmanagerConfigurationCmd
|
||||
}
|
||||
|
||||
func NewFakeAlertmanagerConfigStore(config string) *FakeAlertmanagerConfigStore {
|
||||
return &FakeAlertmanagerConfigStore{
|
||||
Config: models.AlertConfiguration{
|
||||
AlertmanagerConfiguration: config,
|
||||
ConfigurationVersion: "v1",
|
||||
Default: true,
|
||||
OrgID: 1,
|
||||
},
|
||||
LastSaveCommand: nil,
|
||||
}
|
||||
}
|
||||
|
||||
func (f *FakeAlertmanagerConfigStore) GetLatestAlertmanagerConfiguration(ctx context.Context, orgID int64) (*models.AlertConfiguration, error) {
|
||||
result := &f.Config
|
||||
result.OrgID = orgID
|
||||
result.ConfigurationHash = fmt.Sprintf("%x", md5.Sum([]byte(f.Config.AlertmanagerConfiguration)))
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (f *FakeAlertmanagerConfigStore) UpdateAlertmanagerConfiguration(ctx context.Context, cmd *models.SaveAlertmanagerConfigurationCmd) error {
|
||||
f.Config = models.AlertConfiguration{
|
||||
AlertmanagerConfiguration: cmd.AlertmanagerConfiguration,
|
||||
ConfigurationVersion: cmd.ConfigurationVersion,
|
||||
Default: cmd.Default,
|
||||
OrgID: cmd.OrgID,
|
||||
}
|
||||
f.LastSaveCommand = cmd
|
||||
return nil
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package fakes
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
|
||||
"github.com/grafana/grafana/pkg/services/ngalert/models"
|
||||
)
|
||||
|
||||
type FakeProvisioningStore struct {
|
||||
Records map[int64]map[string]models.Provenance
|
||||
}
|
||||
|
||||
func NewFakeProvisioningStore() *FakeProvisioningStore {
|
||||
return &FakeProvisioningStore{
|
||||
Records: map[int64]map[string]models.Provenance{},
|
||||
}
|
||||
}
|
||||
|
||||
func (f *FakeProvisioningStore) GetProvenance(ctx context.Context, o models.Provisionable, org int64) (models.Provenance, error) {
|
||||
if val, ok := f.Records[org]; ok {
|
||||
if prov, ok := val[o.ResourceID()+o.ResourceType()]; ok {
|
||||
return prov, nil
|
||||
}
|
||||
}
|
||||
return models.ProvenanceNone, nil
|
||||
}
|
||||
|
||||
func (f *FakeProvisioningStore) GetProvenances(ctx context.Context, orgID int64, resourceType string) (map[string]models.Provenance, error) {
|
||||
results := make(map[string]models.Provenance)
|
||||
if val, ok := f.Records[orgID]; ok {
|
||||
for k, v := range val {
|
||||
if strings.HasSuffix(k, resourceType) {
|
||||
results[strings.TrimSuffix(k, resourceType)] = v
|
||||
}
|
||||
}
|
||||
}
|
||||
return results, nil
|
||||
}
|
||||
|
||||
func (f *FakeProvisioningStore) SetProvenance(ctx context.Context, o models.Provisionable, org int64, p models.Provenance) error {
|
||||
if _, ok := f.Records[org]; !ok {
|
||||
f.Records[org] = map[string]models.Provenance{}
|
||||
}
|
||||
_ = f.DeleteProvenance(ctx, o, org) // delete old entries first
|
||||
f.Records[org][o.ResourceID()+o.ResourceType()] = p
|
||||
return nil
|
||||
}
|
||||
|
||||
func (f *FakeProvisioningStore) DeleteProvenance(ctx context.Context, o models.Provisionable, org int64) error {
|
||||
if val, ok := f.Records[org]; ok {
|
||||
delete(val, o.ResourceID()+o.ResourceType())
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user