Alerting: refactor receiver validation to be reusable (#46103)
This commit is contained in:
@@ -490,46 +490,15 @@ func (m *migration) validateAlertmanagerConfig(orgID int64, config *PostableUser
|
||||
}
|
||||
return fallback
|
||||
}
|
||||
|
||||
switch gr.Type {
|
||||
case "email":
|
||||
_, err = channels.NewEmailNotifier(cfg, nil, nil) // Email notifier already has a default template.
|
||||
case "pagerduty":
|
||||
_, err = channels.NewPagerdutyNotifier(cfg, nil, nil, decryptFunc)
|
||||
case "pushover":
|
||||
_, err = channels.NewPushoverNotifier(cfg, nil, nil, decryptFunc)
|
||||
case "slack":
|
||||
_, err = channels.NewSlackNotifier(cfg, nil, decryptFunc)
|
||||
case "telegram":
|
||||
_, err = channels.NewTelegramNotifier(cfg, nil, nil, decryptFunc)
|
||||
case "victorops":
|
||||
_, err = channels.NewVictoropsNotifier(cfg, nil, nil)
|
||||
case "teams":
|
||||
_, err = channels.NewTeamsNotifier(cfg, nil, nil)
|
||||
case "dingding":
|
||||
_, err = channels.NewDingDingNotifier(cfg, nil, nil)
|
||||
case "kafka":
|
||||
_, err = channels.NewKafkaNotifier(cfg, nil, nil)
|
||||
case "webhook":
|
||||
_, err = channels.NewWebHookNotifier(cfg, nil, nil, decryptFunc)
|
||||
case "sensugo":
|
||||
_, err = channels.NewSensuGoNotifier(cfg, nil, nil, decryptFunc)
|
||||
case "discord":
|
||||
_, err = channels.NewDiscordNotifier(cfg, nil, nil)
|
||||
case "googlechat":
|
||||
_, err = channels.NewGoogleChatNotifier(cfg, nil, nil)
|
||||
case "LINE":
|
||||
_, err = channels.NewLineNotifier(cfg, nil, nil, decryptFunc)
|
||||
case "threema":
|
||||
_, err = channels.NewThreemaNotifier(cfg, nil, nil, decryptFunc)
|
||||
case "opsgenie":
|
||||
_, err = channels.NewOpsgenieNotifier(cfg, nil, nil, decryptFunc)
|
||||
case "prometheus-alertmanager":
|
||||
_, err = channels.NewAlertmanagerNotifier(cfg, nil, decryptFunc)
|
||||
default:
|
||||
receiverFactory, exists := channels.Factory(gr.Type)
|
||||
if !exists {
|
||||
return fmt.Errorf("notifier %s is not supported", gr.Type)
|
||||
}
|
||||
|
||||
factoryConfig, err := channels.NewFactoryConfig(cfg, nil, decryptFunc, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = receiverFactory(factoryConfig)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ func Test_validateAlertmanagerConfig(t *testing.T) {
|
||||
SecureSettings: map[string]string{"url": invalidUri},
|
||||
},
|
||||
},
|
||||
err: fmt.Errorf("failed to validate receiver \"SlackWithBadURL\" of type \"slack\": invalid URL %q: parse %q: net/url: invalid control character in URL", invalidUri, invalidUri),
|
||||
err: fmt.Errorf("failed to validate receiver \"SlackWithBadURL\" of type \"slack\": invalid URL %q", invalidUri),
|
||||
},
|
||||
{
|
||||
name: "when a slack receiver has an invalid recipient - it should not error",
|
||||
|
||||
Reference in New Issue
Block a user