From: Tom Clegg Date: Wed, 27 Jan 2021 06:55:32 +0000 (-0500) Subject: 17170: Return more helpful error if APIHost is not set. X-Git-Tag: 2.2.0~135^2~4 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/0945afa5523fb45f827750e4d1700df4ff222295 17170: Return more helpful error if APIHost is not set. Arvados-DCO-1.1-Signed-off-by: Tom Clegg --- diff --git a/sdk/go/arvados/client.go b/sdk/go/arvados/client.go index 52c75d5113..ea3cb6899e 100644 --- a/sdk/go/arvados/client.go +++ b/sdk/go/arvados/client.go @@ -9,6 +9,7 @@ import ( "context" "crypto/tls" "encoding/json" + "errors" "fmt" "io" "io/ioutil" @@ -67,6 +68,10 @@ type Client struct { dd *DiscoveryDocument defaultRequestID string + + // APIHost and AuthToken were loaded from ARVADOS_* env vars + // (used to customize "no host/token" error messages) + loadedFromEnv bool } // InsecureHTTPClient is the default http.Client used by a Client with @@ -123,6 +128,7 @@ func NewClientFromEnv() *Client { Insecure: insecure, KeepServiceURIs: svcs, Timeout: 5 * time.Minute, + loadedFromEnv: true, } } @@ -312,6 +318,13 @@ func (c *Client) RequestAndDecodeContext(ctx context.Context, dst interface{}, m // Ensure body is closed even if we error out early defer body.Close() } + if c.APIHost == "" { + if c.loadedFromEnv { + return errors.New("ARVADOS_API_HOST and/or ARVADOS_API_TOKEN environment variables are not set") + } else { + return errors.New("arvados.Client cannot perform request: APIHost is not set") + } + } urlString := c.apiURL(path) urlValues, err := anythingToValues(params) if err != nil {