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:
co-authored by
ismail simsek
parent
a8eb29f1d7
commit
d20afa2a39
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user