mirror of https://github.com/grafana/grafana
Alerting: Refactor provisioning tests/fakes (#81205)
* Fix up test Alertmanager config JSON * Move fake AM config and provisioning stores to fakes packagepull/81219/head
parent
e45f664ca4
commit
2203bc2a3d
@ -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 |
||||
} |
Loading…
Reference in new issue