mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Chore: Improve save dashboard error messages (#35780)
Includes panel and dashboard id in alert extractor errors. Logs all non-400 dashboard errors. Fixes #35751
This commit is contained in:
committed by
GitHub
parent
866b2424ac
commit
477d4197fb
@@ -390,7 +390,7 @@ func (hs *HTTPServer) dashboardSaveErrorToApiResponse(err error) response.Respon
|
||||
if body := dashboardErr.Body(); body != nil {
|
||||
return response.JSON(dashboardErr.StatusCode, body)
|
||||
}
|
||||
if errors.Is(dashboardErr, models.ErrDashboardUpdateAccessDenied) {
|
||||
if dashboardErr.StatusCode != 400 {
|
||||
return response.Error(dashboardErr.StatusCode, dashboardErr.Error(), err)
|
||||
}
|
||||
return response.Error(dashboardErr.StatusCode, dashboardErr.Error(), nil)
|
||||
@@ -402,7 +402,7 @@ func (hs *HTTPServer) dashboardSaveErrorToApiResponse(err error) response.Respon
|
||||
|
||||
var validationErr alerting.ValidationError
|
||||
if ok := errors.As(err, &validationErr); ok {
|
||||
return response.Error(422, validationErr.Error(), nil)
|
||||
return response.Error(422, validationErr.Error(), err)
|
||||
}
|
||||
|
||||
var pluginErr models.UpdatePluginDashboardError
|
||||
|
||||
@@ -96,6 +96,26 @@ func (e *DashAlertExtractor) getAlertFromPanels(jsonWithPanels *simplejson.Json,
|
||||
return nil, ValidationError{Reason: "A numeric panel id property is missing"}
|
||||
}
|
||||
|
||||
addIdentifiersToValidationError := func(err error) error {
|
||||
if err == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
var validationErr ValidationError
|
||||
if ok := errors.As(err, &validationErr); ok {
|
||||
ve := ValidationError{
|
||||
Reason: validationErr.Reason,
|
||||
Err: validationErr.Err,
|
||||
PanelID: panelID,
|
||||
}
|
||||
if e.Dash != nil {
|
||||
ve.DashboardID = e.Dash.Id
|
||||
}
|
||||
return ve
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
// backward compatibility check, can be removed later
|
||||
enabled, hasEnabled := jsonAlert.CheckGet("enabled")
|
||||
if hasEnabled && !enabled.MustBool() {
|
||||
@@ -104,14 +124,14 @@ func (e *DashAlertExtractor) getAlertFromPanels(jsonWithPanels *simplejson.Json,
|
||||
|
||||
frequency, err := getTimeDurationStringToSeconds(jsonAlert.Get("frequency").MustString())
|
||||
if err != nil {
|
||||
return nil, ValidationError{Reason: err.Error()}
|
||||
return nil, addIdentifiersToValidationError(ValidationError{Reason: err.Error()})
|
||||
}
|
||||
|
||||
rawFor := jsonAlert.Get("for").MustString()
|
||||
|
||||
forValue, err := getForValue(rawFor)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, addIdentifiersToValidationError(err)
|
||||
}
|
||||
|
||||
alert := &models.Alert{
|
||||
|
||||
Reference in New Issue
Block a user