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());
     }
 

Reply via email to