mirror of
https://github.com/grafana/grafana.git
synced 2025-02-14 17:43:35 -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.
|
// 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!
|
// Firstly, if we're the only receiver in the group, simply rename the group to match. Done!
|
||||||
if len(receiverGroup.GrafanaManagedReceivers) == 1 {
|
if len(receiverGroup.GrafanaManagedReceivers) == 1 {
|
||||||
|
replaceReferences(receiverGroup.Name, target.Name, cfg.AlertmanagerConfig.Route)
|
||||||
receiverGroup.Name = target.Name
|
receiverGroup.Name = target.Name
|
||||||
receiverGroup.GrafanaManagedReceivers[i] = target
|
receiverGroup.GrafanaManagedReceivers[i] = target
|
||||||
configModified = true
|
configModified = true
|
||||||
@ -460,3 +461,15 @@ groupLoop:
|
|||||||
|
|
||||||
return configModified
|
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,
|
expModified: true,
|
||||||
expCfg: definitions.PostableApiAlertingConfig{
|
expCfg: definitions.PostableApiAlertingConfig{
|
||||||
|
Config: definitions.Config{
|
||||||
|
Route: &definitions.Route{
|
||||||
|
Receiver: "receiver-1",
|
||||||
|
Routes: []*definitions.Route{
|
||||||
|
{
|
||||||
|
Receiver: "receiver-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
Receivers: []*definitions.PostableApiReceiver{
|
Receivers: []*definitions.PostableApiReceiver{
|
||||||
{
|
{
|
||||||
Receiver: config.Receiver{
|
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{
|
new: &definitions.PostableGrafanaReceiver{
|
||||||
UID: "abc",
|
UID: "abc",
|
||||||
Name: "new-receiver",
|
Name: "new-receiver",
|
||||||
@ -370,6 +380,16 @@ func TestStitchReceivers(t *testing.T) {
|
|||||||
},
|
},
|
||||||
expModified: true,
|
expModified: true,
|
||||||
expCfg: definitions.PostableApiAlertingConfig{
|
expCfg: definitions.PostableApiAlertingConfig{
|
||||||
|
Config: definitions.Config{
|
||||||
|
Route: &definitions.Route{
|
||||||
|
Receiver: "new-receiver",
|
||||||
|
Routes: []*definitions.Route{
|
||||||
|
{
|
||||||
|
Receiver: "new-receiver",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
Receivers: []*definitions.PostableApiReceiver{
|
Receivers: []*definitions.PostableApiReceiver{
|
||||||
{
|
{
|
||||||
Receiver: config.Receiver{
|
Receiver: config.Receiver{
|
||||||
@ -421,6 +441,16 @@ func TestStitchReceivers(t *testing.T) {
|
|||||||
},
|
},
|
||||||
expModified: true,
|
expModified: true,
|
||||||
expCfg: definitions.PostableApiAlertingConfig{
|
expCfg: definitions.PostableApiAlertingConfig{
|
||||||
|
Config: definitions.Config{
|
||||||
|
Route: &definitions.Route{
|
||||||
|
Receiver: "receiver-1",
|
||||||
|
Routes: []*definitions.Route{
|
||||||
|
{
|
||||||
|
Receiver: "receiver-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
Receivers: []*definitions.PostableApiReceiver{
|
Receivers: []*definitions.PostableApiReceiver{
|
||||||
{
|
{
|
||||||
Receiver: config.Receiver{
|
Receiver: config.Receiver{
|
||||||
@ -472,6 +502,16 @@ func TestStitchReceivers(t *testing.T) {
|
|||||||
},
|
},
|
||||||
expModified: true,
|
expModified: true,
|
||||||
expCfg: definitions.PostableApiAlertingConfig{
|
expCfg: definitions.PostableApiAlertingConfig{
|
||||||
|
Config: definitions.Config{
|
||||||
|
Route: &definitions.Route{
|
||||||
|
Receiver: "receiver-1",
|
||||||
|
Routes: []*definitions.Route{
|
||||||
|
{
|
||||||
|
Receiver: "receiver-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
Receivers: []*definitions.PostableApiReceiver{
|
Receivers: []*definitions.PostableApiReceiver{
|
||||||
{
|
{
|
||||||
Receiver: config.Receiver{
|
Receiver: config.Receiver{
|
||||||
@ -533,6 +573,16 @@ func TestStitchReceivers(t *testing.T) {
|
|||||||
},
|
},
|
||||||
expModified: true,
|
expModified: true,
|
||||||
expCfg: definitions.PostableApiAlertingConfig{
|
expCfg: definitions.PostableApiAlertingConfig{
|
||||||
|
Config: definitions.Config{
|
||||||
|
Route: &definitions.Route{
|
||||||
|
Receiver: "receiver-1",
|
||||||
|
Routes: []*definitions.Route{
|
||||||
|
{
|
||||||
|
Receiver: "receiver-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
Receivers: []*definitions.PostableApiReceiver{
|
Receivers: []*definitions.PostableApiReceiver{
|
||||||
{
|
{
|
||||||
Receiver: config.Receiver{
|
Receiver: config.Receiver{
|
||||||
@ -604,6 +654,16 @@ func TestStitchReceivers(t *testing.T) {
|
|||||||
func createTestConfigWithReceivers() *definitions.PostableUserConfig {
|
func createTestConfigWithReceivers() *definitions.PostableUserConfig {
|
||||||
return &definitions.PostableUserConfig{
|
return &definitions.PostableUserConfig{
|
||||||
AlertmanagerConfig: definitions.PostableApiAlertingConfig{
|
AlertmanagerConfig: definitions.PostableApiAlertingConfig{
|
||||||
|
Config: definitions.Config{
|
||||||
|
Route: &definitions.Route{
|
||||||
|
Receiver: "receiver-1",
|
||||||
|
Routes: []*definitions.Route{
|
||||||
|
{
|
||||||
|
Receiver: "receiver-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
Receivers: []*definitions.PostableApiReceiver{
|
Receivers: []*definitions.PostableApiReceiver{
|
||||||
{
|
{
|
||||||
Receiver: config.Receiver{
|
Receiver: config.Receiver{
|
||||||
@ -652,6 +712,16 @@ func createTestConfigWithReceivers() *definitions.PostableUserConfig {
|
|||||||
func createInconsistentTestConfigWithReceivers() *definitions.PostableUserConfig {
|
func createInconsistentTestConfigWithReceivers() *definitions.PostableUserConfig {
|
||||||
return &definitions.PostableUserConfig{
|
return &definitions.PostableUserConfig{
|
||||||
AlertmanagerConfig: definitions.PostableApiAlertingConfig{
|
AlertmanagerConfig: definitions.PostableApiAlertingConfig{
|
||||||
|
Config: definitions.Config{
|
||||||
|
Route: &definitions.Route{
|
||||||
|
Receiver: "receiver-1",
|
||||||
|
Routes: []*definitions.Route{
|
||||||
|
{
|
||||||
|
Receiver: "receiver-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
Receivers: []*definitions.PostableApiReceiver{
|
Receivers: []*definitions.PostableApiReceiver{
|
||||||
{
|
{
|
||||||
Receiver: config.Receiver{
|
Receiver: config.Receiver{
|
||||||
|
Loading…
Reference in New Issue
Block a user