67 lines
1.5 KiB
Go
67 lines
1.5 KiB
Go
package cli
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
)
|
|
|
|
func (h *abraHandler) handleUpgradeApp(w http.ResponseWriter, r *http.Request, appName string, force bool) {
|
|
log.Printf("Handling App Upgrade!")
|
|
|
|
args := []string{"app", "upgrade", appName, "-n", "-c"}
|
|
if force {
|
|
args = append(args, "-f")
|
|
}
|
|
output, err := h.cmd.Run("abra", args...)
|
|
if err != nil {
|
|
InternalServerError(w, errors.New(fmt.Sprintf("Error: %s", string(output))))
|
|
return
|
|
}
|
|
log.Printf("Finishing app upgrade!")
|
|
w.WriteHeader(http.StatusOK)
|
|
}
|
|
|
|
func (h *abraHandler) handleRollbackApp(w http.ResponseWriter, r *http.Request, appName string, force bool) {
|
|
log.Printf("Handling App rollback!")
|
|
|
|
d := json.NewDecoder(r.Body)
|
|
d.DisallowUnknownFields()
|
|
|
|
body := struct {
|
|
Version *string `json:"version"`
|
|
}{}
|
|
err := d.Decode(&body)
|
|
if err != nil {
|
|
log.Printf("error: %v", err)
|
|
BadRequest(w, err)
|
|
return
|
|
}
|
|
if body.Version == nil {
|
|
BadRequest(w, fmt.Errorf("Error: no version for rollback"))
|
|
return
|
|
}
|
|
|
|
args := []string{"app", "rollback", appName, "-n", "-c"}
|
|
if force {
|
|
args = append(args, "-f")
|
|
}
|
|
if body.Version != nil {
|
|
if *body.Version == "Auto" {
|
|
log.Printf("leaving abra to determine rollback version")
|
|
} else {
|
|
args = append(args, *body.Version)
|
|
}
|
|
}
|
|
|
|
output, err := h.cmd.Run("abra", args...)
|
|
if err != nil {
|
|
InternalServerError(w, fmt.Errorf("Error: %s", string(output)))
|
|
return
|
|
}
|
|
log.Printf("Finishing app rollback!")
|
|
w.WriteHeader(http.StatusOK)
|
|
}
|