Peakq: use generic query function (#82121)

Co-authored-by: Kyle Brandt <kyle@grafana.com>
This commit is contained in:
Ryan McKinley
2024-02-08 05:29:42 -08:00
committed by GitHub
parent 685ba7d287
commit 4884194879
7 changed files with 69 additions and 64 deletions

View File

@@ -14,8 +14,8 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/registry/rest"
common "github.com/grafana/grafana/pkg/apis/common/v0alpha1"
peakq "github.com/grafana/grafana/pkg/apis/peakq/v0alpha1"
query "github.com/grafana/grafana/pkg/apis/query/v0alpha1"
)
type renderREST struct {
@@ -198,7 +198,7 @@ func Render(qt peakq.QueryTemplateSpec, selectedValues map[string][]string) (*pe
if err != nil {
return nil, err
}
u := common.Unstructured{}
u := query.GenericDataQuery{}
err = u.UnmarshalJSON(raw)
if err != nil {
return nil, err

View File

@@ -3,8 +3,8 @@ package peakq
import (
"github.com/grafana/grafana-plugin-sdk-go/data"
common "github.com/grafana/grafana/pkg/apis/common/v0alpha1"
peakq "github.com/grafana/grafana/pkg/apis/peakq/v0alpha1"
query "github.com/grafana/grafana/pkg/apis/query/v0alpha1"
)
var basicTemplateSpec = peakq.QueryTemplateSpec{
@@ -38,20 +38,18 @@ var basicTemplateSpec = peakq.QueryTemplateSpec{
},
},
Properties: common.Unstructured{
Object: map[string]any{
"refId": "A", // TODO: Set when Where?
"datasource": map[string]any{
"type": "prometheus",
"uid": "foo", // TODO: Probably a default templating thing to set this.
},
"editorMode": "builder",
"expr": "metricName + metricName + 42",
"instant": true,
"range": false,
"exemplar": false,
Properties: query.NewGenericDataQuery(map[string]any{
"refId": "A", // TODO: Set when Where?
"datasource": map[string]any{
"type": "prometheus",
"uid": "foo", // TODO: Probably a default templating thing to set this.
},
},
"editorMode": "builder",
"expr": "metricName + metricName + 42",
"instant": true,
"range": false,
"exemplar": false,
}),
},
},
}
@@ -60,19 +58,17 @@ var basicTemplateRenderedTargets = []peakq.Target{
{
DataType: data.FrameTypeUnknown,
//DataTypeVersion: data.FrameTypeVersion{0, 0},
Properties: common.Unstructured{
Object: map[string]any{
"refId": "A", // TODO: Set when Where?
"datasource": map[string]any{
"type": "prometheus",
"uid": "foo", // TODO: Probably a default templating thing to set this.
},
"editorMode": "builder",
"expr": "up + up + 42",
"instant": true,
"range": false,
"exemplar": false,
Properties: query.NewGenericDataQuery(map[string]any{
"refId": "A", // TODO: Set when Where?
"datasource": map[string]any{
"type": "prometheus",
"uid": "foo", // TODO: Probably a default templating thing to set this.
},
},
"editorMode": "builder",
"expr": "up + up + 42",
"instant": true,
"range": false,
"exemplar": false,
}),
},
}

View File

@@ -11,7 +11,9 @@ import (
func TestRender(t *testing.T) {
rT, err := Render(basicTemplateSpec, map[string][]string{"metricName": {"up"}})
require.NoError(t, err)
require.Equal(t, basicTemplateRenderedTargets[0].Properties.Object["expr"], rT.Targets[0].Properties.Object["expr"])
require.Equal(t,
basicTemplateRenderedTargets[0].Properties.AdditionalProperties()["expr"],
rT.Targets[0].Properties.AdditionalProperties()["expr"])
b, _ := json.MarshalIndent(basicTemplateSpec, "", " ")
fmt.Println(string(b))
}

View File

@@ -6,8 +6,8 @@ import (
"github.com/grafana/grafana-plugin-sdk-go/data"
"github.com/stretchr/testify/require"
common "github.com/grafana/grafana/pkg/apis/common/v0alpha1"
peakq "github.com/grafana/grafana/pkg/apis/peakq/v0alpha1"
query "github.com/grafana/grafana/pkg/apis/query/v0alpha1"
)
var nestedFieldRender = peakq.QueryTemplateSpec{
@@ -33,13 +33,11 @@ var nestedFieldRender = peakq.QueryTemplateSpec{
},
},
},
Properties: common.Unstructured{
Object: map[string]any{
"nestedObject": map[string]any{
"anArray": []any{"foo", .2},
},
Properties: query.NewGenericDataQuery(map[string]any{
"nestedObject": map[string]any{
"anArray": []any{"foo", .2},
},
},
}),
},
},
}
@@ -59,13 +57,12 @@ var nestedFieldRenderedTargets = []peakq.Target{
},
},
//DataTypeVersion: data.FrameTypeVersion{0, 0},
Properties: common.Unstructured{
Object: map[string]any{
Properties: query.NewGenericDataQuery(
map[string]any{
"nestedObject": map[string]any{
"anArray": []any{"up", .2},
},
},
},
}),
},
}
@@ -121,11 +118,9 @@ var multiVarTemplate = peakq.QueryTemplateSpec{
},
},
Properties: common.Unstructured{
Object: map[string]any{
"expr": "1 + metricName + 1 + anotherMetric + metricName",
},
},
Properties: query.NewGenericDataQuery(map[string]any{
"expr": "1 + metricName + 1 + anotherMetric + metricName",
}),
},
},
}
@@ -161,11 +156,9 @@ var multiVarRenderedTargets = []peakq.Target{
},
},
//DataTypeVersion: data.FrameTypeVersion{0, 0},
Properties: common.Unstructured{
Object: map[string]any{
"expr": "1 + up + 1 + sloths_do_like_a_good_nap + up",
},
},
Properties: query.NewGenericDataQuery(map[string]any{
"expr": "1 + up + 1 + sloths_do_like_a_good_nap + up",
}),
},
}
@@ -190,11 +183,9 @@ func TestRenderWithRune(t *testing.T) {
},
Targets: []peakq.Target{
{
Properties: common.Unstructured{
Object: map[string]any{
"message": "🐦 name!",
},
},
Properties: query.NewGenericDataQuery(map[string]any{
"message": "🐦 name!",
}),
Variables: map[string][]peakq.VariableReplacement{
"name": {
{
@@ -217,5 +208,5 @@ func TestRenderWithRune(t *testing.T) {
rq, err := Render(qt, selectedValues)
require.NoError(t, err)
require.Equal(t, "🐦 🦥!", rq.Targets[0].Properties.Object["message"])
require.Equal(t, "🐦 🦥!", rq.Targets[0].Properties.AdditionalProperties()["message"])
}