Chore: Change response status for dashboard import with invalid input (#81521)

* Return BadRequest when dashboard import failed due to invalid input
This commit is contained in:
Tania
2024-01-30 16:57:01 +01:00
committed by GitHub
parent 27f3cec094
commit b84dde7b4a
2 changed files with 8 additions and 9 deletions
+5
View File
@@ -1,6 +1,7 @@
package api
import (
"errors"
"net/http"
"github.com/grafana/grafana/pkg/api/apierrors"
@@ -10,6 +11,7 @@ import (
"github.com/grafana/grafana/pkg/services/accesscontrol"
contextmodel "github.com/grafana/grafana/pkg/services/contexthandler/model"
"github.com/grafana/grafana/pkg/services/dashboardimport"
"github.com/grafana/grafana/pkg/services/dashboardimport/utils"
"github.com/grafana/grafana/pkg/services/dashboards"
"github.com/grafana/grafana/pkg/services/pluginsintegration/pluginstore"
"github.com/grafana/grafana/pkg/services/quota"
@@ -77,6 +79,9 @@ func (api *ImportDashboardAPI) ImportDashboard(c *contextmodel.ReqContext) respo
req.User = c.SignedInUser
resp, err := api.dashboardImportService.ImportDashboard(c.Req.Context(), &req)
if err != nil {
if errors.Is(err, utils.ErrDashboardInputMissing) {
return response.Error(http.StatusBadRequest, err.Error(), err)
}
return apierrors.ToDashboardErrorResponse(c.Req.Context(), api.pluginStore, err)
}
@@ -2,6 +2,7 @@ package utils
import (
"encoding/json"
"errors"
"fmt"
"regexp"
@@ -11,14 +12,7 @@ import (
)
var varRegex = regexp.MustCompile(`(\$\{.+?\})`)
type DashboardInputMissingError struct {
VariableName string
}
func (e DashboardInputMissingError) Error() string {
return fmt.Sprintf("Dashboard input variable: %v missing from import command", e.VariableName)
}
var ErrDashboardInputMissing = errors.New("missing dashboard input variable")
type DashTemplateEvaluator struct {
template *simplejson.Json
@@ -63,7 +57,7 @@ func (e *DashTemplateEvaluator) Eval() (*simplejson.Json, error) {
}
if input == nil {
return nil, &DashboardInputMissingError{VariableName: inputName}
return nil, fmt.Errorf("dashboard import failed: %w %s", ErrDashboardInputMissing, inputName)
}
e.variables["${"+inputName+"}"] = input.Value