Просмотр исходного кода

allow setting basic auth headers for prometheus datasource

r.khavronenko 9 лет назад
Родитель
Сommit
80b92335bb
1 измененных файлов с 20 добавлено и 0 удалено
  1. 20 0
      pkg/tsdb/prometheus/prometheus.go

+ 20 - 0
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