mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Alerting: Fix panic when reparenting receivers to groups following an attempted rename via Provisioning (#67167)
This commit is contained in:
parent
1a347bfb7b
commit
117636e8ca
@ -453,7 +453,7 @@ groupLoop:
|
||||
|
||||
// Otherwise, we only want to rename the receiver we are touching... NOT all of them.
|
||||
// Check to see whether a different group with the name we want already exists.
|
||||
for i, candidateExistingGroup := range cfg.AlertmanagerConfig.Receivers {
|
||||
for _, candidateExistingGroup := range cfg.AlertmanagerConfig.Receivers {
|
||||
// If so, put our modified receiver into that group. Done!
|
||||
if candidateExistingGroup.Name == target.Name {
|
||||
// Drop it from the old group...
|
||||
|
@ -493,6 +493,292 @@ func TestStitchReceivers(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "rename to another, larger group",
|
||||
initial: &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{
|
||||
Name: "receiver-1",
|
||||
},
|
||||
PostableGrafanaReceivers: definitions.PostableGrafanaReceivers{
|
||||
GrafanaManagedReceivers: []*definitions.PostableGrafanaReceiver{
|
||||
{
|
||||
UID: "1",
|
||||
Name: "receiver-1",
|
||||
Type: "slack",
|
||||
},
|
||||
{
|
||||
UID: "2",
|
||||
Name: "receiver-1",
|
||||
Type: "slack",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Receiver: config.Receiver{
|
||||
Name: "receiver-2",
|
||||
},
|
||||
PostableGrafanaReceivers: definitions.PostableGrafanaReceivers{
|
||||
GrafanaManagedReceivers: []*definitions.PostableGrafanaReceiver{
|
||||
{
|
||||
UID: "3",
|
||||
Name: "receiver-2",
|
||||
Type: "slack",
|
||||
},
|
||||
{
|
||||
UID: "4",
|
||||
Name: "receiver-2",
|
||||
Type: "slack",
|
||||
},
|
||||
{
|
||||
UID: "5",
|
||||
Name: "receiver-2",
|
||||
Type: "slack",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
new: &definitions.PostableGrafanaReceiver{
|
||||
UID: "2",
|
||||
Name: "receiver-2",
|
||||
Type: "slack",
|
||||
},
|
||||
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{
|
||||
Name: "receiver-1",
|
||||
},
|
||||
PostableGrafanaReceivers: definitions.PostableGrafanaReceivers{
|
||||
GrafanaManagedReceivers: []*definitions.PostableGrafanaReceiver{
|
||||
{
|
||||
UID: "1",
|
||||
Name: "receiver-1",
|
||||
Type: "slack",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Receiver: config.Receiver{
|
||||
Name: "receiver-2",
|
||||
},
|
||||
PostableGrafanaReceivers: definitions.PostableGrafanaReceivers{
|
||||
GrafanaManagedReceivers: []*definitions.PostableGrafanaReceiver{
|
||||
{
|
||||
UID: "3",
|
||||
Name: "receiver-2",
|
||||
Type: "slack",
|
||||
},
|
||||
{
|
||||
UID: "4",
|
||||
Name: "receiver-2",
|
||||
Type: "slack",
|
||||
},
|
||||
{
|
||||
UID: "5",
|
||||
Name: "receiver-2",
|
||||
Type: "slack",
|
||||
},
|
||||
{
|
||||
UID: "2",
|
||||
Name: "receiver-2",
|
||||
Type: "slack",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "rename when there are many groups",
|
||||
initial: &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{
|
||||
Name: "receiver-1",
|
||||
},
|
||||
PostableGrafanaReceivers: definitions.PostableGrafanaReceivers{
|
||||
GrafanaManagedReceivers: []*definitions.PostableGrafanaReceiver{
|
||||
{
|
||||
UID: "1",
|
||||
Name: "receiver-1",
|
||||
Type: "slack",
|
||||
},
|
||||
{
|
||||
UID: "2",
|
||||
Name: "receiver-1",
|
||||
Type: "slack",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Receiver: config.Receiver{
|
||||
Name: "receiver-2",
|
||||
},
|
||||
PostableGrafanaReceivers: definitions.PostableGrafanaReceivers{
|
||||
GrafanaManagedReceivers: []*definitions.PostableGrafanaReceiver{
|
||||
{
|
||||
UID: "3",
|
||||
Name: "receiver-2",
|
||||
Type: "slack",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Receiver: config.Receiver{
|
||||
Name: "receiver-3",
|
||||
},
|
||||
PostableGrafanaReceivers: definitions.PostableGrafanaReceivers{
|
||||
GrafanaManagedReceivers: []*definitions.PostableGrafanaReceiver{
|
||||
{
|
||||
UID: "4",
|
||||
Name: "receiver-4",
|
||||
Type: "slack",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Receiver: config.Receiver{
|
||||
Name: "receiver-4",
|
||||
},
|
||||
PostableGrafanaReceivers: definitions.PostableGrafanaReceivers{
|
||||
GrafanaManagedReceivers: []*definitions.PostableGrafanaReceiver{
|
||||
{
|
||||
UID: "5",
|
||||
Name: "receiver-4",
|
||||
Type: "slack",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
new: &definitions.PostableGrafanaReceiver{
|
||||
UID: "2",
|
||||
Name: "receiver-4",
|
||||
Type: "slack",
|
||||
},
|
||||
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{
|
||||
Name: "receiver-1",
|
||||
},
|
||||
PostableGrafanaReceivers: definitions.PostableGrafanaReceivers{
|
||||
GrafanaManagedReceivers: []*definitions.PostableGrafanaReceiver{
|
||||
{
|
||||
UID: "1",
|
||||
Name: "receiver-1",
|
||||
Type: "slack",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Receiver: config.Receiver{
|
||||
Name: "receiver-2",
|
||||
},
|
||||
PostableGrafanaReceivers: definitions.PostableGrafanaReceivers{
|
||||
GrafanaManagedReceivers: []*definitions.PostableGrafanaReceiver{
|
||||
{
|
||||
UID: "3",
|
||||
Name: "receiver-2",
|
||||
Type: "slack",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Receiver: config.Receiver{
|
||||
Name: "receiver-3",
|
||||
},
|
||||
PostableGrafanaReceivers: definitions.PostableGrafanaReceivers{
|
||||
GrafanaManagedReceivers: []*definitions.PostableGrafanaReceiver{
|
||||
{
|
||||
UID: "4",
|
||||
Name: "receiver-4",
|
||||
Type: "slack",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Receiver: config.Receiver{
|
||||
Name: "receiver-4",
|
||||
},
|
||||
PostableGrafanaReceivers: definitions.PostableGrafanaReceivers{
|
||||
GrafanaManagedReceivers: []*definitions.PostableGrafanaReceiver{
|
||||
{
|
||||
UID: "5",
|
||||
Name: "receiver-4",
|
||||
Type: "slack",
|
||||
},
|
||||
{
|
||||
UID: "2",
|
||||
Name: "receiver-4",
|
||||
Type: "slack",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "rename to a name that doesn't exist, creates new group and moves",
|
||||
new: &definitions.PostableGrafanaReceiver{
|
||||
|
Loading…
Reference in New Issue
Block a user