summaryrefslogtreecommitdiffstats
path: root/client/go/vespa/target.go
diff options
context:
space:
mode:
Diffstat (limited to 'client/go/vespa/target.go')
-rw-r--r--client/go/vespa/target.go17
1 files changed, 9 insertions, 8 deletions
diff --git a/client/go/vespa/target.go b/client/go/vespa/target.go
index 8d48f1ffa3a..94028fb235f 100644
--- a/client/go/vespa/target.go
+++ b/client/go/vespa/target.go
@@ -45,6 +45,7 @@ type Service struct {
Name string
TLSOptions TLSOptions
ztsClient ztsClient
+ httpClient util.HTTPClient
}
// Target represents a Vespa platform, running named Vespa services.
@@ -89,7 +90,7 @@ type LogOptions struct {
// Do sends request to this service. Any required authentication happens automatically.
func (s *Service) Do(request *http.Request, timeout time.Duration) (*http.Response, error) {
if s.TLSOptions.KeyPair.Certificate != nil {
- util.ActiveHttpClient.UseCertificate([]tls.Certificate{s.TLSOptions.KeyPair})
+ s.httpClient.UseCertificate([]tls.Certificate{s.TLSOptions.KeyPair})
}
if s.TLSOptions.AthenzDomain != "" {
accessToken, err := s.ztsClient.AccessToken(s.TLSOptions.AthenzDomain, s.TLSOptions.KeyPair)
@@ -101,7 +102,7 @@ func (s *Service) Do(request *http.Request, timeout time.Duration) (*http.Respon
}
request.Header.Add("Authorization", "Bearer "+accessToken)
}
- return util.HttpDo(request, timeout, s.Description())
+ return s.httpClient.Do(request, timeout)
}
// Wait polls the health check of this service until it succeeds or timeout passes.
@@ -115,7 +116,7 @@ func (s *Service) Wait(timeout time.Duration) (int, error) {
default:
return 0, fmt.Errorf("invalid service: %s", s.Name)
}
- return waitForOK(url, &s.TLSOptions.KeyPair, timeout)
+ return waitForOK(s.httpClient, url, &s.TLSOptions.KeyPair, timeout)
}
func (s *Service) Description() string {
@@ -138,18 +139,18 @@ type requestFunc func() *http.Request
// waitForOK queries url and returns its status code. If the url returns a non-200 status code, it is repeatedly queried
// until timeout elapses.
-func waitForOK(url string, certificate *tls.Certificate, timeout time.Duration) (int, error) {
+func waitForOK(client util.HTTPClient, url string, certificate *tls.Certificate, timeout time.Duration) (int, error) {
req, err := http.NewRequest("GET", url, nil)
if err != nil {
return 0, err
}
okFunc := func(status int, response []byte) (bool, error) { return isOK(status), nil }
- return wait(okFunc, func() *http.Request { return req }, certificate, timeout)
+ return wait(client, okFunc, func() *http.Request { return req }, certificate, timeout)
}
-func wait(fn responseFunc, reqFn requestFunc, certificate *tls.Certificate, timeout time.Duration) (int, error) {
+func wait(client util.HTTPClient, fn responseFunc, reqFn requestFunc, certificate *tls.Certificate, timeout time.Duration) (int, error) {
if certificate != nil {
- util.ActiveHttpClient.UseCertificate([]tls.Certificate{*certificate})
+ client.UseCertificate([]tls.Certificate{*certificate})
}
var (
httpErr error
@@ -160,7 +161,7 @@ func wait(fn responseFunc, reqFn requestFunc, certificate *tls.Certificate, time
loopOnce := timeout == 0
for time.Now().Before(deadline) || loopOnce {
req := reqFn()
- response, httpErr = util.HttpDo(req, 10*time.Second, "")
+ response, httpErr = client.Do(req, 10*time.Second)
if httpErr == nil {
statusCode = response.StatusCode
body, err := ioutil.ReadAll(response.Body)