feat: add --force flag support for helm upgrade (#505)

Add a "Force upgrade" checkbox in the upgrade modal footer that passes
the --force flag to helm upgrade, causing resources to be deleted and
recreated. Also fix the version selector flashing the URL input while
loading by showing a spinner.

Closes #505

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Andrei Pohilko
2026-03-17 16:18:00 +00:00
parent 4fb2eb099a
commit c5ae60a779
4 changed files with 28 additions and 8 deletions

View File

@@ -389,7 +389,8 @@ func (h *HelmHandler) Upgrade(c *gin.Context) {
}
justTemplate := c.PostForm("preview") == "true"
rel, err := existing.Upgrade(repoChart, c.PostForm("version"), justTemplate, values)
force := c.PostForm("force") == "true"
rel, err := existing.Upgrade(repoChart, c.PostForm("version"), justTemplate, force, values)
if err != nil {
_ = c.AbortWithError(http.StatusInternalServerError, err)
return

View File

@@ -306,7 +306,7 @@ func (r *Release) GetRev(revNo int) (*Release, error) {
return nil, errorx.InternalError.New("No revision found for number %d", revNo)
}
func (r *Release) Upgrade(repoChart string, version string, justTemplate bool, values map[string]interface{}) (*release.Release, error) {
func (r *Release) Upgrade(repoChart string, version string, justTemplate bool, force bool, values map[string]interface{}) (*release.Release, error) {
r.mx.Lock()
defer r.mx.Unlock()
@@ -340,6 +340,7 @@ func (r *Release) Upgrade(repoChart string, version string, justTemplate bool, v
cmd.DryRunOption = "server"
}
cmd.ResetValues = true
cmd.Force = force
chrt, err := locateChart(cmd.ChartPathOptions, repoChart, r.Settings)
if err != nil {