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.
|