diff options
author | Jon Bratseth <bratseth@oath.com> | 2021-09-02 22:28:14 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-02 22:28:14 +0200 |
commit | 3b64158f77d12a08061638e57eddf2891465f77b (patch) | |
tree | 97270efb06d95d5d7e58ff6246efcdf7423a5630 | |
parent | 704665c68cb8823ffa6e2ddb6bf12583d313626b (diff) | |
parent | 52afcc8ab3e64bd0a2441edd9d278b3dc9173b00 (diff) |
Merge pull request #18967 from vespa-engine/mpolden/check-status
Check status code of prepare/activate requests
-rw-r--r-- | client/go/cmd/deploy.go | 4 | ||||
-rw-r--r-- | client/go/vespa/deploy.go | 23 |
2 files changed, 18 insertions, 9 deletions
diff --git a/client/go/cmd/deploy.go b/client/go/cmd/deploy.go index 9cffe798596..6682891b97e 100644 --- a/client/go/cmd/deploy.go +++ b/client/go/cmd/deploy.go @@ -26,8 +26,8 @@ var ( func init() { rootCmd.AddCommand(deployCmd) - //rootCmd.AddCommand(prepareCmd) - //rootCmd.AddCommand(activateCmd) + rootCmd.AddCommand(prepareCmd) + rootCmd.AddCommand(activateCmd) deployCmd.PersistentFlags().StringVarP(&zoneArg, zoneFlag, "z", "dev.aws-us-east-1c", "The zone to use for deployment") } diff --git a/client/go/vespa/deploy.go b/client/go/vespa/deploy.go index e57f78d954f..dbdedc400d6 100644 --- a/client/go/vespa/deploy.go +++ b/client/go/vespa/deploy.go @@ -170,6 +170,9 @@ func Prepare(deployment DeploymentOpts) (int64, error) { return 0, err } defer response.Body.Close() + if err := checkResponse(req, response, serviceDescription); err != nil { + return 0, err + } return sessionID, nil } @@ -192,7 +195,7 @@ func Activate(sessionID int64, deployment DeploymentOpts) error { return err } defer response.Body.Close() - return nil + return checkResponse(req, response, serviceDescription) } func Deploy(opts DeploymentOpts) error { @@ -252,15 +255,21 @@ func uploadApplicationPackage(url *url.URL, opts DeploymentOpts) (int64, error) SessionID string `json:"session-id"` } sessionResponse.SessionID = "0" // Set a default session ID for responses that don't contain int (e.g. cloud deployment) + if err := checkResponse(request, response, serviceDescription); err != nil { + return 0, err + } + jsonDec := json.NewDecoder(response.Body) + jsonDec.Decode(&sessionResponse) // Ignore error in case this is a non-JSON response + return strconv.ParseInt(sessionResponse.SessionID, 10, 64) +} + +func checkResponse(req *http.Request, response *http.Response, serviceDescription string) error { if response.StatusCode/100 == 4 { - return 0, fmt.Errorf("Invalid application package (%s)\n\n%s", response.Status, extractError(response.Body)) + return fmt.Errorf("Invalid application package (%s)\n\n%s", response.Status, extractError(response.Body)) } else if response.StatusCode != 200 { - return 0, fmt.Errorf("Error from %s at %s (%s):\n%s", strings.ToLower(serviceDescription), request.URL.Host, response.Status, util.ReaderToJSON(response.Body)) - } else { - jsonDec := json.NewDecoder(response.Body) - jsonDec.Decode(&sessionResponse) // Ignore error in case this is a non-JSON response + return fmt.Errorf("Error from %s at %s (%s):\n%s", strings.ToLower(serviceDescription), req.URL.Host, response.Status, util.ReaderToJSON(response.Body)) } - return strconv.ParseInt(sessionResponse.SessionID, 10, 64) + return nil } func isZip(filename string) bool { return filepath.Ext(filename) == ".zip" } |