diff --git a/pkg/alertmanager/amcfg.go b/pkg/alertmanager/amcfg.go index 911d6ea59..f3802f1f2 100644 --- a/pkg/alertmanager/amcfg.go +++ b/pkg/alertmanager/amcfg.go @@ -1920,10 +1920,6 @@ func (cb *ConfigBuilder) convertGlobalJiraConfig(out *globalConfig, in *monitori return nil } - if cb.amVersion.LT(semver.MustParse("0.28.0")) { - return errors.New("jira integration requires Alertmanager >= 0.28.0") - } - if in.APIURL != nil { u, err := url.Parse(string(*in.APIURL)) if err != nil { @@ -3175,6 +3171,10 @@ func (cb *ConfigBuilder) checkAlertmanagerGlobalConfigResource( return err } + if err := cb.checkGlobalJiraConfig(gc.JiraConfig); err != nil { + return err + } + if err := cb.checkGlobalWebexConfig(gc.WebexConfig); err != nil { return err } @@ -3198,6 +3198,18 @@ func (cb *ConfigBuilder) checkGlobalTelegramConfig(tc *monitoringv1.GlobalTelegr return nil } +func (cb *ConfigBuilder) checkGlobalJiraConfig(jc *monitoringv1.GlobalJiraConfig) error { + if jc == nil { + return nil + } + + if cb.amVersion.LT(semver.MustParse("0.28.0")) { + return fmt.Errorf(`'jira' integration requires Alertmanager >= 0.28.0 - current %s`, cb.amVersion) + } + + return nil +} + func (cb *ConfigBuilder) checkGlobalWebexConfig(wc *monitoringv1.GlobalWebexConfig) error { if wc == nil { return nil diff --git a/pkg/alertmanager/validation/v1/validation.go b/pkg/alertmanager/validation/v1/validation.go index ae4b6a42d..a7e77bcfe 100644 --- a/pkg/alertmanager/validation/v1/validation.go +++ b/pkg/alertmanager/validation/v1/validation.go @@ -34,6 +34,10 @@ func ValidateAlertmanagerGlobalConfig(gc *monitoringv1.AlertmanagerGlobalConfig) return fmt.Errorf("telegram: %w", err) } + if err := validateGlobalJiraConfig(gc.JiraConfig); err != nil { + return fmt.Errorf("jira: %w", err) + } + if err := validateGlobalWebexConfig(gc.WebexConfig); err != nil { return fmt.Errorf("webex: %w", err) } @@ -57,6 +61,18 @@ func validatingTelegramConfig(tc *monitoringv1.GlobalTelegramConfig) error { return nil } +func validateGlobalJiraConfig(jc *monitoringv1.GlobalJiraConfig) error { + if jc == nil { + return nil + } + + if err := validation.ValidateURLPtr((*string)(jc.APIURL)); err != nil { + return fmt.Errorf("invalid apiURL: %w", err) + } + + return nil +} + func validateGlobalWebexConfig(wc *monitoringv1.GlobalWebexConfig) error { if wc == nil { return nil