diff --git a/discovery/scaleway/baremetal.go b/discovery/scaleway/baremetal.go index 347ed40bab..ecdf3cd7a2 100644 --- a/discovery/scaleway/baremetal.go +++ b/discovery/scaleway/baremetal.go @@ -17,12 +17,9 @@ import ( "context" "fmt" "net" - "net/http" "strconv" "strings" - "time" - "github.com/prometheus/common/config" "github.com/prometheus/common/model" "github.com/prometheus/common/version" "github.com/scaleway/scaleway-sdk-go/api/baremetal/v1" @@ -71,28 +68,18 @@ func newBaremetalDiscovery(conf *SDConfig) (*baremetalDiscovery, error) { tagsFilter: conf.TagsFilter, } - rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "scaleway_sd") + client, err := newScalewayHTTPClient(conf) if err != nil { return nil, err } - if conf.SecretKeyFile != "" { - rt, err = newAuthTokenFileRoundTripper(conf.SecretKeyFile, rt) - if err != nil { - return nil, err - } - } - profile, err := loadProfile(conf) if err != nil { return nil, err } d.client, err = scw.NewClient( - scw.WithHTTPClient(&http.Client{ - Transport: rt, - Timeout: time.Duration(conf.RefreshInterval), - }), + scw.WithHTTPClient(client), scw.WithUserAgent(version.PrometheusUserAgent()), scw.WithProfile(profile), ) diff --git a/discovery/scaleway/instance.go b/discovery/scaleway/instance.go index c0ed5853b3..30d3ddcc78 100644 --- a/discovery/scaleway/instance.go +++ b/discovery/scaleway/instance.go @@ -17,12 +17,9 @@ import ( "context" "fmt" "net" - "net/http" "strconv" "strings" - "time" - "github.com/prometheus/common/config" "github.com/prometheus/common/model" "github.com/prometheus/common/version" "github.com/scaleway/scaleway-sdk-go/api/instance/v1" @@ -84,28 +81,18 @@ func newInstanceDiscovery(conf *SDConfig) (*instanceDiscovery, error) { tagsFilter: conf.TagsFilter, } - rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "scaleway_sd") + client, err := newScalewayHTTPClient(conf) if err != nil { return nil, err } - if conf.SecretKeyFile != "" { - rt, err = newAuthTokenFileRoundTripper(conf.SecretKeyFile, rt) - if err != nil { - return nil, err - } - } - profile, err := loadProfile(conf) if err != nil { return nil, err } d.client, err = scw.NewClient( - scw.WithHTTPClient(&http.Client{ - Transport: rt, - Timeout: time.Duration(conf.RefreshInterval), - }), + scw.WithHTTPClient(client), scw.WithUserAgent(version.PrometheusUserAgent()), scw.WithProfile(profile), ) diff --git a/discovery/scaleway/scaleway.go b/discovery/scaleway/scaleway.go index f8ef6c706c..a804fbde37 100644 --- a/discovery/scaleway/scaleway.go +++ b/discovery/scaleway/scaleway.go @@ -221,6 +221,27 @@ func newRefresher(conf *SDConfig) (refresher, error) { return nil, errors.New("unknown Scaleway discovery role") } +// newScalewayHTTPClient creates an HTTP client from the SD config, optionally +// wrapping the transport with token-file authentication. +func newScalewayHTTPClient(conf *SDConfig) (*http.Client, error) { + client, err := config.NewClientFromConfig(conf.HTTPClientConfig, "scaleway_sd") + if err != nil { + return nil, err + } + + client.Timeout = time.Duration(conf.RefreshInterval) + + if conf.SecretKeyFile != "" { + rt, err := newAuthTokenFileRoundTripper(conf.SecretKeyFile, client.Transport) + if err != nil { + return nil, err + } + client.Transport = rt + } + + return client, nil +} + func loadProfile(sdConfig *SDConfig) (*scw.Profile, error) { // Profile coming from Prometheus Configuration file prometheusConfigProfile := &scw.Profile{