Change alertValidator return type

This commit is contained in:
Sofia Papagiannaki 2020-10-12 10:49:40 +03:00
parent f728ece2db
commit ad933863e3
2 changed files with 19 additions and 18 deletions

View File

@ -10,6 +10,6 @@ const (
)
type alertValidator struct {
aFunc func(*models.Alert) (bool, string)
aFunc func(*models.Alert) error
aSeverity validatorSeverity
}

View File

@ -197,8 +197,8 @@ func (e *DashAlertExtractor) getAlertFromPanels(jsonWithPanels *simplejson.Json,
validationErrors := strings.Builder{}
validationWarnings := strings.Builder{}
for _, validator := range validators {
ok, reason := validator.aFunc(alert)
if ok {
err := validator.aFunc(alert)
if err == nil {
continue
}
@ -207,12 +207,12 @@ func (e *DashAlertExtractor) getAlertFromPanels(jsonWithPanels *simplejson.Json,
if validationErrors.Len() > 0 {
validationErrors.WriteString("\n")
}
validationErrors.WriteString(reason)
validationErrors.WriteString(err.Error())
case alertWarning:
if validationWarnings.Len() > 0 {
validationErrors.WriteString("\n")
}
validationWarnings.WriteString(reason)
validationWarnings.WriteString(err.Error())
}
}
if validationErrors.String() != "" {
@ -228,15 +228,14 @@ func (e *DashAlertExtractor) getAlertFromPanels(jsonWithPanels *simplejson.Json,
return alerts, nil
}
func validateAlertRule(alert *models.Alert) (ok bool, reason string) {
ok = alert.ValidToSave()
if !ok {
reason = fmt.Sprintf("Dashboard ID, Org ID or Panel ID is not correct, alertName=%v, panelId=%v, orgId=%v, dashboardId=%v", alert.Name, alert.PanelId, alert.OrgId, alert.DashboardId)
func validateAlertRule(alert *models.Alert) (err error) {
if !alert.ValidToSave() {
err = fmt.Errorf("Dashboard ID, Org ID or Panel ID is not correct, alertName=%v, panelId=%v, orgId=%v, dashboardId=%v", alert.Name, alert.PanelId, alert.OrgId, alert.DashboardId)
}
return ok, reason
return err
}
func validAlertJSON(alert *models.Alert) (ok bool, reason string) {
func validAlertJSON(alert *models.Alert) (err error) {
warnings := strings.Builder{}
for _, v := range alert.Settings.Get("notifications").MustArray() {
jsonModel := simplejson.NewFromAny(v)
@ -249,14 +248,16 @@ func validAlertJSON(alert *models.Alert) (ok bool, reason string) {
continue
}
ok = false
if warnings.Len() > 0 {
warnings.WriteString("\n")
}
warnings.WriteString(fmt.Sprintf("Alert contains notification identified by incorrect ID, alertName=%v, panelId=%v, notificationId=%v", alert.Name, alert.PanelId, id))
}
reason = warnings.String()
return ok, reason
reason := warnings.String()
if reason != "" {
err = fmt.Errorf(reason)
}
return err
}
// GetAlerts extracts alerts from the dashboard json and does full validation on the alert json data.
@ -312,12 +313,12 @@ func (e *DashAlertExtractor) extractAlerts(validators ...alertValidator) ([]*mod
// in the first validation pass.
func (e *DashAlertExtractor) ValidateAlerts() error {
_, err := e.extractAlerts(alertValidator{
aFunc: func(alert *models.Alert) (ok bool, reason string) {
ok = alert.OrgId != 0 && alert.PanelId != 0
aFunc: func(alert *models.Alert) (err error) {
ok := alert.OrgId != 0 && alert.PanelId != 0
if !ok {
reason = fmt.Sprintf("Org ID or Panel ID is not correct, alertName=%v, panelId=%v, orgId=%v", alert.Name, alert.PanelId, alert.OrgId)
err = fmt.Errorf("Org ID or Panel ID is not correct, alertName=%v, panelId=%v, orgId=%v", alert.Name, alert.PanelId, alert.OrgId)
}
return ok, reason
return err
},
aSeverity: alertError,
})