From 458b7f5ac41cadebc34f687de1ff96239de108da Mon Sep 17 00:00:00 2001 From: Jeromy Cannon Date: Wed, 4 Oct 2023 16:01:09 +0100 Subject: [PATCH] Squashed commit of the following: commit c7aaf6cc1d34785609b0843049b609646797d47e Author: Jeromy Cannon Date: Thu Sep 28 19:54:15 2023 +0100 HelmUninstallChartTask code/examples/test coverage Signed-off-by: Jeromy Cannon commit 6240d285fc01f83244cdf400e897a393f573ff40 Author: Jeromy Cannon Date: Wed Sep 27 17:18:35 2023 +0100 fix test case failure Signed-off-by: Jeromy Cannon commit 4a51c382a5df2faf0e22ca4637e86206a0eb2eb8 Author: Jeromy Cannon Date: Wed Sep 27 14:47:16 2023 +0100 removed todo for gradle plugin logging if error and added coverage for the same Signed-off-by: Jeromy Cannon commit 834586d7669c32f544bbda954a30a1ccc0de3c35 Author: Jeromy Cannon Date: Tue Sep 26 21:15:39 2023 +0100 gradle-executable path provided Signed-off-by: Jeromy Cannon commit c2cbdbf0dc9ef6ce27c3b10484d36511903f8374 Author: Jeromy Cannon Date: Tue Sep 26 20:52:32 2023 +0100 gradle-executable path provided Signed-off-by: Jeromy Cannon commit a7540dc264e6b0422b21505d89c8bf06bee8ead5 Author: Jeromy Cannon Date: Tue Sep 26 18:35:14 2023 +0100 gradle-executable shouldn't be needed... Signed-off-by: Jeromy Cannon commit 480c2880a75041d129f74668bbde19a3f6d76744 Author: Jeromy Cannon Date: Tue Sep 26 18:12:35 2023 +0100 supply gradle executable directory for new jobs Signed-off-by: Jeromy Cannon commit 719b24b5749e9c9ee519538374b5e6bdcacae688 Author: Jeromy Cannon Date: Tue Sep 26 18:03:21 2023 +0100 supply gradle executable directory for new jobs Signed-off-by: Jeromy Cannon commit 67e9c1c7ba5f76df1f85e89ef69c0c3e4da9f923 Author: Jeromy Cannon Date: Tue Sep 26 17:39:47 2023 +0100 Examples Spotless Check Signed-off-by: Jeromy Cannon commit 9c40db5fd5724a9f68f00652d9481aa2fa901379 Author: Jeromy Cannon Date: Tue Sep 26 17:35:06 2023 +0100 update job ids for new jobs Signed-off-by: Jeromy Cannon commit c80aa8b1dbf89260d3725104b7107b0e4d3eb1c4 Author: Jeromy Cannon Date: Tue Sep 26 17:31:18 2023 +0100 add compile and unit test jobs for examples project since they are now separate Signed-off-by: Jeromy Cannon commit 4475c6abf2a20e74a451f14ad6869b47d8fc2db3 Author: Jeromy Cannon Date: Tue Sep 26 17:21:14 2023 +0100 updates based on feedback from Jendrick on hedera-services changes. Signed-off-by: Jeromy Cannon commit dd90490c255e3e40e32bcf7ca3cff07795b7caaf Author: Jeromy Cannon Date: Tue Sep 26 09:41:51 2023 +0100 updates based on changes in helm install subcommand Signed-off-by: Jeromy Cannon commit 6f436e6063bd3681219d8f30826df335bad1ae50 Author: Jeromy Cannon Date: Mon Sep 25 14:42:22 2023 +0100 temporarily disable fullstack-examples until we can resolve intellij and sonar issues Signed-off-by: Jeromy Cannon commit 962080e2f571adf7632c4b265812e7b4d3efeec7 Author: Jeromy Cannon Date: Fri Sep 22 20:12:30 2023 +0100 Squashed commit of the following: commit d177c82d71e52012df8c0e7d766913eb5b518625 Author: Jeromy Cannon Date: Thu Sep 21 19:02:43 2023 +0100 updated HelmExecutionBuilder workingDirectory to use PWD instead of new File('.') from FileUtils Signed-off-by: Jeromy Cannon commit 7ef57c193e5c527a58c6d46b0d12b86157c82fd8 Author: Jeromy Cannon Date: Thu Sep 21 14:09:23 2023 +0100 removed commented out code that was previously used for shadowjars Signed-off-by: Jeromy Cannon commit 4891dd59d5bb2eb52c8d31ddd41ce3b4952c46e0 Author: Jeromy Cannon Date: Wed Sep 20 20:02:40 2023 +0100 remove shadowjars Signed-off-by: Jeromy Cannon commit 9d67a54e10ca0fa148a1565cb9067b6a6098df0e Author: Jeromy Cannon Date: Wed Sep 20 19:48:24 2023 +0100 remove shadowjars Signed-off-by: Jeromy Cannon commit 3dc75a046075de48892766db4e4891bf394344b5 Author: Jeromy Cannon Date: Wed Sep 20 19:43:55 2023 +0100 todo Signed-off-by: Jeromy Cannon commit 7660afbf52fb7e012c5e46c6bb72fc7fc2cb892e Author: Jeromy Cannon Date: Wed Sep 20 19:42:46 2023 +0100 more todo's Signed-off-by: Jeromy Cannon commit 51df39336acf2ad22e10e5b1136fe31af2257251 Author: Jeromy Cannon Date: Wed Sep 20 18:04:31 2023 +0100 switch to a different repo to avoid test collisions Signed-off-by: Jeromy Cannon commit 44754c15eb4c77f08cc1026d4e593020db28eddd Author: Jeromy Cannon Date: Wed Sep 20 17:35:19 2023 +0100 remove code smells Signed-off-by: Jeromy Cannon commit d068f262f80206a7a01fe2d4954be779f55585af Author: Jeromy Cannon Date: Wed Sep 20 16:25:05 2023 +0100 updated HelmInstallChartTaskTest to different chart/repo to avoid collisions with other tests Signed-off-by: Jeromy Cannon commit 7821d6f0f29d7956331e1d21952b95e071e951db Author: Jeromy Cannon Date: Wed Sep 20 13:10:07 2023 +0100 add licenses at top of kotlin files Signed-off-by: Jeromy Cannon commit ae3d3c7cd3e356ac074d9c9fec54ef29c40e6274 Author: Jeromy Cannon Date: Wed Sep 20 13:02:06 2023 +0100 added TODO Signed-off-by: Jeromy Cannon commit 4a8226169b896fc140360c42699615fac812037e Author: Jeromy Cannon Date: Wed Sep 20 12:53:04 2023 +0100 Revert "removed unneeded test implementation reference" This reverts commit 8eedff9fe3c6c9443df756e08f11bd3e7170a80e. Signed-off-by: Jeromy Cannon commit 674c155a9775ad12bf6125e096c7617b70502a8b Author: Jeromy Cannon Date: Wed Sep 20 12:49:28 2023 +0100 removed unneeded test implementation reference Signed-off-by: Jeromy Cannon commit 23c310463face8cf62765014e96d41aaa51874b9 Author: Jeromy Cannon Date: Wed Sep 20 12:45:25 2023 +0100 upcoming todo for next PR Signed-off-by: Jeromy Cannon commit 72bf7b34e2d14d173971657a4c8f4a9be9628f64 Author: Jeromy Cannon Date: Tue Sep 19 22:26:19 2023 +0100 removed commented out code Signed-off-by: Jeromy Cannon commit aec75d3c09477e487fc234a6a187c79f150aa70a Author: Jeromy Cannon Date: Tue Sep 19 22:24:54 2023 +0100 FileUtils.getWorkingPath() Signed-off-by: Jeromy Cannon commit 50e2a0e951baf43ba57c36279c61481f0e452948 Author: Jeromy Cannon Date: Tue Sep 19 22:21:05 2023 +0100 remove commented out code Signed-off-by: Jeromy Cannon commit 659283b829c1ec5970af3bb4f55bab6b4ca8425f Author: Jeromy Cannon Date: Tue Sep 19 22:20:56 2023 +0100 remove commented out code Signed-off-by: Jeromy Cannon commit 5fb6e869622137660f6b814da0d269f305491714 Author: Jeromy Cannon Date: Tue Sep 19 22:20:30 2023 +0100 added namespace and create namespace and example chart for installing during build check Signed-off-by: Jeromy Cannon commit 610244141686d233f0b5d36a925cd7af326f8597 Author: Jeromy Cannon Date: Mon Sep 18 19:44:36 2023 +0100 working version Signed-off-by: Jeromy Cannon commit 7e06feb82c183528dbf1afe73a720b3c5ada835e Author: Jeromy Cannon Date: Mon Sep 18 19:29:05 2023 +0100 task working Signed-off-by: Jeromy Cannon commit 19c176bb0a4327934e05150201c9c435c8ae63ba Author: Jeromy Cannon Date: Mon Sep 18 19:06:37 2023 +0100 non-working version Signed-off-by: Jeromy Cannon commit 9e2e66fad05d41c0ecf105f79de128c11879fb98 Author: Jeromy Cannon Date: Mon Sep 18 17:01:59 2023 +0100 compiling version although not executing of moving integration tests into examples Signed-off-by: Jeromy Cannon commit c5a9b8a7af426f6c58b1f39bfbd3b8370098d101 Author: Jeromy Cannon Date: Fri Sep 15 18:30:00 2023 +0100 added logic to set the namespace in the helm install task Signed-off-by: Jeromy Cannon commit dc851979517f8de81bf08973b979a41edf081cd4 Author: Jeromy Cannon Date: Fri Sep 15 17:47:30 2023 +0100 removed duplicate export Signed-off-by: Jeromy Cannon commit 671005905dc539f0a3b7d855d111895183f4f394 Author: Jeromy Cannon Date: Fri Sep 15 17:28:10 2023 +0100 added support for set and values parameters of install subcommand to handle sets Signed-off-by: Jeromy Cannon commit 0d49686b125a15b46a699571a61d4569643de729 Author: Jeromy Cannon Date: Fri Sep 15 17:27:21 2023 +0100 enhanced helm client to handle sets of strings for values and set parameters for the install subcommand Signed-off-by: Jeromy Cannon commit 3f634e0dcd6661a8999acb6ad724a18ce3a9b855 Author: Jeromy Cannon Date: Thu Sep 14 19:39:03 2023 +0100 test nmt install Signed-off-by: Jeromy Cannon commit a760d5252dd4cc1d879f8458a575a9c1c3d4e0ad Author: Jeromy Cannon Date: Thu Sep 14 19:06:12 2023 +0100 update version from 0.7.0 to 0.8.0 Signed-off-by: Jeromy Cannon commit 3c2a99baa72e8da93a36164ceea6fee6e6f46ee5 Author: Jeromy Cannon Date: Thu Sep 14 19:04:34 2023 +0100 todo Signed-off-by: Jeromy Cannon commit 77c59efd807e7cc39c07b9eb32227b690de648b3 Author: Jeromy Cannon Date: Thu Sep 14 18:57:51 2023 +0100 removed comment from FullstackPlugin.java Signed-off-by: Jeromy Cannon commit 840f64bdf6a812f4e941e2158d5747f81cefc6a4 Author: Jeromy Cannon Date: Thu Sep 14 18:56:19 2023 +0100 reordered alphabetically Signed-off-by: Jeromy Cannon commit 28005adc8bf3eed6c9b272b208d720aa1d35dbc4 Author: Jeromy Cannon Date: Thu Sep 14 18:53:54 2023 +0100 added set parameter Signed-off-by: Jeromy Cannon commit 1d03540c971c8023395eff067ce691ec0034bed2 Author: Jeromy Cannon Date: Thu Sep 14 18:32:07 2023 +0100 update after merge from main made a mess (part2) Signed-off-by: Jeromy Cannon commit bb254c67ad698c11120d21c409a9e781173eadd4 Author: Jeromy Cannon Date: Thu Sep 14 18:26:36 2023 +0100 update after merge from main made a mess Signed-off-by: Jeromy Cannon Signed-off-by: Jeromy Cannon commit 7c5b663bdff184d547e8ee7ac0dba1f35376f625 Author: Jeromy Cannon Date: Mon Oct 2 17:07:26 2023 +0100 better rename for options with multiple values Signed-off-by: Jeromy Cannon commit db5283d25087e37a1edd95e42702025fdd7450e6 Author: Jeromy Cannon Date: Mon Sep 25 21:45:18 2023 +0100 updates based on code review Signed-off-by: Jeromy Cannon commit 72757acaacddddd81066af9be9839308f2c4e014 Author: Jeromy Cannon Date: Mon Sep 25 13:40:35 2023 +0100 sonar changes Signed-off-by: Jeromy Cannon commit d1b70f81fc11c8f883d37049c2579d4b15ef7c2c Author: Jeromy Cannon Date: Fri Sep 22 19:55:41 2023 +0100 coverage for ChartInstallRequest.apply() Signed-off-by: Jeromy Cannon commit 622fd315b573a98e15e7fcd93e8cc08e86b55d26 Author: Jeromy Cannon Date: Fri Sep 22 19:55:13 2023 +0100 spotlessApply Signed-off-by: Jeromy Cannon commit 25ca4885142b9cb68ebb842a5dcccc38b710d5f1 Author: Jeromy Cannon Date: Fri Sep 22 18:55:38 2023 +0100 only %n for string.format Signed-off-by: Jeromy Cannon commit c9c45f91d3a64340663751fac4d30424ba96aaad Author: Jeromy Cannon Date: Thu Sep 21 20:26:55 2023 +0100 GMD: Enhance Helm Install to support multiple set and values parameters #366 Signed-off-by: Jeromy Cannon Signed-off-by: Jeromy Cannon --- fullstack-examples/build.gradle.kts | 8 ++- .../gradle/plugin/HelmUninstallChartTask.java | 56 +++++++++++++++++++ .../plugin/HelmInstallChartTaskTest.java | 7 ++- .../plugin/HelmUninstallChartTaskTest.java | 48 ++++++++++++++++ 4 files changed, 116 insertions(+), 3 deletions(-) create mode 100644 fullstack-gradle-plugin/src/main/java/com/hedera/fullstack/gradle/plugin/HelmUninstallChartTask.java create mode 100644 fullstack-gradle-plugin/src/test/java/com/hedera/fullstack/gradle/plugin/HelmUninstallChartTaskTest.java diff --git a/fullstack-examples/build.gradle.kts b/fullstack-examples/build.gradle.kts index 4eabfe398..54b447777 100644 --- a/fullstack-examples/build.gradle.kts +++ b/fullstack-examples/build.gradle.kts @@ -15,6 +15,7 @@ */ import com.hedera.fullstack.gradle.plugin.HelmInstallChartTask +import com.hedera.fullstack.gradle.plugin.HelmUninstallChartTask plugins { id("java") @@ -46,9 +47,12 @@ tasks.register("helmInstallNginxChart") { chart.set("oci://ghcr.io/nginxinc/charts/nginx-ingress") } -// TODO: task register helmUninstallNginxChart +tasks.register("helmUninstallNginxChart") { + namespace.set("nginx-ns") + release.set("nginx-release") +} tasks.check { dependsOn("helmInstallNginxChart") - // TODO: depends on helmUninstallNginxChart + dependsOn("helmUninstallNginxChart") } diff --git a/fullstack-gradle-plugin/src/main/java/com/hedera/fullstack/gradle/plugin/HelmUninstallChartTask.java b/fullstack-gradle-plugin/src/main/java/com/hedera/fullstack/gradle/plugin/HelmUninstallChartTask.java new file mode 100644 index 000000000..860d0e8a9 --- /dev/null +++ b/fullstack-gradle-plugin/src/main/java/com/hedera/fullstack/gradle/plugin/HelmUninstallChartTask.java @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2023 Hedera Hashgraph, LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.hedera.fullstack.gradle.plugin; + +import com.hedera.fullstack.helm.client.HelmClient; +import com.hedera.fullstack.helm.client.HelmClientBuilder; +import org.gradle.api.DefaultTask; +import org.gradle.api.provider.Property; +import org.gradle.api.tasks.Input; +import org.gradle.api.tasks.Optional; +import org.gradle.api.tasks.TaskAction; +import org.gradle.api.tasks.options.Option; + +public abstract class HelmUninstallChartTask extends DefaultTask { + @Input + @Optional + @Option(option = "namespace", description = "The namespace to use when installing the chart") + public abstract Property getNamespace(); + + @Input + @Option(option = "release", description = "The name of the release to install") + public abstract Property getRelease(); + + @TaskAction + void uninstallChart() { + HelmClientBuilder helmClientBuilder = HelmClient.builder(); + if (getNamespace().isPresent()) { + helmClientBuilder.defaultNamespace(getNamespace().get()); + } + HelmClient helmClient = helmClientBuilder.build(); + try { + helmClient.uninstallChart(getRelease().getOrNull()); + } catch (Exception e) { + this.getProject() + .getLogger() + .error( + "HelmUninstallChartTask.uninstallChart() An ERROR occurred while uninstalling the chart: ", + e); + throw e; + } + } +} diff --git a/fullstack-gradle-plugin/src/test/java/com/hedera/fullstack/gradle/plugin/HelmInstallChartTaskTest.java b/fullstack-gradle-plugin/src/test/java/com/hedera/fullstack/gradle/plugin/HelmInstallChartTaskTest.java index e15ca2ee8..101eb4a15 100644 --- a/fullstack-gradle-plugin/src/test/java/com/hedera/fullstack/gradle/plugin/HelmInstallChartTaskTest.java +++ b/fullstack-gradle-plugin/src/test/java/com/hedera/fullstack/gradle/plugin/HelmInstallChartTaskTest.java @@ -98,8 +98,13 @@ void testHelmInstallChartTaskSimple() { }); assertEquals(RELEASE_NAME, helmInstallChartTask.getRelease().get()); helmInstallChartTask.installChart(); + HelmUninstallChartTask helmUninstallChartTask = project.getTasks() + .create("helmUninstallChart", HelmUninstallChartTask.class, task -> { + task.getNamespace().set("simple-test"); + task.getRelease().set(RELEASE_NAME); + }); + helmUninstallChartTask.uninstallChart(); } finally { - suppressExceptions(() -> helmClient.uninstallChart(RELEASE_NAME)); suppressExceptions(() -> helmClient.removeRepository(REPOSITORY)); } } diff --git a/fullstack-gradle-plugin/src/test/java/com/hedera/fullstack/gradle/plugin/HelmUninstallChartTaskTest.java b/fullstack-gradle-plugin/src/test/java/com/hedera/fullstack/gradle/plugin/HelmUninstallChartTaskTest.java new file mode 100644 index 000000000..4fe613124 --- /dev/null +++ b/fullstack-gradle-plugin/src/test/java/com/hedera/fullstack/gradle/plugin/HelmUninstallChartTaskTest.java @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2023 Hedera Hashgraph, LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.hedera.fullstack.gradle.plugin; + +import static org.junit.jupiter.api.Assertions.assertThrows; + +import com.hedera.fullstack.helm.client.HelmExecutionException; +import org.gradle.api.Project; +import org.gradle.testfixtures.ProjectBuilder; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +class HelmUninstallChartTaskTest { + private static Project project; + + @BeforeAll + static void beforeAll() { + project = ProjectBuilder.builder().build(); + } + + @Test + @DisplayName("test an error is thrown when the chart is not found") + void testErrorThrownWhenChartNotFound() { + assertThrows(HelmExecutionException.class, () -> { + HelmUninstallChartTask helmUninstallChartTask = project.getTasks() + .create("helmUninstallNonExistingChartChart", HelmUninstallChartTask.class, task -> { + task.getNamespace().set("test-failure"); + task.getRelease().set("not-a-release"); + }); + helmUninstallChartTask.uninstallChart(); + }); + } +}