This is an automated email from the ASF dual-hosted git repository. gfournier pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push: new 42d1bf5c4b4 CAMEL-21466: camel-jbang - camel k8s delete may not cleanup properly 42d1bf5c4b4 is described below commit 42d1bf5c4b4d1003d99f65249ba6a2d4253d6b99 Author: Thomas Diesler <tdies...@redhat.com> AuthorDate: Wed Dec 11 16:11:26 2024 +0100 CAMEL-21466: camel-jbang - camel k8s delete may not cleanup properly --- .../core/commands/kubernetes/KubernetesDelete.java | 61 ++++++++++++++++------ .../commands/kubernetes/KubernetesDeleteTest.java | 2 +- 2 files changed, 45 insertions(+), 18 deletions(-) diff --git a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesDelete.java b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesDelete.java index 226f050adb1..243b7859882 100644 --- a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesDelete.java +++ b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesDelete.java @@ -53,38 +53,65 @@ public class KubernetesDelete extends KubernetesBaseCommand { } public Integer doCall() throws Exception { - File resolvedWorkingDir; + + // First, try the explicit workingDir + File resolvedManifestDir = null; if (workingDir != null) { - resolvedWorkingDir = new File(workingDir); + File resolvedWorkingDir = new File(workingDir); + File candidateDir = new File(resolvedWorkingDir, "target/kubernetes"); + if (candidateDir.isDirectory()) { + resolvedManifestDir = candidateDir; + } + } + + String projectName; + if (name != null) { + projectName = KubernetesHelper.sanitize(name); + } else if (filePath != null) { + projectName = KubernetesHelper.sanitize(FileUtil.onlyName(SourceScheme.onlyName(filePath))); } else { - String projectName; - if (name != null) { - projectName = KubernetesHelper.sanitize(name); - } else if (filePath != null) { - projectName = KubernetesHelper.sanitize(FileUtil.onlyName(SourceScheme.onlyName(filePath))); - } else { - printer().println("Name or source file must be set"); - return 1; + printer().println("Name or source file must be set"); + return 1; + } + + // Next, try the project name in the run dir + if (resolvedManifestDir == null) { + File resolvedWorkingDir = new File(RUN_PLATFORM_DIR + "/" + projectName); + File candidateDir = new File(resolvedWorkingDir, "target/kubernetes"); + if (candidateDir.isDirectory()) { + resolvedManifestDir = candidateDir; } + } - resolvedWorkingDir = new File(RUN_PLATFORM_DIR + "/" + projectName); + // Next, try the project name in the current dir + if (resolvedManifestDir == null) { + File candidateDir = new File("./target/kubernetes"); + if (candidateDir.isDirectory()) { + resolvedManifestDir = candidateDir; + } } - if (!resolvedWorkingDir.exists()) { - printer().printf("Failed to resolve exported project from path '%s'%n", resolvedWorkingDir); + if (resolvedManifestDir == null) { + printer().printf("Failed to resolve exported project: %s%n", projectName); return 1; } - File resolvedManifestDir = new File(resolvedWorkingDir, "target/kubernetes"); File manifest = KubernetesHelper.resolveKubernetesManifest(clusterType, resolvedManifestDir); + printer().printf("Deleting resources from manifest: %s%n", manifest); + try (FileInputStream fis = new FileInputStream(manifest)) { List<StatusDetails> status; + var loadedResources = client().load(fis); if (!ObjectHelper.isEmpty(namespace)) { - status = client().load(fis).inNamespace(namespace).delete(); + status = loadedResources.inNamespace(namespace).delete(); } else { - status = client().load(fis).delete(); + // First, let the client choose the default namespace + status = loadedResources.delete(); + // Next, explicitly name the default namespace + if (status.isEmpty()) { + status = loadedResources.inNamespace("default").delete(); + } } - status.forEach(s -> printer().printf("Deleted: %s '%s'%n", StringHelper.capitalize(s.getKind()), s.getName())); } diff --git a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesDeleteTest.java b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesDeleteTest.java index 644092fcc2d..d8ed4d6e6f8 100644 --- a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesDeleteTest.java +++ b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesDeleteTest.java @@ -95,7 +95,7 @@ class KubernetesDeleteTest extends KubernetesBaseTest { int exit = command.doCall(); Assertions.assertEquals(1, exit); - Assertions.assertEquals("Failed to resolve exported project from path '.camel-jbang-run/does-not-exist'", + Assertions.assertEquals("Failed to resolve exported project: does-not-exist", printer.getOutput()); }