Skip to content

Commit bae1123

Browse files
committed
feat: add jira fields config to AM secret
Signed-off-by: Hélia Barroso <helia_barroso@hotmail.com>
1 parent 59d278e commit bae1123

8 files changed

+188
-2
lines changed

pkg/alertmanager/amcfg.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3122,6 +3122,20 @@ func (jc *jiraConfig) sanitize(amVersion semver.Version, logger *slog.Logger) er
31223122
}
31233123
}
31243124
}
3125+
3126+
lessThanV0_30 := amVersion.LT(semver.MustParse("0.30.0"))
3127+
if jc.Summary.EnableUpdate != nil && lessThanV0_30 {
3128+
msg := "'enable_update' on 'summary' supported in Alertmanager >= 0.30.0 only - dropping field from provided config"
3129+
logger.Warn(msg, "current_version", amVersion.String())
3130+
jc.Summary.EnableUpdate = nil
3131+
}
3132+
3133+
if jc.Description.EnableUpdate != nil && lessThanV0_30 {
3134+
msg := "'enable_update' on 'description' supported in Alertmanager >= 0.30.0 only - dropping field from provided config"
3135+
logger.Warn(msg, "current_version", amVersion.String())
3136+
jc.Description.EnableUpdate = nil
3137+
}
3138+
31253139
if jc.APIURL != "" {
31263140
if _, err := validation.ValidateURL(jc.APIURL); err != nil {
31273141
return fmt.Errorf("invalid 'api_url': %w", err)

pkg/alertmanager/amcfg_test.go

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6857,6 +6857,10 @@ func TestSanitizeJiraConfig(t *testing.T) {
68576857

68586858
versionAPITypeAllowed := semver.Version{Major: 0, Minor: 29}
68596859
versionAPITypeNotAllowed := semver.Version{Major: 0, Minor: 28}
6860+
6861+
versionEnableUpdateAllowed := semver.Version{Major: 0, Minor: 30}
6862+
versionEnableUpdateNotAllowed := semver.Version{Major: 0, Minor: 29}
6863+
68606864
for _, tc := range []struct {
68616865
name string
68626866
againstVersion semver.Version
@@ -7008,6 +7012,120 @@ func TestSanitizeJiraConfig(t *testing.T) {
70087012
},
70097013
expectErr: true,
70107014
},
7015+
{
7016+
name: "jira_configs with enable_update on summary",
7017+
againstVersion: versionEnableUpdateAllowed,
7018+
in: &alertmanagerConfig{
7019+
Receivers: []*receiver{
7020+
{
7021+
JiraConfigs: []*jiraConfig{
7022+
{
7023+
APIURL: "http://issues.example.com",
7024+
Project: "Monitoring",
7025+
IssueType: "Bug",
7026+
Summary: jiraFieldConfig{
7027+
Template: "{{ template \"jira.default.summary\" . }}",
7028+
EnableUpdate: ptr.To(false),
7029+
},
7030+
},
7031+
},
7032+
},
7033+
},
7034+
},
7035+
golden: "jira_config_with_enable_update_summary.golden",
7036+
},
7037+
{
7038+
name: "jira_configs with enable_update on description",
7039+
againstVersion: versionEnableUpdateAllowed,
7040+
in: &alertmanagerConfig{
7041+
Receivers: []*receiver{
7042+
{
7043+
JiraConfigs: []*jiraConfig{
7044+
{
7045+
APIURL: "http://issues.example.com",
7046+
Project: "Monitoring",
7047+
IssueType: "Bug",
7048+
Description: jiraFieldConfig{
7049+
Template: "{{ template \"jira.default.description\" . }}",
7050+
EnableUpdate: ptr.To(false),
7051+
},
7052+
},
7053+
},
7054+
},
7055+
},
7056+
},
7057+
golden: "jira_config_with_enable_update_description.golden",
7058+
},
7059+
{
7060+
name: "jira_configs with enable_update on summary version not supported",
7061+
againstVersion: versionEnableUpdateNotAllowed,
7062+
in: &alertmanagerConfig{
7063+
Receivers: []*receiver{
7064+
{
7065+
JiraConfigs: []*jiraConfig{
7066+
{
7067+
APIURL: "http://issues.example.com",
7068+
Project: "Monitoring",
7069+
IssueType: "Bug",
7070+
Summary: jiraFieldConfig{
7071+
Template: "{{ template \"jira.default.summary\" . }}",
7072+
EnableUpdate: ptr.To(false),
7073+
},
7074+
},
7075+
},
7076+
},
7077+
},
7078+
},
7079+
golden: "jira_config_with_enable_update_summary_version_not_supported.golden",
7080+
},
7081+
{
7082+
name: "jira_configs with enable_update on description version not supported",
7083+
againstVersion: versionEnableUpdateNotAllowed,
7084+
in: &alertmanagerConfig{
7085+
Receivers: []*receiver{
7086+
{
7087+
JiraConfigs: []*jiraConfig{
7088+
{
7089+
APIURL: "http://issues.example.com",
7090+
Project: "Monitoring",
7091+
IssueType: "Bug",
7092+
Description: jiraFieldConfig{
7093+
Template: "{{ template \"jira.default.description\" . }}",
7094+
EnableUpdate: ptr.To(false),
7095+
},
7096+
},
7097+
},
7098+
},
7099+
},
7100+
},
7101+
golden: "jira_config_with_enable_update_description_version_not_supported.golden",
7102+
},
7103+
{
7104+
name: "jira_configs with enable_update on both summary and description version not supported",
7105+
againstVersion: versionEnableUpdateNotAllowed,
7106+
in: &alertmanagerConfig{
7107+
Receivers: []*receiver{
7108+
{
7109+
JiraConfigs: []*jiraConfig{
7110+
{
7111+
APIURL: "http://issues.example.com",
7112+
Project: "Monitoring",
7113+
IssueType: "Bug",
7114+
Summary: jiraFieldConfig{
7115+
Template: "{{ template \"jira.default.summary\" . }}",
7116+
EnableUpdate: ptr.To(false),
7117+
},
7118+
Description: jiraFieldConfig{
7119+
Template: "{{ template \"jira.default.description\" . }}",
7120+
EnableUpdate: ptr.To(false),
7121+
},
7122+
},
7123+
},
7124+
},
7125+
},
7126+
},
7127+
golden: "jira_config_with_enable_update_both_version_not_supported.golden",
7128+
},
70117129
} {
70127130
t.Run(tc.name, func(t *testing.T) {
70137131
err := tc.in.sanitize(tc.againstVersion, logger)

pkg/alertmanager/testdata/jira_config_with_enable_update_both_version_not_supported.golden

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/alertmanager/testdata/jira_config_with_enable_update_description.golden

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/alertmanager/testdata/jira_config_with_enable_update_description_version_not_supported.golden

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/alertmanager/testdata/jira_config_with_enable_update_summary.golden

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/alertmanager/testdata/jira_config_with_enable_update_summary_version_not_supported.golden

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/alertmanager/types.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -461,8 +461,8 @@ type jiraConfig struct {
461461
SendResolved *bool `yaml:"send_resolved,omitempty"`
462462
APIURL string `yaml:"api_url,omitempty"`
463463
Project string `yaml:"project,omitempty"`
464-
Summary string `yaml:"summary,omitempty"`
465-
Description string `yaml:"description,omitempty"`
464+
Summary jiraFieldConfig `yaml:"summary,omitempty"`
465+
Description jiraFieldConfig `yaml:"description,omitempty"`
466466
Labels []string `yaml:"labels,omitempty"`
467467
Priority string `yaml:"priority,omitempty"`
468468
IssueType string `yaml:"issue_type,omitempty"`
@@ -474,6 +474,11 @@ type jiraConfig struct {
474474
APIType string `yaml:"api_type,omitempty"`
475475
}
476476

477+
type jiraFieldConfig struct {
478+
Template string `yaml:"template,omitempty"`
479+
EnableUpdate *bool `yaml:"enable_update,omitempty"`
480+
}
481+
477482
type rocketchatAttachmentField struct {
478483
Short *bool `yaml:"short"`
479484
Title string `yaml:"title,omitempty"`

0 commit comments

Comments
 (0)