From a797126aab74448ec51ae14913a21bc9e52b4e37 Mon Sep 17 00:00:00 2001 From: Jan Horstmann Date: Mon, 12 Dec 2022 17:42:04 +0100 Subject: [PATCH 1/3] Responder type escalation in alert policies This commit allows to set responder type `escalation` to alert policies. Closes: #118 --- policy/request.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/policy/request.go b/policy/request.go index f224965..50cff7c 100644 --- a/policy/request.go +++ b/policy/request.go @@ -681,8 +681,8 @@ func ValidateDelayAction(action DelayAction) error { func ValidateResponders(responders *[]alert.Responder) error { for _, responder := range *responders { - if responder.Type != alert.UserResponder && responder.Type != alert.TeamResponder { - return errors.New("responder type for alert policy should be one of team or user") + if responder.Type != alert.UserResponder && responder.Type != alert.TeamResponder && responder.Type != alert.EscalationResponder { + return errors.New("responder type for alert policy should be one of team, user or escalation") } if responder.Id == "" { return errors.New("responder id should be provided") From bed2246632a48ddaf999e1111823ee0bf044cc75 Mon Sep 17 00:00:00 2001 From: Arjun Rajpal Date: Mon, 26 Jun 2023 18:11:09 +0530 Subject: [PATCH 2/3] add schedule responder type in policy --- alert/responder.go | 1 + policy/policy_test.go | 48 +++++++++++++++++++++++++++++++++++++++++-- policy/request.go | 4 ++-- 3 files changed, 49 insertions(+), 4 deletions(-) diff --git a/alert/responder.go b/alert/responder.go index 63d37e1..cc93cf1 100644 --- a/alert/responder.go +++ b/alert/responder.go @@ -7,6 +7,7 @@ const ( TeamResponder ResponderType = "team" EscalationResponder ResponderType = "escalation" ScheduleResponder ResponderType = "schedule" + GroupResponder ResponderType = "group" ) type Responder struct { diff --git a/policy/policy_test.go b/policy/policy_test.go index 7ad333d..ee12fb1 100644 --- a/policy/policy_test.go +++ b/policy/policy_test.go @@ -126,14 +126,14 @@ func TestCreateAlertPolicy_Validate(t *testing.T) { req.Responders = &[]alert.Responder{ { - Type: alert.ScheduleResponder, + Type: alert.GroupResponder, Name: "", Id: "", Username: "", }, } err = req.Validate() - assert.Equal(t, err.Error(), errors.New("responder type for alert policy should be one of team or user").Error()) + assert.Equal(t, err.Error(), errors.New("responder type for alert policy should be one of team, user, escalation or schedule").Error()) req.Responders = &[]alert.Responder{ { @@ -179,6 +179,50 @@ func TestCreateAlertPolicy_Validate(t *testing.T) { err = req.Validate() assert.Nil(t, err) + req.Responders = &[]alert.Responder{ + { + Type: alert.EscalationResponder, + Name: "", + Id: "", + Username: "user1", + }, + } + err = req.Validate() + assert.Equal(t, err.Error(), errors.New("responder id should be provided").Error()) + + req.Responders = &[]alert.Responder{ + { + Type: alert.EscalationResponder, + Name: "", + Id: "teamId", + Username: "", + }, + } + err = req.Validate() + assert.Nil(t, err) + + req.Responders = &[]alert.Responder{ + { + Type: alert.ScheduleResponder, + Name: "", + Id: "", + Username: "user1", + }, + } + err = req.Validate() + assert.Equal(t, err.Error(), errors.New("responder id should be provided").Error()) + + req.Responders = &[]alert.Responder{ + { + Type: alert.ScheduleResponder, + Name: "", + Id: "teamId", + Username: "", + }, + } + err = req.Validate() + assert.Nil(t, err) + req.Priority = "asd" err = req.Validate() assert.Equal(t, err.Error(), errors.New("Priority should be one of these: 'P1', 'P2', 'P3', 'P4' and 'P5'").Error()) diff --git a/policy/request.go b/policy/request.go index 50cff7c..a308fe4 100644 --- a/policy/request.go +++ b/policy/request.go @@ -681,8 +681,8 @@ func ValidateDelayAction(action DelayAction) error { func ValidateResponders(responders *[]alert.Responder) error { for _, responder := range *responders { - if responder.Type != alert.UserResponder && responder.Type != alert.TeamResponder && responder.Type != alert.EscalationResponder { - return errors.New("responder type for alert policy should be one of team, user or escalation") + if responder.Type != alert.UserResponder && responder.Type != alert.TeamResponder && responder.Type != alert.EscalationResponder && responder.Type != alert.ScheduleResponder { + return errors.New("responder type for alert policy should be one of team, user, escalation or schedule") } if responder.Id == "" { return errors.New("responder id should be provided") From ba3b819faffd33dfe5dc0d6d7050efc5488b5d9b Mon Sep 17 00:00:00 2001 From: Arjun Rajpal Date: Tue, 4 Jul 2023 13:50:11 +0530 Subject: [PATCH 3/3] fix test --- alert/responder.go | 1 - policy/policy_test.go | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/alert/responder.go b/alert/responder.go index cc93cf1..63d37e1 100644 --- a/alert/responder.go +++ b/alert/responder.go @@ -7,7 +7,6 @@ const ( TeamResponder ResponderType = "team" EscalationResponder ResponderType = "escalation" ScheduleResponder ResponderType = "schedule" - GroupResponder ResponderType = "group" ) type Responder struct { diff --git a/policy/policy_test.go b/policy/policy_test.go index ee12fb1..e1cf0da 100644 --- a/policy/policy_test.go +++ b/policy/policy_test.go @@ -126,7 +126,7 @@ func TestCreateAlertPolicy_Validate(t *testing.T) { req.Responders = &[]alert.Responder{ { - Type: alert.GroupResponder, + Type: "", Name: "", Id: "", Username: "",