|
|
@@ -2,7 +2,6 @@ package api
|
|
|
|
|
|
import (
|
|
|
"encoding/json"
|
|
|
- "fmt"
|
|
|
"net/http"
|
|
|
"net/url"
|
|
|
"strconv"
|
|
|
@@ -197,65 +196,64 @@ func (app *App) HandleListChartHistory(w http.ResponseWriter, r *http.Request) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// HandleUpdateChart upgrades a chart with new values.yaml
|
|
|
-// func (app *App) HandleUpdateChart(w http.ResponseWriter, r *http.Request) {
|
|
|
-// session, err := app.store.Get(r, app.cookieName)
|
|
|
-
|
|
|
-// if err != nil {
|
|
|
-// app.handleErrorFormDecoding(err, ErrChartDecode, w)
|
|
|
-// return
|
|
|
-// }
|
|
|
+// HandleUpgradeChart upgrades a chart with new values.yaml
|
|
|
+func (app *App) HandleUpgradeChart(w http.ResponseWriter, r *http.Request) {
|
|
|
+ session, err := app.store.Get(r, app.cookieName)
|
|
|
|
|
|
-// name := chi.URLParam(r, "name")
|
|
|
+ if err != nil {
|
|
|
+ app.handleErrorFormDecoding(err, ErrChartDecode, w)
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
-// // get the filter options
|
|
|
-// form := &forms.ListChartHistoryForm{
|
|
|
-// ChartForm: &forms.ChartForm{
|
|
|
-// Form: &helm.Form{},
|
|
|
-// },
|
|
|
-// Name: name,
|
|
|
-// }
|
|
|
+ name := chi.URLParam(r, "name")
|
|
|
|
|
|
-// vals, err := url.ParseQuery(r.URL.RawQuery)
|
|
|
+ // get the filter options
|
|
|
+ form := &forms.UpgradeChartForm{
|
|
|
+ ChartForm: &forms.ChartForm{
|
|
|
+ Form: &helm.Form{},
|
|
|
+ },
|
|
|
+ Name: name,
|
|
|
+ }
|
|
|
|
|
|
-// if err != nil {
|
|
|
-// app.handleErrorFormDecoding(err, ErrChartDecode, w)
|
|
|
-// return
|
|
|
-// }
|
|
|
+ // decode from JSON to form value
|
|
|
+ if err := json.NewDecoder(r.Body).Decode(form); err != nil {
|
|
|
+ app.handleErrorFormDecoding(err, ErrUserDecode, w)
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
-// form.PopulateHelmOptionsFromQueryParams(vals)
|
|
|
+ if sessID, ok := session.Values["user_id"].(uint); ok {
|
|
|
+ form.PopulateHelmOptionsFromUserID(sessID, app.repo.User)
|
|
|
+ }
|
|
|
|
|
|
-// if sessID, ok := session.Values["user_id"].(uint); ok {
|
|
|
-// form.PopulateHelmOptionsFromUserID(sessID, app.repo.User)
|
|
|
-// }
|
|
|
+ // validate the form
|
|
|
+ if err := app.validator.Struct(form); err != nil {
|
|
|
+ app.handleErrorFormValidation(err, ErrChartValidateFields, w)
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
-// // validate the form
|
|
|
-// if err := app.validator.Struct(form); err != nil {
|
|
|
-// app.handleErrorFormValidation(err, ErrChartValidateFields, w)
|
|
|
-// return
|
|
|
-// }
|
|
|
+ // create a new agent
|
|
|
+ var agent *helm.Agent
|
|
|
|
|
|
-// // create a new agent
|
|
|
-// var agent *helm.Agent
|
|
|
+ if app.testing {
|
|
|
+ agent = app.TestAgents.HelmAgent
|
|
|
+ } else {
|
|
|
+ agent, err = helm.GetAgentOutOfClusterConfig(form.ChartForm.Form, app.logger)
|
|
|
+ }
|
|
|
|
|
|
-// if app.testing {
|
|
|
-// agent = app.TestAgents.HelmAgent
|
|
|
-// } else {
|
|
|
-// agent, err = helm.GetAgentOutOfClusterConfig(form.ChartForm.Form, app.logger)
|
|
|
-// }
|
|
|
+ rel, err := agent.UpgradeChart(form.Name, form.Values)
|
|
|
|
|
|
-// release, err := agent.GetReleaseHistory(form.Name)
|
|
|
+ if err != nil {
|
|
|
+ app.handleErrorInternal(err, w)
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
-// if err != nil {
|
|
|
-// app.handleErrorFormValidation(err, ErrChartValidateFields, w)
|
|
|
-// return
|
|
|
-// }
|
|
|
+ w.WriteHeader(http.StatusOK)
|
|
|
|
|
|
-// if err := json.NewEncoder(w).Encode(release); err != nil {
|
|
|
-// app.handleErrorFormDecoding(err, ErrChartDecode, w)
|
|
|
-// return
|
|
|
-// }
|
|
|
-// }
|
|
|
+ if err := json.NewEncoder(w).Encode(rel); err != nil {
|
|
|
+ app.handleErrorFormDecoding(err, ErrChartDecode, w)
|
|
|
+ return
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
// HandleRollbackChart rolls a release back to a specified revision
|
|
|
func (app *App) HandleRollbackChart(w http.ResponseWriter, r *http.Request) {
|
|
|
@@ -310,9 +308,5 @@ func (app *App) HandleRollbackChart(w http.ResponseWriter, r *http.Request) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- release, err := agent.GetRelease("wordpress", 3)
|
|
|
-
|
|
|
- fmt.Println("RELEASE IS", release)
|
|
|
-
|
|
|
w.WriteHeader(http.StatusOK)
|
|
|
}
|