datasources: querier: handle the grafana-ds (#103980)

* datasources: querier: handle the grafana-ds

* updated dependencies
This commit is contained in:
Gábor Farkas
2025-04-15 14:55:39 +02:00
committed by GitHub
parent eac312753f
commit 66a04babe1
5 changed files with 158 additions and 2 deletions
+54
View File
@@ -3,6 +3,7 @@ package query
import (
"context"
"encoding/json"
"errors"
"fmt"
"os"
"path"
@@ -200,6 +201,59 @@ func TestSqlInputs(t *testing.T) {
require.Equal(t, parsedRequestInfo.SqlInputs["B"], struct{}{})
}
func TestGrafanaDS(t *testing.T) {
ctx := context.Background()
parser := newQueryParser(expr.NewExpressionQueryReader(featuremgmt.WithFeatures()),
&noLegacyRetriever{}, tracing.InitializeTracerForTest(), log.NewNopLogger())
t.Run("grafana ds without type", func(t *testing.T) {
parsed, err := parser.parseRequest(ctx, &query.QueryDataRequest{
QueryDataRequest: data.QueryDataRequest{
Queries: []data.DataQuery{{
CommonQueryProperties: data.CommonQueryProperties{
RefID: "A",
Datasource: &data.DataSourceRef{
UID: "grafana",
},
},
}},
},
})
require.NoError(t, err)
require.Len(t, parsed.Requests, 1)
require.Equal(t, "grafana", parsed.Requests[0].PluginId)
require.Equal(t, "grafana", parsed.Requests[0].UID)
})
t.Run("grafana ds with different type", func(t *testing.T) {
parsed, err := parser.parseRequest(ctx, &query.QueryDataRequest{
QueryDataRequest: data.QueryDataRequest{
Queries: []data.DataQuery{{
CommonQueryProperties: data.CommonQueryProperties{
RefID: "A",
Datasource: &data.DataSourceRef{
UID: "grafana",
Type: "datasource",
},
},
}},
},
})
require.NoError(t, err)
require.Len(t, parsed.Requests, 1)
require.Equal(t, "grafana", parsed.Requests[0].PluginId)
require.Equal(t, "grafana", parsed.Requests[0].UID)
})
}
type noLegacyRetriever struct{}
var errNoLegacy = errors.New("legacy dds retriever reached, it should not")
func (s *noLegacyRetriever) GetDataSourceFromDeprecatedFields(ctx context.Context, name string, id int64) (*data.DataSourceRef, error) {
return nil, errNoLegacy
}
type legacyDataSourceRetriever struct{}
func (s *legacyDataSourceRetriever) GetDataSourceFromDeprecatedFields(ctx context.Context, name string, id int64) (*data.DataSourceRef, error) {