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.
|
// 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.
|
// 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 so, put our modified receiver into that group. Done!
|
||||||
if candidateExistingGroup.Name == target.Name {
|
if candidateExistingGroup.Name == target.Name {
|
||||||
// Drop it from the old group...
|
// 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",
|
name: "rename to a name that doesn't exist, creates new group and moves",
|
||||||
new: &definitions.PostableGrafanaReceiver{
|
new: &definitions.PostableGrafanaReceiver{
|
||||||
|
Loading…
Reference in New Issue
Block a user