mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Plugins: Ensure catching all appropriate 4xx api/ds/query scenarios (#47565)
* catch ds 404s * catch plugin errs * go step back
This commit is contained in:
parent
7bb4f5cd9b
commit
c8a71a2f91
@ -10,6 +10,7 @@ import (
|
||||
"github.com/grafana/grafana/pkg/api/dtos"
|
||||
"github.com/grafana/grafana/pkg/api/response"
|
||||
"github.com/grafana/grafana/pkg/models"
|
||||
"github.com/grafana/grafana/pkg/plugins/backendplugin"
|
||||
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
||||
"github.com/grafana/grafana/pkg/services/query"
|
||||
"github.com/grafana/grafana/pkg/services/sqlstore"
|
||||
@ -18,17 +19,6 @@ import (
|
||||
"github.com/grafana/grafana/pkg/web"
|
||||
)
|
||||
|
||||
func (hs *HTTPServer) handleQueryMetricsError(err error) *response.NormalResponse {
|
||||
if errors.Is(err, models.ErrDataSourceAccessDenied) {
|
||||
return response.Error(http.StatusForbidden, "Access denied to data source", err)
|
||||
}
|
||||
var badQuery *query.ErrBadQuery
|
||||
if errors.As(err, &badQuery) {
|
||||
return response.Error(http.StatusBadRequest, util.Capitalize(badQuery.Message), err)
|
||||
}
|
||||
return response.Error(http.StatusInternalServerError, "Query data error", err)
|
||||
}
|
||||
|
||||
// QueryMetricsV2 returns query metrics.
|
||||
// POST /api/ds/query DataSource query w/ expressions
|
||||
func (hs *HTTPServer) QueryMetricsV2(c *models.ReqContext) response.Response {
|
||||
@ -44,6 +34,25 @@ func (hs *HTTPServer) QueryMetricsV2(c *models.ReqContext) response.Response {
|
||||
return toJsonStreamingResponse(resp)
|
||||
}
|
||||
|
||||
func (hs *HTTPServer) handleQueryMetricsError(err error) *response.NormalResponse {
|
||||
if errors.Is(err, models.ErrDataSourceAccessDenied) {
|
||||
return response.Error(http.StatusForbidden, "Access denied to data source", err)
|
||||
}
|
||||
if errors.Is(err, models.ErrDataSourceNotFound) {
|
||||
return response.Error(http.StatusNotFound, "Data source not found", err)
|
||||
}
|
||||
var badQuery *query.ErrBadQuery
|
||||
if errors.As(err, &badQuery) {
|
||||
return response.Error(http.StatusBadRequest, util.Capitalize(badQuery.Message), err)
|
||||
}
|
||||
|
||||
if errors.Is(err, backendplugin.ErrPluginNotRegistered) {
|
||||
return response.Error(http.StatusNotFound, "Plugin not found", err)
|
||||
}
|
||||
|
||||
return response.Error(http.StatusInternalServerError, "Query data error", err)
|
||||
}
|
||||
|
||||
func parseDashboardQueryParams(params map[string]string) (models.GetDashboardQuery, int64, error) {
|
||||
query := models.GetDashboardQuery{}
|
||||
|
||||
@ -101,8 +110,8 @@ func checkDashboardAndPanel(ctx context.Context, ss sqlstore.Store, query models
|
||||
return models.ErrDashboardPanelNotFound
|
||||
}
|
||||
|
||||
// QueryMetricsV2 returns query metrics.
|
||||
// POST /api/ds/query DataSource query w/ expressions
|
||||
// QueryMetricsFromDashboard returns query metrics.
|
||||
// POST /dashboards/org/:orgId/uid/:dashboardUid/panels/:panelId/query DataSource query w/ expressions
|
||||
func (hs *HTTPServer) QueryMetricsFromDashboard(c *models.ReqContext) response.Response {
|
||||
// check feature flag
|
||||
if !hs.Features.IsEnabled(featuremgmt.FlagValidatedQueries) {
|
||||
|
Loading…
Reference in New Issue
Block a user