From 80b92335bb0c74a18fa8ef959275d40d2a01beae Mon Sep 17 00:00:00 2001 From: "r.khavronenko" Date: Mon, 6 Feb 2017 16:22:09 +0200 Subject: [PATCH 1/3] allow setting basic auth headers for prometheus datasource --- pkg/tsdb/prometheus/prometheus.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/pkg/tsdb/prometheus/prometheus.go b/pkg/tsdb/prometheus/prometheus.go index f3704c2a430..c73e166138d 100644 --- a/pkg/tsdb/prometheus/prometheus.go +++ b/pkg/tsdb/prometheus/prometheus.go @@ -22,6 +22,18 @@ type PrometheusExecutor struct { Transport *http.Transport } +type basicAuthTransport struct { + *http.Transport + + username string + password string +} + +func (bat basicAuthTransport) RoundTrip(req *http.Request) (*http.Response, error) { + req.SetBasicAuth(bat.username, bat.password) + return http.DefaultTransport.RoundTrip(req) +} + func NewPrometheusExecutor(dsInfo *models.DataSource) (tsdb.Executor, error) { transport, err := dsInfo.GetHttpTransport() if err != nil { @@ -51,6 +63,14 @@ func (e *PrometheusExecutor) getClient() (prometheus.QueryAPI, error) { Transport: e.Transport, } + if e.BasicAuth { + cfg.Transport = basicAuthTransport{ + Transport: e.Transport, + username: e.BasicAuthUser, + password: e.BasicAuthPassword, + } + } + client, err := prometheus.New(cfg) if err != nil { return nil, err From 25be602dce04942c6e30f960febd7c3f4018f939 Mon Sep 17 00:00:00 2001 From: "r.khavronenko" Date: Mon, 6 Feb 2017 17:17:16 +0200 Subject: [PATCH 2/3] go fmt --- pkg/tsdb/prometheus/prometheus.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/tsdb/prometheus/prometheus.go b/pkg/tsdb/prometheus/prometheus.go index c73e166138d..efe8e2fc528 100644 --- a/pkg/tsdb/prometheus/prometheus.go +++ b/pkg/tsdb/prometheus/prometheus.go @@ -66,8 +66,8 @@ func (e *PrometheusExecutor) getClient() (prometheus.QueryAPI, error) { if e.BasicAuth { cfg.Transport = basicAuthTransport{ Transport: e.Transport, - username: e.BasicAuthUser, - password: e.BasicAuthPassword, + username: e.BasicAuthUser, + password: e.BasicAuthPassword, } } From a1e835884b64854e8d0ec2550c92f3ccc0ed036b Mon Sep 17 00:00:00 2001 From: hagen1778 Date: Tue, 7 Feb 2017 11:56:59 +0200 Subject: [PATCH 3/3] use configured Transport instead of defaultHttpTransport --- pkg/tsdb/prometheus/prometheus.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/tsdb/prometheus/prometheus.go b/pkg/tsdb/prometheus/prometheus.go index efe8e2fc528..a4a6d8da2eb 100644 --- a/pkg/tsdb/prometheus/prometheus.go +++ b/pkg/tsdb/prometheus/prometheus.go @@ -31,7 +31,7 @@ type basicAuthTransport struct { func (bat basicAuthTransport) RoundTrip(req *http.Request) (*http.Response, error) { req.SetBasicAuth(bat.username, bat.password) - return http.DefaultTransport.RoundTrip(req) + return bat.Transport.RoundTrip(req) } func NewPrometheusExecutor(dsInfo *models.DataSource) (tsdb.Executor, error) {