1
0
Fork 0
mirror of https://github.com/prometheus-operator/prometheus-operator.git synced 2025-04-21 03:38:43 +00:00

Merge pull request from slashpai/chore-0-80-discord

This commit is contained in:
Jayapriya Pai 2025-02-03 21:09:31 +05:30 committed by GitHub
commit 9716e268da
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 165 additions and 3 deletions

View file

@ -5,7 +5,8 @@
* [FEATURE] Add `keepIdentifyingResourceAttributes` field in OTLPConfig for `Prometheus` and `PrometheusAgent` CRDs. #7240
* [FEATURE] Add `fallbackScrapeProtocol` field to ScrapeClass for `Prometheus` and `PrometheusAgent` CRDs. #7288
* [FEATURE] Support `MSTeamsV2Config` receiver in Alertmanager configuration Secret. #7296
* [FEATURE] Add `Timeout` field in Webhook receiver in Alertmanager configuration Secret. #7312
* [FEATURE] Add `timeout` field in Webhook receiver in Alertmanager configuration Secret. #7312
* [FEATURE] Add `content`, `username` and `avatarUrl` fields in Discord receiver in Alertmanager configuration secret. #7313
* [FEATURE] Add `scrapeFailureLogFile` field to the Prometheus and PrometheusAgent CRDs. #7038 #7311
* [BUGFIX] Validate respective api URL field in PagerDutyConfigs, DiscordConfigs, SlackConfigs and WebhookConfigs in AlertManagerConfig CRD. #6585

View file

