Prometheus: Fix passing of custom params when running queries (#42728) (#42748)

* Prometheus: Fix passing of custom params

* Remove prints

(cherry picked from commit 21fe78302b)

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
This commit is contained in:
Grot (@grafanabot)
2021-12-05 16:45:18 +01:00
committed by GitHub
co-authored by Ivana Huckova
parent 52372f2912
commit 294739328a
2 changed files with 18 additions and 3 deletions
@@ -11,14 +11,25 @@ import (
const (
customQueryParametersMiddlewareName = "prom-custom-query-parameters"
customQueryParametersKey = "customQueryParameters"
grafanaDataKey = "grafanaData"
)
func customQueryParametersMiddleware(logger log.Logger) sdkhttpclient.Middleware {
return sdkhttpclient.NamedMiddlewareFunc(customQueryParametersMiddlewareName, func(opts sdkhttpclient.Options, next http.RoundTripper) http.RoundTripper {
customQueryParamsVal, exists := opts.CustomOptions[customQueryParametersKey]
grafanaData, exists := opts.CustomOptions[grafanaDataKey]
if !exists {
return next
}
data, ok := grafanaData.(map[string]interface{})
if !ok {
return next
}
customQueryParamsVal, exists := data[customQueryParametersKey]
if !exists {
return next
}
customQueryParams, ok := customQueryParamsVal.(string)
if !ok || customQueryParams == "" {
return next
@@ -114,7 +114,9 @@ func TestCustomQueryParametersMiddleware(t *testing.T) {
mw := customQueryParametersMiddleware(log.New("test"))
rt := mw.CreateMiddleware(httpclient.Options{
CustomOptions: map[string]interface{}{
customQueryParametersKey: "custom=par/am&second=f oo",
grafanaDataKey: map[string]interface{}{
customQueryParametersKey: "custom=par/am&second=f oo",
},
},
}, finalRoundTripper)
require.NotNil(t, rt)
@@ -144,7 +146,9 @@ func TestCustomQueryParametersMiddleware(t *testing.T) {
mw := customQueryParametersMiddleware(log.New("test"))
rt := mw.CreateMiddleware(httpclient.Options{
CustomOptions: map[string]interface{}{
customQueryParametersKey: "custom=par/am&second=f oo",
grafanaDataKey: map[string]interface{}{
customQueryParametersKey: "custom=par/am&second=f oo",
},
},
}, finalRoundTripper)
require.NotNil(t, rt)