From 695cb641c8264f736b6457c9457a736911423929 Mon Sep 17 00:00:00 2001 From: Till Krullmann Date: Sun, 17 Sep 2023 12:39:55 +0200 Subject: [PATCH 1/3] Add cascade property to HelmUninstall task --- .../plugins/helm/command/tasks/HelmUninstall.kt | 12 ++++++++++++ .../gradle/plugins/helm/command/HelmUninstallTest.kt | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/helm-plugin/src/main/kotlin/org/unbrokendome/gradle/plugins/helm/command/tasks/HelmUninstall.kt b/helm-plugin/src/main/kotlin/org/unbrokendome/gradle/plugins/helm/command/tasks/HelmUninstall.kt index 00b415e1..9cdf684b 100644 --- a/helm-plugin/src/main/kotlin/org/unbrokendome/gradle/plugins/helm/command/tasks/HelmUninstall.kt +++ b/helm-plugin/src/main/kotlin/org/unbrokendome/gradle/plugins/helm/command/tasks/HelmUninstall.kt @@ -43,6 +43,17 @@ open class HelmUninstall : AbstractHelmServerOperationCommandTask() { project.objects.property() + /** + * Selects the deletion cascading strategy for the dependents. Valid values are `"background"`, `"orphan"` or + * `"foreground"`. Defaults to `"background"` if not set. + * + * Corresponds to the `--cascade` CLI parameter. + */ + @get:Internal + val cascade: Property = + project.objects.property() + + init { onlyIf { if (!doesReleaseExist()) { @@ -64,6 +75,7 @@ open class HelmUninstall : AbstractHelmServerOperationCommandTask() { flag("--dry-run", dryRun) flag("--keep-history", keepHistory) flag("--wait", wait) + option("--cascade", cascade) } } diff --git a/helm-plugin/src/test/kotlin/org/unbrokendome/gradle/plugins/helm/command/HelmUninstallTest.kt b/helm-plugin/src/test/kotlin/org/unbrokendome/gradle/plugins/helm/command/HelmUninstallTest.kt index b072bfba..25fe21ac 100644 --- a/helm-plugin/src/test/kotlin/org/unbrokendome/gradle/plugins/helm/command/HelmUninstallTest.kt +++ b/helm-plugin/src/test/kotlin/org/unbrokendome/gradle/plugins/helm/command/HelmUninstallTest.kt @@ -102,6 +102,18 @@ object HelmUninstallTest : ExecutionResultAwareSpek({ } } + it("should use cascade property") { + task.cascade.set("foreground") + + task.execute() + + commandExecMock.singleInvocation { + expectCommand("uninstall") + expectOption("--cascade", "foreground") + expectArg("awesome-release") + } + } + it("should use wait property") { task.wait.set(true) From 24273fa47f3bfe712a9f5a5572d6090ae5592fde Mon Sep 17 00:00:00 2001 From: Till Krullmann Date: Sun, 17 Sep 2023 12:40:07 +0200 Subject: [PATCH 2/3] Add cascadeOnUninstall property to HelmRelease --- .../gradle/plugins/helm/release/dsl/HelmRelease.kt | 13 +++++++++++++ .../rules/HelmUninstallReleaseFromTargetTaskRule.kt | 1 + .../plugins/helm/release/HelmReleasesPluginTest.kt | 3 +++ 3 files changed, 17 insertions(+) diff --git a/helm-releases-plugin/src/main/kotlin/org/unbrokendome/gradle/plugins/helm/release/dsl/HelmRelease.kt b/helm-releases-plugin/src/main/kotlin/org/unbrokendome/gradle/plugins/helm/release/dsl/HelmRelease.kt index 0cf6ba9c..dbc98674 100644 --- a/helm-releases-plugin/src/main/kotlin/org/unbrokendome/gradle/plugins/helm/release/dsl/HelmRelease.kt +++ b/helm-releases-plugin/src/main/kotlin/org/unbrokendome/gradle/plugins/helm/release/dsl/HelmRelease.kt @@ -139,6 +139,14 @@ interface HelmReleaseProperties : Named, ConfigurableHelmInstallFromRepositoryOp */ val keepHistoryOnUninstall: Property + /** + * Selects the deletion cascading strategy for the dependents when the release is uninstalled. Valid values are + * `"background"`, `"orphan"` or `"foreground"`. Defaults to `"background"` if not set. + * + * Corresponds to the `--cascade` CLI parameter on the `helm uninstall` command. + */ + val cascadeOnUninstall: Property + /** * Names of other releases that this release depends on. @@ -506,6 +514,10 @@ private abstract class AbstractHelmRelease( .convention(false) + final override val cascadeOnUninstall: Property = + project.objects.property() + + @Deprecated(message = "use release tags instead") @Suppress("OverridingDeprecatedMember") final override val dependsOn: SetProperty = @@ -612,6 +624,7 @@ private open class DefaultHelmRelease targetSpecific.replace.set(this.replace) targetSpecific.historyMax.set(this.historyMax) targetSpecific.keepHistoryOnUninstall.set(this.keepHistoryOnUninstall) + targetSpecific.cascadeOnUninstall.set(this.cascadeOnUninstall) @Suppress("DEPRECATION") targetSpecific.dependsOn.addAll(this.dependsOn) targetSpecific.installDependsOn.addAll(this.installDependsOn) diff --git a/helm-releases-plugin/src/main/kotlin/org/unbrokendome/gradle/plugins/helm/release/rules/HelmUninstallReleaseFromTargetTaskRule.kt b/helm-releases-plugin/src/main/kotlin/org/unbrokendome/gradle/plugins/helm/release/rules/HelmUninstallReleaseFromTargetTaskRule.kt index d45a772c..2ba5383b 100644 --- a/helm-releases-plugin/src/main/kotlin/org/unbrokendome/gradle/plugins/helm/release/rules/HelmUninstallReleaseFromTargetTaskRule.kt +++ b/helm-releases-plugin/src/main/kotlin/org/unbrokendome/gradle/plugins/helm/release/rules/HelmUninstallReleaseFromTargetTaskRule.kt @@ -57,6 +57,7 @@ internal class HelmUninstallReleaseFromTargetTaskRule( setFrom(targetSpecific) releaseName.set(targetSpecific.releaseName) keepHistory.set(targetSpecific.keepHistoryOnUninstall) + cascade.set(targetSpecific.cascadeOnUninstall) wait.set(targetSpecific.wait) // Make sure all dependent releases are uninstalled first diff --git a/helm-releases-plugin/src/test/kotlin/org/unbrokendome/gradle/plugins/helm/release/HelmReleasesPluginTest.kt b/helm-releases-plugin/src/test/kotlin/org/unbrokendome/gradle/plugins/helm/release/HelmReleasesPluginTest.kt index 1d063c08..8bee5b4b 100644 --- a/helm-releases-plugin/src/test/kotlin/org/unbrokendome/gradle/plugins/helm/release/HelmReleasesPluginTest.kt +++ b/helm-releases-plugin/src/test/kotlin/org/unbrokendome/gradle/plugins/helm/release/HelmReleasesPluginTest.kt @@ -250,6 +250,9 @@ object HelmReleasesPluginTest : Spek({ propertyMappingInfo( HelmRelease::keepHistoryOnUninstall, HelmUninstall::keepHistory, true ), + propertyMappingInfo( + HelmRelease::cascadeOnUninstall, HelmUninstall::cascade, "foreground" + ), propertyMappingInfo(HelmRelease::wait, HelmUninstall::wait, true) ) } From dcec9a37f73ac9aa29eb13e934287149a15ebfad Mon Sep 17 00:00:00 2001 From: Till Krullmann Date: Sun, 17 Sep 2023 12:40:23 +0200 Subject: [PATCH 3/3] Fix warning about Spek system property --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 3f97f605..9f90db94 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -68,7 +68,7 @@ subprojects { if (maxParallelForks > 1) { // Parallel tests seem to need a little more time to set up, so increase the test timeout to // make sure that the first test in a forked process doesn't fail because of this - systemProperty("SPEK_TIMEOUT", 30000) + systemProperty("spek2.execution.test.timeout", 30000) } } }