From 9c958dec766b485ba8a5f60513843cf7105855dd Mon Sep 17 00:00:00 2001 From: Matt Farina Date: Wed, 8 Oct 2025 18:22:04 -0400 Subject: [PATCH] Making uninstall response generic Signed-off-by: Matt Farina --- pkg/action/uninstall.go | 11 ++++++----- pkg/action/uninstall_test.go | 6 ++++-- pkg/release/{v1 => }/responses.go | 4 ++-- pkg/release/v1/info.go | 1 + pkg/storage/driver/memory_test.go | 1 + pkg/storage/storage_test.go | 2 ++ 6 files changed, 16 insertions(+), 9 deletions(-) rename pkg/release/{v1 => }/responses.go (92%) diff --git a/pkg/action/uninstall.go b/pkg/action/uninstall.go index 669431741..6cfde9a58 100644 --- a/pkg/action/uninstall.go +++ b/pkg/action/uninstall.go @@ -27,6 +27,7 @@ import ( chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/kube" + releasei "helm.sh/helm/v4/pkg/release" "helm.sh/helm/v4/pkg/release/common" release "helm.sh/helm/v4/pkg/release/v1" releaseutil "helm.sh/helm/v4/pkg/release/v1/util" @@ -57,7 +58,7 @@ func NewUninstall(cfg *Configuration) *Uninstall { } // 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 { return nil, err } @@ -74,13 +75,13 @@ func (u *Uninstall) Run(name string) (*release.UninstallReleaseResponse, error) if u.IgnoreNotFound && errors.Is(err, driver.ErrReleaseNotFound) { return nil, nil } - return &release.UninstallReleaseResponse{}, err + return &releasei.UninstallReleaseResponse{}, err } r, err := releaserToV1Release(ri) if err != nil { return nil, err } - return &release.UninstallReleaseResponse{Release: r}, nil + return &releasei.UninstallReleaseResponse{Release: r}, 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 { 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) } @@ -122,7 +123,7 @@ func (u *Uninstall) Run(name string) (*release.UninstallReleaseResponse, error) rel.Info.Status = common.StatusUninstalling rel.Info.Deleted = time.Now() rel.Info.Description = "Deletion in progress (or silently failed)" - res := &release.UninstallReleaseResponse{Release: rel} + res := &releasei.UninstallReleaseResponse{Release: rel} if !u.DisableHooks { serverSideApply := true diff --git a/pkg/action/uninstall_test.go b/pkg/action/uninstall_test.go index 667e96820..62baec139 100644 --- a/pkg/action/uninstall_test.go +++ b/pkg/action/uninstall_test.go @@ -116,10 +116,12 @@ func TestUninstallRelease_Wait(t *testing.T) { failer := unAction.cfg.KubeClient.(*kubefake.FailingKubeClient) failer.WaitForDeleteError = fmt.Errorf("U timed out") unAction.cfg.KubeClient = failer - res, err := unAction.Run(rel.Name) + resi, err := unAction.Run(rel.Name) is.Error(err) 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) { diff --git a/pkg/release/v1/responses.go b/pkg/release/responses.go similarity index 92% rename from pkg/release/v1/responses.go rename to pkg/release/responses.go index 2a5608c67..6e0a0eaec 100644 --- a/pkg/release/v1/responses.go +++ b/pkg/release/responses.go @@ -13,12 +13,12 @@ See the License for the specific language governing permissions and limitations under the License. */ -package v1 +package release // UninstallReleaseResponse represents a successful response to an uninstall request. type UninstallReleaseResponse struct { // Release is the release that was marked deleted. - Release *Release `json:"release,omitempty"` + Release Releaser `json:"release,omitempty"` // Info is an uninstall message Info string `json:"info,omitempty"` } diff --git a/pkg/release/v1/info.go b/pkg/release/v1/info.go index d5b5089dc..f502b7bc9 100644 --- a/pkg/release/v1/info.go +++ b/pkg/release/v1/info.go @@ -19,6 +19,7 @@ import ( "time" "helm.sh/helm/v4/pkg/release/common" + "k8s.io/apimachinery/pkg/runtime" ) diff --git a/pkg/storage/driver/memory_test.go b/pkg/storage/driver/memory_test.go index 18786c004..329b82b2f 100644 --- a/pkg/storage/driver/memory_test.go +++ b/pkg/storage/driver/memory_test.go @@ -22,6 +22,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "helm.sh/helm/v4/pkg/release" "helm.sh/helm/v4/pkg/release/common" rspb "helm.sh/helm/v4/pkg/release/v1" diff --git a/pkg/storage/storage_test.go b/pkg/storage/storage_test.go index 283bd8199..5b2a3bba5 100644 --- a/pkg/storage/storage_test.go +++ b/pkg/storage/storage_test.go @@ -23,6 +23,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "helm.sh/helm/v4/pkg/release" "helm.sh/helm/v4/pkg/release/common" 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. hist, err := storage.History(name) + assert.NoError(t, err) rhist, err := releaseListToV1List(hist) assert.NoError(t, err) if err != nil {