aboutsummaryrefslogtreecommitdiffstats
path: root/client/go/internal/vespa/deploy.go
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2023-07-12 11:44:39 +0200
committerMartin Polden <mpolden@mpolden.no>2023-07-12 11:46:04 +0200
commit31cbaedf6893a015be1d7af6ff5f71a525446ca4 (patch)
treecb26d83c91dafb0196f69ee4fffdf08b50c821bc /client/go/internal/vespa/deploy.go
parent9c3d6abd16a4c39c42b6bc9e03412b5a3d0dd644 (diff)
vespa destroy
Diffstat (limited to 'client/go/internal/vespa/deploy.go')
-rw-r--r--client/go/internal/vespa/deploy.go42
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
}