mirror of
https://github.com/grafana/grafana.git
synced 2025-02-14 09:33:34 -06:00
Alerting: make sure to update contact point references when updating (#54896)
This commit is contained in:
parent
9dd4eab553
commit
e41f78a56d
@ -418,6 +418,7 @@ groupLoop:
|
||||
// If we're renaming, we'll need to fix up the macro receiver group for consistency.
|
||||
// Firstly, if we're the only receiver in the group, simply rename the group to match. Done!
|
||||
if len(receiverGroup.GrafanaManagedReceivers) == 1 {
|
||||
replaceReferences(receiverGroup.Name, target.Name, cfg.AlertmanagerConfig.Route)
|
||||
receiverGroup.Name = target.Name
|
||||
receiverGroup.GrafanaManagedReceivers[i] = target
|
||||
configModified = true
|
||||
@ -460,3 +461,15 @@ groupLoop:
|
||||
|
||||
return configModified
|
||||
}
|
||||
|
||||
func replaceReferences(oldName, newName string, routes ...*apimodels.Route) {
|
||||
if len(routes) == 0 {
|
||||
return
|
||||
}
|
||||
for _, route := range routes {
|
||||
if route.Receiver == oldName {
|
||||
route.Receiver = newName
|
||||
}
|
||||
replaceReferences(oldName, newName, route.Routes...)
|
||||
}
|
||||
}
|
||||
|
@ -319,6 +319,16 @@ func TestStitchReceivers(t *testing.T) {
|
||||
},
|
||||
expModified: true,
|
||||
expCfg: definitions.PostableApiAlertingConfig{
|
||||
Config: definitions.Config{
|
||||
Route: &definitions.Route{
|
||||
Receiver: "receiver-1",
|
||||
Routes: []*definitions.Route{
|
||||
{
|
||||
Receiver: "receiver-1",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Receivers: []*definitions.PostableApiReceiver{
|
||||
{
|
||||
Receiver: config.Receiver{
|
||||
@ -362,7 +372,7 @@ func TestStitchReceivers(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "rename with only one receiver in group, renames group",
|
||||
name: "rename with only one receiver in group, renames group and references",
|
||||
new: &definitions.PostableGrafanaReceiver{
|
||||
UID: "abc",
|
||||
Name: "new-receiver",
|
||||
@ -370,6 +380,16 @@ func TestStitchReceivers(t *testing.T) {
|
||||
},
|
||||
expModified: true,
|
||||
expCfg: definitions.PostableApiAlertingConfig{
|
||||
Config: definitions.Config{
|
||||
Route: &definitions.Route{
|
||||
Receiver: "new-receiver",
|
||||
Routes: []*definitions.Route{
|
||||
{
|
||||
Receiver: "new-receiver",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Receivers: []*definitions.PostableApiReceiver{
|
||||
{
|
||||
Receiver: config.Receiver{
|
||||
@ -421,6 +441,16 @@ func TestStitchReceivers(t *testing.T) {
|
||||
},
|
||||
expModified: true,
|
||||
expCfg: definitions.PostableApiAlertingConfig{
|
||||
Config: definitions.Config{
|
||||
Route: &definitions.Route{
|
||||
Receiver: "receiver-1",
|
||||
Routes: []*definitions.Route{
|
||||
{
|
||||
Receiver: "receiver-1",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Receivers: []*definitions.PostableApiReceiver{
|
||||
{
|
||||
Receiver: config.Receiver{
|
||||
@ -472,6 +502,16 @@ func TestStitchReceivers(t *testing.T) {
|
||||
},
|
||||
expModified: true,
|
||||
expCfg: definitions.PostableApiAlertingConfig{
|
||||
Config: definitions.Config{
|
||||
Route: &definitions.Route{
|
||||
Receiver: "receiver-1",
|
||||
Routes: []*definitions.Route{
|
||||
{
|
||||
Receiver: "receiver-1",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Receivers: []*definitions.PostableApiReceiver{
|
||||
{
|
||||
Receiver: config.Receiver{
|
||||
@ -533,6 +573,16 @@ func TestStitchReceivers(t *testing.T) {
|
||||
},
|
||||
expModified: true,
|
||||
expCfg: definitions.PostableApiAlertingConfig{
|
||||
Config: definitions.Config{
|
||||
Route: &definitions.Route{
|
||||
Receiver: "receiver-1",
|
||||
Routes: []*definitions.Route{
|
||||
{
|
||||
Receiver: "receiver-1",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Receivers: []*definitions.PostableApiReceiver{
|
||||
{
|
||||
Receiver: config.Receiver{
|
||||
@ -604,6 +654,16 @@ func TestStitchReceivers(t *testing.T) {
|
||||
func createTestConfigWithReceivers() *definitions.PostableUserConfig {
|
||||
return &definitions.PostableUserConfig{
|
||||
AlertmanagerConfig: definitions.PostableApiAlertingConfig{
|
||||
Config: definitions.Config{
|
||||
Route: &definitions.Route{
|
||||
Receiver: "receiver-1",
|
||||
Routes: []*definitions.Route{
|
||||
{
|
||||
Receiver: "receiver-1",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Receivers: []*definitions.PostableApiReceiver{
|
||||
{
|
||||
Receiver: config.Receiver{
|
||||
@ -652,6 +712,16 @@ func createTestConfigWithReceivers() *definitions.PostableUserConfig {
|
||||
func createInconsistentTestConfigWithReceivers() *definitions.PostableUserConfig {
|
||||
return &definitions.PostableUserConfig{
|
||||
AlertmanagerConfig: definitions.PostableApiAlertingConfig{
|
||||
Config: definitions.Config{
|
||||
Route: &definitions.Route{
|
||||
Receiver: "receiver-1",
|
||||
Routes: []*definitions.Route{
|
||||
{
|
||||
Receiver: "receiver-1",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Receivers: []*definitions.PostableApiReceiver{
|
||||
{
|
||||
Receiver: config.Receiver{
|
||||
|
Loading…
Reference in New Issue
Block a user