From ff16e2fe8dbe89e8e9445859304817505dd1459a Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Tue, 25 May 2021 18:12:36 +0300 Subject: [PATCH] Skip frontend functions --- pkg/datasource/functions.go | 14 ++++++++++++++ pkg/datasource/response_handler.go | 13 +++++++------ pkg/timeseries/models.go | 1 + 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/pkg/datasource/functions.go b/pkg/datasource/functions.go index cd9c846..0635380 100644 --- a/pkg/datasource/functions.go +++ b/pkg/datasource/functions.go @@ -18,8 +18,14 @@ var errParsingFunctionParam = func(err error) error { type DataProcessingFunc = func(series timeseries.TimeSeries, params ...string) (timeseries.TimeSeries, error) +type MetaDataProcessingFunc = func(series *timeseries.TimeSeriesData, params ...string) (*timeseries.TimeSeriesData, error) + var funcMap map[string]DataProcessingFunc +var metaFuncMap map[string]MetaDataProcessingFunc + +var frontendFuncMap map[string]bool + func init() { funcMap = map[string]DataProcessingFunc{ "groupBy": applyGroupBy, @@ -27,6 +33,12 @@ func init() { "offset": applyOffset, } + // Functions processing on the frontend + frontendFuncMap = map[string]bool{ + "setAlias": true, + "replaceAlias": true, + "setAliasByRegex": true, + } } func applyFunctions(series []*timeseries.TimeSeriesData, functions []QueryFunction) ([]*timeseries.TimeSeriesData, error) { @@ -39,6 +51,8 @@ func applyFunctions(series []*timeseries.TimeSeriesData, functions []QueryFuncti } s.TS = result } + } else if _, ok := frontendFuncMap[f.Def.Name]; ok { + continue } else { err := errFunctionNotSupported(f.Def.Name) return series, err diff --git a/pkg/datasource/response_handler.go b/pkg/datasource/response_handler.go index 31d080e..1182bca 100644 --- a/pkg/datasource/response_handler.go +++ b/pkg/datasource/response_handler.go @@ -26,7 +26,13 @@ func convertHistoryToTimeSeries(history zabbix.History, items []*zabbix.Item) [] } pointSeries := seriesMap[point.ItemID] if pointSeries.Meta.Item == nil { + itemName := pointItem.ExpandItemName() pointSeries.Meta.Item = pointItem + pointSeries.Meta.Item.Name = itemName + pointSeries.Meta.Name = itemName + if len(pointItem.Hosts) > 0 { + pointSeries.Meta.Name = fmt.Sprintf("%s: %s", pointItem.Hosts[0].Name, itemName) + } } value := point.Value @@ -51,12 +57,7 @@ func convertTimeSeriesToDataFrame(series []*timeseries.TimeSeriesData) *data.Fra for _, s := range series { field := data.NewFieldFromFieldType(data.FieldTypeNullableFloat64, 0) - item := s.Meta.Item - if len(item.Hosts) > 0 { - field.Name = fmt.Sprintf("%s: %s", item.Hosts[0].Name, item.ExpandItemName()) - } else { - field.Name = item.ExpandItemName() - } + field.Name = s.Meta.Name frame.Fields = append(frame.Fields, field) } diff --git a/pkg/timeseries/models.go b/pkg/timeseries/models.go index 6cb583f..bb2c819 100644 --- a/pkg/timeseries/models.go +++ b/pkg/timeseries/models.go @@ -27,6 +27,7 @@ type TimeSeriesData struct { } type TimeSeriesMeta struct { + Name string Item *zabbix.Item }