From 5d85f0d335df87225d25d809da4a007c387960e2 Mon Sep 17 00:00:00 2001 From: Luke Addison Date: Fri, 25 Nov 2022 09:54:27 +0000 Subject: [PATCH 1/2] Allow HelmRelease uninstall even if suspended Signed-off-by: Luke Addison --- api/v2beta1/helmrelease_types.go | 3 +++ .../bases/helm.toolkit.fluxcd.io_helmreleases.yaml | 4 ++++ controllers/helmrelease_controller.go | 5 +++-- docs/api/helmrelease.md | 11 +++++++++++ 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/api/v2beta1/helmrelease_types.go b/api/v2beta1/helmrelease_types.go index 00d6a9d38..00ec23f1d 100644 --- a/api/v2beta1/helmrelease_types.go +++ b/api/v2beta1/helmrelease_types.go @@ -807,6 +807,9 @@ type Uninstall struct { // a Helm uninstall is performed. // +optional DisableWait bool `json:"disableWait,omitempty"` + + // IfSuspended uninstalls the release even if it is suspended + IfSuspended bool `json:"ifSuspended,omitempty"` } // GetTimeout returns the configured timeout for the Helm uninstall action, or diff --git a/config/crd/bases/helm.toolkit.fluxcd.io_helmreleases.yaml b/config/crd/bases/helm.toolkit.fluxcd.io_helmreleases.yaml index 1ceb2af0b..cdd9aecbe 100644 --- a/config/crd/bases/helm.toolkit.fluxcd.io_helmreleases.yaml +++ b/config/crd/bases/helm.toolkit.fluxcd.io_helmreleases.yaml @@ -598,6 +598,10 @@ spec: description: DisableWait disables waiting for all the resources to be deleted after a Helm uninstall is performed. type: boolean + ifSuspended: + description: IfSuspended uninstalls the release even if it is + suspended + type: boolean keepHistory: description: KeepHistory tells Helm to remove all associated resources and mark the release as deleted, but retain the release history. diff --git a/controllers/helmrelease_controller.go b/controllers/helmrelease_controller.go index 8ec202acc..a99e21a96 100644 --- a/controllers/helmrelease_controller.go +++ b/controllers/helmrelease_controller.go @@ -623,8 +623,9 @@ func (r *HelmReleaseReconciler) reconcileDelete(ctx context.Context, hr v2.HelmR return ctrl.Result{}, err } - // Only uninstall the Helm Release if the resource is not suspended. - if !hr.Spec.Suspend { + // Only uninstall the Helm Release if the resource is not suspended or if it + // is configured to ignore suspension. + if !hr.Spec.Suspend || hr.Spec.Uninstall.IfSuspended { getter, err := r.buildRESTClientGetter(ctx, hr) if err != nil { return ctrl.Result{}, err diff --git a/docs/api/helmrelease.md b/docs/api/helmrelease.md index b53cf1962..43cf2aeb5 100644 --- a/docs/api/helmrelease.md +++ b/docs/api/helmrelease.md @@ -1877,6 +1877,17 @@ bool a Helm uninstall is performed.

+ + +ifSuspended
+ +bool + + + +

IfSuspended uninstalls the release even if it is suspended

+ + From 07347ae7308999154b01ffa4ef0733f8102aac47 Mon Sep 17 00:00:00 2001 From: Luke Addison Date: Fri, 25 Nov 2022 10:07:51 +0000 Subject: [PATCH 2/2] Allow HelmRelease uninstall even if suspended Signed-off-by: Luke Addison --- api/v2beta1/helmrelease_types.go | 2 +- config/crd/bases/helm.toolkit.fluxcd.io_helmreleases.yaml | 2 +- docs/api/helmrelease.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/api/v2beta1/helmrelease_types.go b/api/v2beta1/helmrelease_types.go index 00ec23f1d..8eb94e49e 100644 --- a/api/v2beta1/helmrelease_types.go +++ b/api/v2beta1/helmrelease_types.go @@ -808,7 +808,7 @@ type Uninstall struct { // +optional DisableWait bool `json:"disableWait,omitempty"` - // IfSuspended uninstalls the release even if it is suspended + // IfSuspended uninstalls the release even if it is suspended. IfSuspended bool `json:"ifSuspended,omitempty"` } diff --git a/config/crd/bases/helm.toolkit.fluxcd.io_helmreleases.yaml b/config/crd/bases/helm.toolkit.fluxcd.io_helmreleases.yaml index cdd9aecbe..404ef45d7 100644 --- a/config/crd/bases/helm.toolkit.fluxcd.io_helmreleases.yaml +++ b/config/crd/bases/helm.toolkit.fluxcd.io_helmreleases.yaml @@ -600,7 +600,7 @@ spec: type: boolean ifSuspended: description: IfSuspended uninstalls the release even if it is - suspended + suspended. type: boolean keepHistory: description: KeepHistory tells Helm to remove all associated resources diff --git a/docs/api/helmrelease.md b/docs/api/helmrelease.md index 43cf2aeb5..da72f2f46 100644 --- a/docs/api/helmrelease.md +++ b/docs/api/helmrelease.md @@ -1885,7 +1885,7 @@ bool -

IfSuspended uninstalls the release even if it is suspended

+

IfSuspended uninstalls the release even if it is suspended.