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 <[email protected]>
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());
}