From d76ec6ad0746d954475c634d4e47b3e96e0b9f5f Mon Sep 17 00:00:00 2001 From: vishal Date: Tue, 8 Oct 2019 11:41:07 -0700 Subject: [PATCH 1/2] Show correct URL upon failed HTTP request from CLI --- cli/cmd/errors.go | 29 ++++++++++++++++++++--------- cli/cmd/lib_client.go | 10 +++++++--- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/cli/cmd/errors.go b/cli/cmd/errors.go index e84c0b5ec2..6f1424b82c 100644 --- a/cli/cmd/errors.go +++ b/cli/cmd/errors.go @@ -18,6 +18,7 @@ package cmd import ( "fmt" + "net/url" s "github.com/cortexlabs/cortex/pkg/lib/strings" ) @@ -31,11 +32,12 @@ type ErrorKind int const ( ErrUnknown ErrorKind = iota - ErrCliAlreadyInAppDir + ErrCLIAlreadyInAppDir ErrAPINotReady ErrAPINotFound - ErrFailedToConnect - ErrCliNotInAppDir + ErrFailedToConnectURL + ErrFailedToConnectOperator + ErrCLINotInAppDir ) var errorKinds = []string{ @@ -43,11 +45,12 @@ var errorKinds = []string{ "err_cli_already_in_app_dir", "err_api_not_ready", "err_api_not_found", - "err_failed_to_connect", + "err_failed_to_connect_url", + "err_failed_to_connect_operator", "err_cli_not_in_app_dir", } -var _ = [1]int{}[int(ErrCliNotInAppDir)-(len(errorKinds)-1)] // Ensure list length matches +var _ = [1]int{}[int(ErrCLINotInAppDir)-(len(errorKinds)-1)] // Ensure list length matches func (t ErrorKind) String() string { return errorKinds[t] @@ -94,7 +97,7 @@ func (e Error) Error() string { func ErrorCliAlreadyInAppDir(dirPath string) error { return Error{ - Kind: ErrCliAlreadyInAppDir, + Kind: ErrCLIAlreadyInAppDir, message: fmt.Sprintf("your current working directory is already in a cortex directory (%s)", dirPath), } } @@ -113,16 +116,24 @@ func ErrorAPINotFound(apiName string) error { } } -func ErrorFailedToConnect(urlStr string) error { +func ErrorFailedConnectURL(url url.URL) error { + url.RawQuery = "" return Error{ - Kind: ErrFailedToConnect, + Kind: ErrFailedToConnectURL, + message: "failed to connect to " + url.String(), + } +} + +func ErrorFailedToConnectOperator(urlStr string) error { + return Error{ + Kind: ErrFailedToConnectOperator, message: fmt.Sprintf("failed to connect to the operator (%s), run `cortex configure` if you need to update the operator URL", urlStr), } } func ErrorCliNotInAppDir() error { return Error{ - Kind: ErrCliNotInAppDir, + Kind: ErrCLINotInAppDir, message: "your current working directory is not in or under a cortex directory (identified via a top-level cortex.yaml file)", } } diff --git a/cli/cmd/lib_client.go b/cli/cmd/lib_client.go index ffa0e89ba2..f1d265d10e 100644 --- a/cli/cmd/lib_client.go +++ b/cli/cmd/lib_client.go @@ -180,7 +180,7 @@ func StreamLogs(appName string, resourceName string, resourceType string) error connection, response, err := dialer.Dial(wsURL, header) if response == nil { cliConfig := getValidCLIConfig() - return ErrorFailedToConnect(strings.Replace(cliConfig.CortexURL, "http", "ws", 1)) + return ErrorFailedToConnectOperator(strings.Replace(cliConfig.CortexURL, "http", "ws", 1)) } defer response.Body.Close() @@ -188,7 +188,7 @@ func StreamLogs(appName string, resourceName string, resourceType string) error bodyBytes, err := ioutil.ReadAll(response.Body) if err != nil || bodyBytes == nil || string(bodyBytes) == "" { cliConfig := getValidCLIConfig() - return ErrorFailedToConnect(strings.Replace(cliConfig.CortexURL, "http", "ws", 1)) + return ErrorFailedToConnectOperator(strings.Replace(cliConfig.CortexURL, "http", "ws", 1)) } var output schema.ErrorResponse err = json.Unmarshal(bodyBytes, &output) @@ -269,7 +269,11 @@ func (client *cortexClient) makeRequest(request *http.Request) ([]byte, error) { response, err := client.Do(request) if err != nil { cliConfig := getValidCLIConfig() - return nil, ErrorFailedToConnect(cliConfig.CortexURL) + if strings.HasPrefix(request.URL.String(), cliConfig.CortexURL) { + return nil, ErrorFailedToConnectOperator(cliConfig.CortexURL) + } else { + return nil, ErrorFailedConnectURL(*request.URL) + } } defer response.Body.Close() From 0e0968a7d4809e906c268b7f6d1d2f8db47b61aa Mon Sep 17 00:00:00 2001 From: vishal Date: Tue, 8 Oct 2019 11:45:22 -0700 Subject: [PATCH 2/2] Fix lint --- cli/cmd/lib_client.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cli/cmd/lib_client.go b/cli/cmd/lib_client.go index f1d265d10e..4df31592d2 100644 --- a/cli/cmd/lib_client.go +++ b/cli/cmd/lib_client.go @@ -271,9 +271,8 @@ func (client *cortexClient) makeRequest(request *http.Request) ([]byte, error) { cliConfig := getValidCLIConfig() if strings.HasPrefix(request.URL.String(), cliConfig.CortexURL) { return nil, ErrorFailedToConnectOperator(cliConfig.CortexURL) - } else { - return nil, ErrorFailedConnectURL(*request.URL) } + return nil, ErrorFailedConnectURL(*request.URL) } defer response.Body.Close()