From 2ef06e614080346cea2b13667668a623ef76248d Mon Sep 17 00:00:00 2001 From: marco Date: Thu, 30 May 2024 14:08:19 +0200 Subject: [PATCH] pkg/csprofiles: default duration and type for partial configuration --- pkg/csprofiles/csprofiles.go | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/pkg/csprofiles/csprofiles.go b/pkg/csprofiles/csprofiles.go index 42509eaceae..5ad58ea1937 100644 --- a/pkg/csprofiles/csprofiles.go +++ b/pkg/csprofiles/csprofiles.go @@ -21,7 +21,10 @@ type Runtime struct { Logger *log.Entry `json:"-" yaml:"-"` } -const defaultDuration = "4h" +const ( + defaultDuration = "4h" + defaultType = "ban" +) func NewProfile(profilesCfg []*csconfig.ProfileCfg) ([]*Runtime, error) { var err error @@ -77,7 +80,7 @@ func NewProfile(profilesCfg []*csconfig.ProfileCfg) ([]*Runtime, error) { for _, decision := range profile.Decisions { if runtime.RuntimeDurationExpr == nil { var duration string - if decision.Duration != nil { + if decision.Duration != nil && *decision.Duration != "" { duration = *decision.Duration } else { runtime.Logger.Warningf("No duration specified for %s, using default duration %s", profile.Name, defaultDuration) @@ -121,8 +124,10 @@ func (Profile *Runtime) GenerateDecisionFromProfile(Alert *models.Alert) ([]*mod /*some fields are populated from the reference object : duration, scope, type*/ decision.Duration = new(string) - if refDecision.Duration != nil { + if refDecision.Duration != nil && *refDecision.Duration != "" { *decision.Duration = *refDecision.Duration + } else { + *decision.Duration = defaultDuration } if Profile.Cfg.DurationExpr != "" && Profile.RuntimeDurationExpr != nil { @@ -145,7 +150,11 @@ func (Profile *Runtime) GenerateDecisionFromProfile(Alert *models.Alert) ([]*mod } decision.Type = new(string) - *decision.Type = *refDecision.Type + if refDecision.Type != nil && *refDecision.Type != "" { + *decision.Type = *refDecision.Type + } else { + *decision.Type = defaultType + } /*for the others, let's populate it from the alert and its source*/ decision.Value = new(string)