Files
2026-09-03 21:57:42 -04:00

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)
}