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))
|
||||
|
||||
for i := 0; i < len(queries); i++ {
|
||||
|
||||
metric := make(map[string]interface{})
|
||||
|
||||
// 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
|
||||
metric := e.buildMetric(queries[i])
|
||||
tsdbQuery.Queries[i] = metric
|
||||
}
|
||||
|
||||
if setting.Env == setting.DEV {
|
||||
@ -205,3 +152,62 @@ func (e *OpenTsdbExecutor) parseResponse(query OpenTsdbQuery, res *http.Response
|
||||
queryResults["A"] = queryRes
|
||||
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