mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Fixed query parsing bugs
This commit is contained in:
parent
ace81760ea
commit
2374d09877
@ -60,61 +60,8 @@ func (e *OpenTsdbExecutor) Execute(ctx context.Context, queries tsdb.QuerySlice,
|
|||||||
tsdbQuery.Queries = make([]map[string]interface{}, len(queries))
|
tsdbQuery.Queries = make([]map[string]interface{}, len(queries))
|
||||||
|
|
||||||
for i := 0; i < len(queries); i++ {
|
for i := 0; i < len(queries); i++ {
|
||||||
|
metric := e.buildMetric(queries[i])
|
||||||
metric := make(map[string]interface{})
|
tsdbQuery.Queries[i] = metric
|
||||||
|
|
||||||
// Setting metric and aggregator
|
|
||||||
metric["metric"] = queries[i].Model.Get("metric").MustString()
|
|
||||||
metric["aggregator"] = queries[i].Model.Get("aggregator").MustString()
|
|
||||||
|
|
||||||
// Setting downsampling options
|
|
||||||
disableDownsampling := queries[i].Model.Get("disableDownsampling").MustBool()
|
|
||||||
if !disableDownsampling {
|
|
||||||
downsampleInterval := queries[i].Model.Get("downsampleInterval").MustString()
|
|
||||||
if downsampleInterval == "" {
|
|
||||||
downsampleInterval = "1m" //default value for blank
|
|
||||||
}
|
|
||||||
downsample := downsampleInterval + "-" + queries[i].Model.Get("downsampleAggregator").MustString()
|
|
||||||
if queries[i].Model.Get("downsampleFillPolicy").MustString() != "none" {
|
|
||||||
metric["downsample"] = downsample + "-" + queries[i].Model.Get("downsampleFillPolicy").MustString()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setting rate options
|
|
||||||
if queries[i].Model.Get("shouldComputeRate").MustBool() {
|
|
||||||
metric["rate"] = true
|
|
||||||
rateOptions := make(map[string]interface{})
|
|
||||||
rateOptions["counter"] = queries[i].Model.Get("isCounter").MustBool()
|
|
||||||
counterMax, counterMaxCheck := queries[i].Model.CheckGet("counterMax")
|
|
||||||
if counterMaxCheck {
|
|
||||||
counterMaxVal, err := strconv.ParseFloat(counterMax.MustString(),64)
|
|
||||||
if err == nil {
|
|
||||||
rateOptions["counterMax"] = counterMaxVal
|
|
||||||
}
|
|
||||||
}
|
|
||||||
resetValue, resetValueCheck := queries[i].Model.CheckGet("counterResetValue")
|
|
||||||
if resetValueCheck {
|
|
||||||
resetValueVal, err := strconv.ParseFloat(resetValue.MustString(),64)
|
|
||||||
if err == nil {
|
|
||||||
rateOptions["resetValue"] = resetValueVal
|
|
||||||
}
|
|
||||||
}
|
|
||||||
metric["rateOptions"] = rateOptions
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setting tags
|
|
||||||
tags, tagsCheck := queries[i].Model.CheckGet("tags")
|
|
||||||
if tagsCheck && len(tags.MustMap()) > 0 {
|
|
||||||
metric["tags"] = tags.MustMap()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setting filters
|
|
||||||
filters, filtersCheck := queries[i].Model.CheckGet("filters")
|
|
||||||
if filtersCheck && len(filters.MustArray()) > 0 {
|
|
||||||
metric["filters"] = filters.MustArray()
|
|
||||||
}
|
|
||||||
|
|
||||||
tsdbQuery.Queries[i] = metric
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if setting.Env == setting.DEV {
|
if setting.Env == setting.DEV {
|
||||||
@ -205,3 +152,62 @@ func (e *OpenTsdbExecutor) parseResponse(query OpenTsdbQuery, res *http.Response
|
|||||||
queryResults["A"] = queryRes
|
queryResults["A"] = queryRes
|
||||||
return queryResults, nil
|
return queryResults, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e *OpenTsdbExecutor) buildMetric(query *tsdb.Query) (map[string]interface{}) {
|
||||||
|
|
||||||
|
metric := make(map[string]interface{})
|
||||||
|
|
||||||
|
// Setting metric and aggregator
|
||||||
|
metric["metric"] = query.Model.Get("metric").MustString()
|
||||||
|
metric["aggregator"] = query.Model.Get("aggregator").MustString()
|
||||||
|
|
||||||
|
// Setting downsampling options
|
||||||
|
disableDownsampling := query.Model.Get("disableDownsampling").MustBool()
|
||||||
|
if !disableDownsampling {
|
||||||
|
downsampleInterval := query.Model.Get("downsampleInterval").MustString()
|
||||||
|
if downsampleInterval == "" {
|
||||||
|
downsampleInterval = "1m" //default value for blank
|
||||||
|
}
|
||||||
|
downsample := downsampleInterval + "-" + query.Model.Get("downsampleAggregator").MustString()
|
||||||
|
if query.Model.Get("downsampleFillPolicy").MustString() != "none" {
|
||||||
|
metric["downsample"] = downsample + "-" + query.Model.Get("downsampleFillPolicy").MustString()
|
||||||
|
} else {
|
||||||
|
metric["downsample"] = downsample
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setting rate options
|
||||||
|
if query.Model.Get("shouldComputeRate").MustBool() {
|
||||||
|
|
||||||
|
metric["rate"] = true
|
||||||
|
rateOptions := make(map[string]interface{})
|
||||||
|
rateOptions["counter"] = query.Model.Get("isCounter").MustBool()
|
||||||
|
|
||||||
|
counterMax, counterMaxCheck := query.Model.CheckGet("counterMax")
|
||||||
|
if counterMaxCheck {
|
||||||
|
rateOptions["counterMax"] = counterMax.MustFloat64()
|
||||||
|
}
|
||||||
|
|
||||||
|
resetValue, resetValueCheck := query.Model.CheckGet("counterResetValue")
|
||||||
|
if resetValueCheck {
|
||||||
|
rateOptions["resetValue"] = resetValue.MustFloat64()
|
||||||
|
}
|
||||||
|
|
||||||
|
metric["rateOptions"] = rateOptions
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setting tags
|
||||||
|
tags, tagsCheck := query.Model.CheckGet("tags")
|
||||||
|
if tagsCheck && len(tags.MustMap()) > 0 {
|
||||||
|
metric["tags"] = tags.MustMap()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setting filters
|
||||||
|
filters, filtersCheck := query.Model.CheckGet("filters")
|
||||||
|
if filtersCheck && len(filters.MustArray()) > 0 {
|
||||||
|
metric["filters"] = filters.MustArray()
|
||||||
|
}
|
||||||
|
|
||||||
|
return metric
|
||||||
|
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user