diff options
author | Martin Polden <mpolden@mpolden.no> | 2023-07-12 11:44:39 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2023-07-12 11:46:04 +0200 |
commit | 31cbaedf6893a015be1d7af6ff5f71a525446ca4 (patch) | |
tree | cb26d83c91dafb0196f69ee4fffdf08b50c821bc /client/go/internal/vespa/deploy.go | |
parent | 9c3d6abd16a4c39c42b6bc9e03412b5a3d0dd644 (diff) |
vespa destroy
Diffstat (limited to 'client/go/internal/vespa/deploy.go')
-rw-r--r-- | client/go/internal/vespa/deploy.go | 42 |
1 files changed, 33 insertions, 9 deletions
diff --git a/client/go/internal/vespa/deploy.go b/client/go/internal/vespa/deploy.go index 8b2cb6ea05d..d04b8ba631c 100644 --- a/client/go/internal/vespa/deploy.go +++ b/client/go/internal/vespa/deploy.go @@ -132,13 +132,12 @@ func Prepare(deployment DeploymentOptions) (PrepareResult, error) { if err != nil { return PrepareResult{}, err } - serviceDescription := "Deploy service" response, err := deployServiceDo(req, time.Second*30, deployment) if err != nil { return PrepareResult{}, err } defer response.Body.Close() - if err := checkResponse(req, response, serviceDescription); err != nil { + if err := checkResponse(req, response); err != nil { return PrepareResult{}, err } var jsonResponse struct { @@ -173,13 +172,39 @@ func Activate(sessionID int64, deployment DeploymentOptions) error { if err != nil { return err } - serviceDescription := "Deploy service" response, err := deployServiceDo(req, time.Second*30, deployment) if err != nil { return err } defer response.Body.Close() - return checkResponse(req, response, serviceDescription) + return checkResponse(req, response) +} + +// Deactivate given deployment +func Deactivate(opts DeploymentOptions) error { + path := "/application/v2/tenant/default/application/default" + if opts.Target.IsCloud() { + if opts.Target.Deployment().Zone.Environment == "" || opts.Target.Deployment().Zone.Region == "" { + return fmt.Errorf("%s: missing zone", opts) + } + path = fmt.Sprintf("/application/v4/tenant/%s/application/%s/instance/%s/environment/%s/region/%s", + opts.Target.Deployment().Application.Tenant, + opts.Target.Deployment().Application.Application, + opts.Target.Deployment().Application.Instance, + opts.Target.Deployment().Zone.Environment, + opts.Target.Deployment().Zone.Region) + } + u, err := opts.url(path) + if err != nil { + return err + } + req := &http.Request{URL: u, Method: "DELETE"} + resp, err := deployServiceDo(req, 30*time.Second, opts) + if err != nil { + return err + } + defer resp.Body.Close() + return checkResponse(req, resp) } func Deploy(opts DeploymentOptions) (PrepareResult, error) { @@ -265,13 +290,12 @@ func Submit(opts DeploymentOptions) error { Header: make(http.Header), } request.Header.Set("Content-Type", writer.FormDataContentType()) - serviceDescription := "Deploy service" response, err := deployServiceDo(request, time.Minute*10, opts) if err != nil { return err } defer response.Body.Close() - return checkResponse(request, response, serviceDescription) + return checkResponse(request, response) } func deployServiceDo(request *http.Request, timeout time.Duration, opts DeploymentOptions) (*http.Response, error) { @@ -354,7 +378,7 @@ func uploadApplicationPackage(url *url.URL, opts DeploymentOptions) (PrepareResu Log []LogLinePrepareResponse `json:"log"` } jsonResponse.SessionID = "0" // Set a default session ID for responses that don't contain int (e.g. cloud deployment) - if err := checkResponse(request, response, service.Description()); err != nil { + if err := checkResponse(request, response); err != nil { return PrepareResult{}, err } jsonDec := json.NewDecoder(response.Body) @@ -372,11 +396,11 @@ func uploadApplicationPackage(url *url.URL, opts DeploymentOptions) (PrepareResu }, err } -func checkResponse(req *http.Request, response *http.Response, serviceDescription string) error { +func checkResponse(req *http.Request, response *http.Response) error { if response.StatusCode/100 == 4 { return fmt.Errorf("invalid application package (%s)\n%s", response.Status, extractError(response.Body)) } else if response.StatusCode != 200 { - return fmt.Errorf("error from %s at %s (%s):\n%s", strings.ToLower(serviceDescription), req.URL.Host, response.Status, util.ReaderToJSON(response.Body)) + return fmt.Errorf("error from deploy api at %s (%s):\n%s", req.URL.Host, response.Status, util.ReaderToJSON(response.Body)) } return nil } |