Making uninstall response generic

Signed-off-by: Matt Farina <matt.farina@suse.com>
pull/31372/head
Matt Farina 11 months ago
parent f80cbe43d0
commit 9c958dec76

@ -27,6 +27,7 @@ import (
chartutil "helm.sh/helm/v4/pkg/chart/v2/util" chartutil "helm.sh/helm/v4/pkg/chart/v2/util"
"helm.sh/helm/v4/pkg/kube" "helm.sh/helm/v4/pkg/kube"
releasei "helm.sh/helm/v4/pkg/release"
"helm.sh/helm/v4/pkg/release/common" "helm.sh/helm/v4/pkg/release/common"
release "helm.sh/helm/v4/pkg/release/v1" release "helm.sh/helm/v4/pkg/release/v1"
releaseutil "helm.sh/helm/v4/pkg/release/v1/util" releaseutil "helm.sh/helm/v4/pkg/release/v1/util"
@ -57,7 +58,7 @@ func NewUninstall(cfg *Configuration) *Uninstall {
} }
// Run uninstalls the given release. // Run uninstalls the given release.
func (u *Uninstall) Run(name string) (*release.UninstallReleaseResponse, error) { func (u *Uninstall) Run(name string) (*releasei.UninstallReleaseResponse, error) {
if err := u.cfg.KubeClient.IsReachable(); err != nil { if err := u.cfg.KubeClient.IsReachable(); err != nil {
return nil, err return nil, err
} }
@ -74,13 +75,13 @@ func (u *Uninstall) Run(name string) (*release.UninstallReleaseResponse, error)
if u.IgnoreNotFound && errors.Is(err, driver.ErrReleaseNotFound) { if u.IgnoreNotFound && errors.Is(err, driver.ErrReleaseNotFound) {
return nil, nil return nil, nil
} }
return &release.UninstallReleaseResponse{}, err return &releasei.UninstallReleaseResponse{}, err
} }
r, err := releaserToV1Release(ri) r, err := releaserToV1Release(ri)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return &release.UninstallReleaseResponse{Release: r}, nil return &releasei.UninstallReleaseResponse{Release: r}, nil
} }
if err := chartutil.ValidateReleaseName(name); err != nil { if err := chartutil.ValidateReleaseName(name); err != nil {
@ -113,7 +114,7 @@ func (u *Uninstall) Run(name string) (*release.UninstallReleaseResponse, error)
if err := u.purgeReleases(rels...); err != nil { if err := u.purgeReleases(rels...); err != nil {
return nil, fmt.Errorf("uninstall: Failed to purge the release: %w", err) return nil, fmt.Errorf("uninstall: Failed to purge the release: %w", err)
} }
return &release.UninstallReleaseResponse{Release: rel}, nil return &releasei.UninstallReleaseResponse{Release: rel}, nil
} }
return nil, fmt.Errorf("the release named %q is already deleted", name) return nil, fmt.Errorf("the release named %q is already deleted", name)
} }
@ -122,7 +123,7 @@ func (u *Uninstall) Run(name string) (*release.UninstallReleaseResponse, error)
rel.Info.Status = common.StatusUninstalling rel.Info.Status = common.StatusUninstalling
rel.Info.Deleted = time.Now() rel.Info.Deleted = time.Now()
rel.Info.Description = "Deletion in progress (or silently failed)" rel.Info.Description = "Deletion in progress (or silently failed)"
res := &release.UninstallReleaseResponse{Release: rel} res := &releasei.UninstallReleaseResponse{Release: rel}
if !u.DisableHooks { if !u.DisableHooks {
serverSideApply := true serverSideApply := true

@ -116,10 +116,12 @@ func TestUninstallRelease_Wait(t *testing.T) {
failer := unAction.cfg.KubeClient.(*kubefake.FailingKubeClient) failer := unAction.cfg.KubeClient.(*kubefake.FailingKubeClient)
failer.WaitForDeleteError = fmt.Errorf("U timed out") failer.WaitForDeleteError = fmt.Errorf("U timed out")
unAction.cfg.KubeClient = failer unAction.cfg.KubeClient = failer
res, err := unAction.Run(rel.Name) resi, err := unAction.Run(rel.Name)
is.Error(err) is.Error(err)
is.Contains(err.Error(), "U timed out") is.Contains(err.Error(), "U timed out")
is.Equal(res.Release.Info.Status, common.StatusUninstalled) res, err := releaserToV1Release(resi.Release)
is.NoError(err)
is.Equal(res.Info.Status, common.StatusUninstalled)
} }
func TestUninstallRelease_Cascade(t *testing.T) { func TestUninstallRelease_Cascade(t *testing.T) {

@ -13,12 +13,12 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package v1 package release
// UninstallReleaseResponse represents a successful response to an uninstall request. // UninstallReleaseResponse represents a successful response to an uninstall request.
type UninstallReleaseResponse struct { type UninstallReleaseResponse struct {
// Release is the release that was marked deleted. // Release is the release that was marked deleted.
Release *Release `json:"release,omitempty"` Release Releaser `json:"release,omitempty"`
// Info is an uninstall message // Info is an uninstall message
Info string `json:"info,omitempty"` Info string `json:"info,omitempty"`
} }

@ -19,6 +19,7 @@ import (
"time" "time"
"helm.sh/helm/v4/pkg/release/common" "helm.sh/helm/v4/pkg/release/common"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
) )

@ -22,6 +22,7 @@ import (
"testing" "testing"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"helm.sh/helm/v4/pkg/release" "helm.sh/helm/v4/pkg/release"
"helm.sh/helm/v4/pkg/release/common" "helm.sh/helm/v4/pkg/release/common"
rspb "helm.sh/helm/v4/pkg/release/v1" rspb "helm.sh/helm/v4/pkg/release/v1"

@ -23,6 +23,7 @@ import (
"testing" "testing"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"helm.sh/helm/v4/pkg/release" "helm.sh/helm/v4/pkg/release"
"helm.sh/helm/v4/pkg/release/common" "helm.sh/helm/v4/pkg/release/common"
rspb "helm.sh/helm/v4/pkg/release/v1" rspb "helm.sh/helm/v4/pkg/release/v1"
@ -384,6 +385,7 @@ func TestStorageRemoveLeastRecent(t *testing.T) {
// On inserting the 5th record, we expect two records to be pruned from history. // On inserting the 5th record, we expect two records to be pruned from history.
hist, err := storage.History(name) hist, err := storage.History(name)
assert.NoError(t, err)
rhist, err := releaseListToV1List(hist) rhist, err := releaseListToV1List(hist)
assert.NoError(t, err) assert.NoError(t, err)
if err != nil { if err != nil {

Loading…
Cancel
Save