From 0a09711e870d53f73a38069d7fe3106571f836ee Mon Sep 17 00:00:00 2001 From: Lee Yik Jiun Date: Tue, 18 Feb 2025 18:54:13 +0800 Subject: [PATCH] Various updates to observability library (#1034) * Various updates to observability library - Fix TransformOptions not accepting arbitrary options - Cleanup Hide, Multi, IncludeAll options in variables - Add Data Source variable * Add text box variable --- observability-lib/grafana/panels.go | 2 +- observability-lib/grafana/variables.go | 43 ++++++++++++++++++++------ 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/observability-lib/grafana/panels.go b/observability-lib/grafana/panels.go index 55fc6a693..8019d46cb 100644 --- a/observability-lib/grafana/panels.go +++ b/observability-lib/grafana/panels.go @@ -80,7 +80,7 @@ func newThresholds(options *ThresholdOptions) *dashboard.ThresholdsConfigBuilder type TransformOptions struct { ID string - Options map[string]string + Options map[string]any } func newTransform(options *TransformOptions) dashboard.DataTransformerConfig { diff --git a/observability-lib/grafana/variables.go b/observability-lib/grafana/variables.go index 065a2f3f2..740993ec4 100644 --- a/observability-lib/grafana/variables.go +++ b/observability-lib/grafana/variables.go @@ -86,7 +86,6 @@ type QueryVariableOptions struct { Regex string IncludeAll bool QueryWithType map[string]any - Hide *dashboard.VariableHide } func NewQueryVariable(options *QueryVariableOptions) *dashboard.QueryVariableBuilder { @@ -98,6 +97,7 @@ func NewQueryVariable(options *QueryVariableOptions) *dashboard.QueryVariableBui variable := dashboard.NewQueryVariableBuilder(options.Name). Label(options.Label). Description(options.Description). + Hide(options.Hide). Datasource(datasourceRef(options.Datasource)). Current(dashboard.VariableOption{ Selected: cog.ToPtr[bool](true), @@ -105,7 +105,8 @@ func NewQueryVariable(options *QueryVariableOptions) *dashboard.QueryVariableBui Value: dashboard.StringOrArrayOfString{ArrayOfString: []string{options.CurrentValue}}, }). Sort(dashboard.VariableSortAlphabeticalAsc). - Multi(options.Multi) + Multi(options.Multi). + IncludeAll(options.IncludeAll) if options.Query != "" { variable.Query(dashboard.StringOrMap{String: cog.ToPtr[string](options.Query)}) @@ -117,14 +118,6 @@ func NewQueryVariable(options *QueryVariableOptions) *dashboard.QueryVariableBui variable.Regex(options.Regex) } - if options.IncludeAll { - variable.IncludeAll(options.IncludeAll) - } - - if options.Hide != nil { - variable.Hide(*options.Hide) - } - return variable } @@ -149,3 +142,33 @@ func NewIntervalVariable(options *IntervalVariableOptions) *dashboard.IntervalVa Value: dashboard.StringOrArrayOfString{ArrayOfString: []string{options.CurrentValue}}, }) } + +type DataSourceVariableOptions struct { + *VariableOption + Type string + Regex string + Multi bool + IncludeAll bool +} + +func NewDataSourceVariable(options *DataSourceVariableOptions) *dashboard.DatasourceVariableBuilder { + return dashboard.NewDatasourceVariableBuilder(options.Name). + Label(options.Label). + Description(options.Description). + Hide(options.Hide). + Type(options.Type). + Regex(options.Regex). + Multi(options.Multi). + IncludeAll(options.IncludeAll) +} + +type TextBoxVariableOptions struct { + *VariableOption +} + +func NewTextBoxVariableOptions(options *TextBoxVariableOptions) *dashboard.TextBoxVariableBuilder { + return dashboard.NewTextBoxVariableBuilder(options.Name). + Label(options.Label). + Description(options.Description). + Hide(options.Hide) +}