aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2021-09-02 22:28:14 +0200
committerGitHub <noreply@github.com>2021-09-02 22:28:14 +0200
commit3b64158f77d12a08061638e57eddf2891465f77b (patch)
tree97270efb06d95d5d7e58ff6246efcdf7423a5630
parent704665c68cb8823ffa6e2ddb6bf12583d313626b (diff)
parent52afcc8ab3e64bd0a2441edd9d278b3dc9173b00 (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.go4
-rw-r--r--client/go/vespa/deploy.go23
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" }