@ -2329,13 +2329,33 @@ func (tc *telegramConfig) sanitize(amVersion semver.Version, logger *slog.Logger
return tc.HTTPConfig.sanitize(amVersion, logger)
}
func (tc *discordConfig) sanitize(amVersion semver.Version, logger *slog.Logger) error {
func (dc *discordConfig) sanitize(amVersion semver.Version, logger *slog.Logger) error {
discordAllowed := amVersion.GTE(semver.MustParse("0.25.0"))
lessThanV0_28 := amVersion.LT(semver.MustParse("0.28.0"))
if !discordAllowed {
return fmt.Errorf(`invalid syntax in receivers config; discord integration is available in Alertmanager >= 0.25.0`)
}
return tc.HTTPConfig.sanitize(amVersion, logger)
if dc.Content != "" && lessThanV0_28 {
msg := "'content' supported in Alertmanager >= 0.28.0 only - dropping field from provided config"
logger.Warn(msg, "current_version", amVersion.String())
dc.Content = ""
}
if dc.Username != "" && lessThanV0_28 {
msg := "'username' supported in Alertmanager >= 0.28.0 only - dropping field from provided config"
logger.Warn(msg, "current_version", amVersion.String())
dc.Username = ""
}
if dc.AvatarURL != "" && lessThanV0_28 {
msg := "'avatar_url' supported in Alertmanager >= 0.28.0 only - dropping field from provided config"
logger.Warn(msg, "current_version", amVersion.String())
dc.AvatarURL = ""
}
return dc.HTTPConfig.sanitize(amVersion, logger)
}
func (tc *webexConfig) sanitize(amVersion semver.Version, logger *slog.Logger) error {

View file

@ -2362,6 +2362,9 @@ func TestSanitizeConfig(t *testing.T) {
versionDiscordAllowed := semver.Version{Major: 0, Minor: 25}
versionDiscordNotAllowed := semver.Version{Major: 0, Minor: 24}
versionDiscordMessageFieldsAllowed := semver.Version{Major: 0, Minor: 28}
versionDiscordMessageFieldsNotAllowed := semver.Version{Major: 0, Minor: 27}
versionMSteamsV2Allowed := semver.Version{Major: 0, Minor: 28}
versionMSteamsV2NotAllowed := semver.Version{Major: 0, Minor: 27}
@ -2613,6 +2616,108 @@ func TestSanitizeConfig(t *testing.T) {
},
expectErr: true,
},
{
name: "Test content is dropped in discord config for unsupported versions",
againstVersion: versionDiscordMessageFieldsNotAllowed,
in: &alertmanagerConfig{
Receivers: []*receiver{
{
DiscordConfigs: []*discordConfig{
{
WebhookURL: "http://example.com",
Content: "content added for unsupported version",
},
},
},
},
},
golden: "test_content_field_dropped_in_discord_config_for_unsupported_versions.golden",
},
{
name: "Test content is added in discord config for supported versions",
againstVersion: versionDiscordMessageFieldsAllowed,
in: &alertmanagerConfig{
Receivers: []*receiver{
{
DiscordConfigs: []*discordConfig{
{
WebhookURL: "http://example.com",
Content: "content added for supported version",
},
},
},
},
},
golden: "test_content_field_added_in_discord_config_for_supported_versions.golden",
},
{
name: "Test username is dropped in discord config for unsupported versions",
againstVersion: versionDiscordMessageFieldsNotAllowed,
in: &alertmanagerConfig{
Receivers: []*receiver{
{
DiscordConfigs: []*discordConfig{
{
WebhookURL: "http://example.com",
Username: "discord_admin",
},
},
},
},
},
golden: "test_username_field_dropped_in_discord_config_for_unsupported_versions.golden",
},
{
name: "Test username is added in discord config for supported versions",
againstVersion: versionDiscordMessageFieldsAllowed,
in: &alertmanagerConfig{
Receivers: []*receiver{
{
DiscordConfigs: []*discordConfig{
{
WebhookURL: "http://example.com",
Username: "discord_admin",
},
},
},
},
},
golden: "test_username_field_added_in_discord_config_for_supported_versions.golden",
},
{
name: "Test avatar_url is dropped in discord config for unsupported versions",
againstVersion: versionDiscordMessageFieldsNotAllowed,
in: &alertmanagerConfig{
Receivers: []*receiver{
{
DiscordConfigs: []*discordConfig{
{
WebhookURL: "http://example.com",
AvatarURL: "http://example.com/discord_avatar",
},
},
},
},
},
golden: "test_avatar_url_field_dropped_in_discord_config_for_unsupported_versions.golden",
},
{
name: "Test avatar_url is added in discord config for supported versions",
againstVersion: versionDiscordMessageFieldsAllowed,
in: &alertmanagerConfig{
Receivers: []*receiver{
{
DiscordConfigs: []*discordConfig{
{
WebhookURL: "http://example.com",
AvatarURL: "http://example.com/discord_avatar",
},
},
},
},
},
golden: "test_avatar_url_field_added_in_discord_config_for_supported_versions.golden",
},
{
name: "webex_config for supported versions",
againstVersion: versionWebexAllowed,

View file

@ -0,0 +1,6 @@
receivers:
- name: ""
discord_configs:
- webhook_url: http://example.com
avatar_url: http://example.com/discord_avatar
templates: []

View file

@ -0,0 +1,5 @@
receivers:
- name: ""
discord_configs:
- webhook_url: http://example.com
templates: []

View file

@ -0,0 +1,6 @@
receivers:
- name: ""
discord_configs:
- webhook_url: http://example.com
content: content added for supported version
templates: []

View file

@ -0,0 +1,5 @@
receivers:
- name: ""
discord_configs:
- webhook_url: http://example.com
templates: []

View file

@ -0,0 +1,6 @@
receivers:
- name: ""
discord_configs:
- webhook_url: http://example.com
username: discord_admin
templates: []

View file

@ -0,0 +1,5 @@
receivers:
- name: ""
discord_configs:
- webhook_url: http://example.com
templates: []

View file

@ -368,6 +368,9 @@ type discordConfig struct {
WebhookURL string `yaml:"webhook_url,omitempty"`
Title string `yaml:"title,omitempty"`
Message string `yaml:"message,omitempty"`
Content string `yaml:"content,omitempty"`
Username string `yaml:"username,omitempty"`
AvatarURL string `yaml:"avatar_url,omitempty"`
}
type webexConfig struct {