Prometheus: Use contextual middleware for req headers and simplify client creation (#51061)

* Use contextual middleware and simplify client creation

* Fix tests

* Add test for the header propagation

* Fix tests and lint

* Update pkg/tsdb/prometheus/prometheus.go

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
This commit is contained in:
Andrej Ocenas
2022-06-23 14:48:16 +02:00
committed by GitHub
co-authored by ismail simsek
parent a8eb29f1d7
commit d20afa2a39
17 changed files with 394 additions and 697 deletions
+8 -5
View File
@@ -2,7 +2,6 @@ package prometheus
import (
"context"
"encoding/json"
"errors"
"fmt"
@@ -43,13 +42,17 @@ func ProvideService(httpClientProvider httpclient.Provider, cfg *setting.Cfg, fe
func newInstanceSettings(httpClientProvider httpclient.Provider, cfg *setting.Cfg, features featuremgmt.FeatureToggles, tracer tracing.Tracer) datasource.InstanceFactoryFunc {
return func(settings backend.DataSourceInstanceSettings) (instancemgmt.Instance, error) {
var jsonData map[string]interface{}
err := json.Unmarshal(settings.JSONData, &jsonData)
// Creates a http roundTripper. Probably should be used for both buffered and streaming/querydata instances.
opts, err := buffered.CreateTransportOptions(settings, cfg, features, plog)
if err != nil {
return nil, fmt.Errorf("error reading settings: %w", err)
return nil, fmt.Errorf("error creating transport options: %v", err)
}
roundTripper, err := httpClientProvider.GetTransport(*opts)
if err != nil {
return nil, fmt.Errorf("error creating http client: %v", err)
}
b, err := buffered.New(httpClientProvider, cfg, features, tracer, settings, plog)
b, err := buffered.New(roundTripper, tracer, settings, plog)
if err != nil {
return nil, err
}