diff --git a/internal/automanagement/manager.go b/internal/automanagement/manager.go index eac8a61c9..90411b26f 100644 --- a/internal/automanagement/manager.go +++ b/internal/automanagement/manager.go @@ -2,9 +2,11 @@ package automanagement import ( "context" + "errors" "github.com/grafana/grafana-plugin-sdk-go/backend" "github.com/grafana/grafana-plugin-sdk-go/backend/instancemgmt" + "github.com/grafana/grafana-plugin-sdk-go/experimental/errorsource" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -27,7 +29,18 @@ func NewManager(instanceManager instancemgmt.InstanceManager) *Manager { func (m *Manager) QueryData(ctx context.Context, req *backend.QueryDataRequest) (*backend.QueryDataResponse, error) { h, err := m.Get(ctx, req.PluginContext) if err != nil { - return nil, err + if len(req.Queries) == 0 { + // shouldn't be possible, but just in case + return nil, err + } + var esErr errorsource.Error + ok := errors.As(err, &esErr) + if !ok { // not an errorsource error, return opaquely + return nil, err + } + resp := backend.NewQueryDataResponse() + errorsource.AddErrorToResponse(req.Queries[0].RefID, resp, err) + return resp, nil } if ds, ok := h.(backend.QueryDataHandler); ok { return ds.QueryData(ctx, req)