From d71266b8affc879e12411310de971f5da643f065 Mon Sep 17 00:00:00 2001 From: Kyle Brandt Date: Wed, 27 Mar 2024 08:48:08 -0400 Subject: [PATCH] QueryLibrary: Use default variable values in render (#84678) --- pkg/apis/query/v0alpha1/template/render.go | 6 +++- .../query/v0alpha1/template/render_test.go | 36 ++++++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/pkg/apis/query/v0alpha1/template/render.go b/pkg/apis/query/v0alpha1/template/render.go index d657b642409..372756139a3 100644 --- a/pkg/apis/query/v0alpha1/template/render.go +++ b/pkg/apis/query/v0alpha1/template/render.go @@ -43,7 +43,11 @@ func RenderTemplate(qt QueryTemplate, selectedValues map[string][]string) ([]Tar s = s[1 : len(s)-1] var offSet int64 for _, r := range reps { - value := []rune(FormatVariables(r.format, selectedValues[r.Key])) + sV := selectedValues[r.Key] + if sV == nil { + sV = r.DefaultValues + } + value := []rune(FormatVariables(r.format, sV)) if r.Position == nil { return nil, fmt.Errorf("nil position not support yet, will be full replacement") } diff --git a/pkg/apis/query/v0alpha1/template/render_test.go b/pkg/apis/query/v0alpha1/template/render_test.go index 465056247c8..0ac5ae144af 100644 --- a/pkg/apis/query/v0alpha1/template/render_test.go +++ b/pkg/apis/query/v0alpha1/template/render_test.go @@ -12,7 +12,8 @@ var nestedFieldRender = QueryTemplate{ Title: "Test", Variables: []TemplateVariable{ { - Key: "metricName", + Key: "metricName", + DefaultValues: []string{"cow_count"}, }, }, Targets: []Target{ @@ -64,6 +65,30 @@ var nestedFieldRenderedTargets = []Target{ }, } +var nestedFieldDefaultRenderedTargets = []Target{ + { + DataType: data.FrameTypeUnknown, + Variables: map[string][]VariableReplacement{ + "metricName": { + { + Path: "$.nestedObject.anArray[0]", + Position: &Position{ + Start: 0, + End: 3, + }, + }, + }, + }, + //DataTypeVersion: data.FrameTypeVersion{0, 0}, + Properties: apidata.NewDataQuery( + map[string]any{ + "nestedObject": map[string]any{ + "anArray": []any{"cow_count", .2}, + }, + }), + }, +} + func TestNestedFieldRender(t *testing.T) { rT, err := RenderTemplate(nestedFieldRender, map[string][]string{"metricName": {"up"}}) require.NoError(t, err) @@ -73,6 +98,15 @@ func TestNestedFieldRender(t *testing.T) { ) } +func TestNestedFieldDefaultsRender(t *testing.T) { + rT, err := RenderTemplate(nestedFieldRender, nil) + require.NoError(t, err) + require.Equal(t, + nestedFieldDefaultRenderedTargets, + rT, + ) +} + var multiVarTemplate = QueryTemplate{ Title: "Test", Variables: []TemplateVariable{