diff --git a/pkg/action/upgrade.go b/pkg/action/upgrade.go index 065fa804e..b692d0521 100644 --- a/pkg/action/upgrade.go +++ b/pkg/action/upgrade.go @@ -220,20 +220,15 @@ func (u *Upgrade) prepareUpgrade(name string, chart *chart.Chart, vals map[strin return nil, nil, errPending } - var currentRelease *release.Release - if lastRelease.Info.Status == release.StatusDeployed { - // no need to retrieve the last deployed release from storage as the last release is deployed - currentRelease = lastRelease - } else { - // finds the deployed release with the given name - currentRelease, err = u.cfg.Releases.Deployed(name) - if err != nil { - if errors.Is(err, driver.ErrNoDeployedReleases) && - (lastRelease.Info.Status == release.StatusFailed || lastRelease.Info.Status == release.StatusSuperseded) { - currentRelease = lastRelease - } else { - return nil, nil, err - } + isUpgrade := true + currentRelease := lastRelease + _, err = u.cfg.Releases.Deployed(name) + if err != nil { + if errors.Is(err, driver.ErrNoDeployedReleases) && + (lastRelease.Info.Status == release.StatusFailed || lastRelease.Info.Status == release.StatusSuperseded || lastRelease.Info.Status == release.StatusPendingInstall || lastRelease.Info.Status == release.StatusPendingUpgrade || lastRelease.Info.Status == release.StatusPendingRollback) { + isUpgrade = false + } else { + return nil, nil, err } } @@ -255,7 +250,8 @@ func (u *Upgrade) prepareUpgrade(name string, chart *chart.Chart, vals map[strin Name: name, Namespace: currentRelease.Namespace, Revision: revision, - IsUpgrade: true, + IsInstall: !isUpgrade, + IsUpgrade: isUpgrade, } caps, err := u.cfg.getCapabilities()