|
|
@@ -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 bat.Transport.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
|