diff --git a/pkg/services/ngalert/api/tooling/definitions/alertmanager.go b/pkg/services/ngalert/api/tooling/definitions/alertmanager.go index 3ef36cf7dc0..b6d5e08825b 100644 --- a/pkg/services/ngalert/api/tooling/definitions/alertmanager.go +++ b/pkg/services/ngalert/api/tooling/definitions/alertmanager.go @@ -627,8 +627,8 @@ func (c *GettableUserConfig) GetGrafanaReceiverMap() map[string]*GettableGrafana } type GettableApiAlertingConfig struct { - Config `yaml:",inline"` - + Config `yaml:",inline"` + MuteTimeProvenances map[string]models.Provenance `yaml:"muteTimeProvenances,omitempty" json:"muteTimeProvenances,omitempty"` // Override with our superset receiver type Receivers []*GettableApiReceiver `yaml:"receivers,omitempty" json:"receivers,omitempty"` } @@ -851,20 +851,6 @@ func checkTimeInterval(r *Route, timeIntervals map[string]struct{}) error { return nil } -// swagger:model -type MuteTimeInterval struct { - config.MuteTimeInterval - Provenance models.Provenance `json:"provenance,omitempty"` -} - -func (mt *MuteTimeInterval) ResourceType() string { - return "muteTimeInterval" -} - -func (mt *MuteTimeInterval) ResourceID() string { - return mt.MuteTimeInterval.Name -} - type PostableApiAlertingConfig struct { Config `yaml:",inline"` diff --git a/pkg/services/ngalert/api/tooling/definitions/provisioning_mute_timings.go b/pkg/services/ngalert/api/tooling/definitions/provisioning_mute_timings.go index efab6535a42..84794e0805f 100644 --- a/pkg/services/ngalert/api/tooling/definitions/provisioning_mute_timings.go +++ b/pkg/services/ngalert/api/tooling/definitions/provisioning_mute_timings.go @@ -1,5 +1,10 @@ package definitions +import ( + "github.com/grafana/grafana/pkg/services/ngalert/models" + "github.com/prometheus/alertmanager/config" +) + // swagger:route GET /api/v1/provisioning/mute-timings provisioning RouteGetMuteTimings // // Get all the mute timings. @@ -62,3 +67,17 @@ type MuteTimingPayload struct { // in:body Body MuteTimeInterval } + +// swagger:model +type MuteTimeInterval struct { + config.MuteTimeInterval + Provenance models.Provenance `json:"provenance,omitempty"` +} + +func (mt *MuteTimeInterval) ResourceType() string { + return "muteTimeInterval" +} + +func (mt *MuteTimeInterval) ResourceID() string { + return mt.MuteTimeInterval.Name +} diff --git a/pkg/services/ngalert/notifier/alertmanager_config.go b/pkg/services/ngalert/notifier/alertmanager_config.go index 1594ff75acf..9491cf5a0ef 100644 --- a/pkg/services/ngalert/notifier/alertmanager_config.go +++ b/pkg/services/ngalert/notifier/alertmanager_config.go @@ -155,5 +155,12 @@ func (moa *MultiOrgAlertmanager) mergeProvenance(ctx context.Context, config def } config.TemplateFileProvenances = tmplProvs + mt := definitions.MuteTimeInterval{} + mtProvs, err := moa.ProvStore.GetProvenances(ctx, org, mt.ResourceType()) + if err != nil { + return definitions.GettableUserConfig{}, nil + } + config.AlertmanagerConfig.MuteTimeProvenances = mtProvs + return config, nil }