This is an automated email from the ASF dual-hosted git repository.
davsclaus 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 74cbdc41529 CAMEL-21510: camel-jbang - Kubernetes plugin support for
parameter name (#16562)
74cbdc41529 is described below
commit 74cbdc4152944b438474b8a6ff453e145546f972
Author: Thomas Diesler <[email protected]>
AuthorDate: Mon Dec 16 09:20:41 2024 +0100
CAMEL-21510: camel-jbang - Kubernetes plugin support for parameter name
(#16562)
---
.../camel/dsl/jbang/core/commands/Export.java | 8 +++-
.../dsl/jbang/core/commands/ExportBaseCommand.java | 4 ++
.../apache/camel/dsl/jbang/core/commands/Run.java | 12 +++++-
.../commands/kubernetes/KubernetesBaseCommand.java | 44 ++++++++++++++++++++++
.../core/commands/kubernetes/KubernetesDelete.java | 17 +--------
.../core/commands/kubernetes/KubernetesExport.java | 8 +++-
.../core/commands/kubernetes/KubernetesHelper.java | 14 ++++---
.../core/commands/kubernetes/KubernetesPlugin.java | 2 +-
.../{PodLogs.java => KubernetesPodLogs.java} | 23 ++---------
.../core/commands/kubernetes/KubernetesRun.java | 41 +++++++-------------
.../commands/kubernetes/KubernetesExportTest.java | 14 +++++++
...PodLogsTest.java => KubernetesPodLogsTest.java} | 8 ++--
12 files changed, 118 insertions(+), 77 deletions(-)
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
index 10467b43d1e..efbc89f669d 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
@@ -123,6 +123,7 @@ public class Export extends ExportBaseCommand {
cmd.repositories = this.repositories;
cmd.dependencies = this.dependencies;
cmd.runtime = this.runtime;
+ cmd.name = this.name;
cmd.gav = this.gav;
cmd.mavenSettings = this.mavenSettings;
cmd.mavenSettingsSecurity = this.mavenSettingsSecurity;
@@ -160,6 +161,11 @@ public class Export extends ExportBaseCommand {
}
protected String getProjectName() {
+
+ if (name != null) {
+ return name;
+ }
+
if (gav != null) {
String[] ids = gav.split(":");
if (ids.length > 1) {
@@ -172,7 +178,7 @@ public class Export extends ExportBaseCommand {
}
throw new RuntimeCamelException(
- "Failed to resolve project name - please provide --gav option
or at least one source file");
+ "Failed to resolve project name - please provide --name, --gav
or source file");
}
protected String getVersion() {
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
index 66b74f05034..c15b19bee26 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
@@ -105,6 +105,10 @@ public abstract class ExportBaseCommand extends
CamelCommand {
description = "Runtime (${COMPLETION-CANDIDATES})")
protected RuntimeType runtime;
+ @CommandLine.Option(names = { "--name" },
+ description = "The integration name. Use this when the
name should not get derived otherwise.")
+ protected String name;
+
@CommandLine.Option(names = { "--gav" }, description = "The Maven
group:artifact:version")
protected String gav;
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
index 81bb64b84fb..b217c97bc02 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
@@ -932,9 +932,13 @@ public class Run extends CamelCommand {
eq.excludes = this.excludes;
eq.filePaths = this.filePaths;
eq.files = this.files;
+ eq.name = this.name;
eq.gav = this.gav;
if (eq.gav == null) {
- eq.gav = "org.example.project:jbang-run-dummy:1.0-SNAPSHOT";
+ if (eq.name == null) {
+ eq.name = "jbang-run-dummy";
+ }
+ eq.gav = "org.example.project:" + eq.name + ":1.0-SNAPSHOT";
}
eq.dependencies = this.dependencies;
if (!this.exportRun) {
@@ -999,9 +1003,13 @@ public class Run extends CamelCommand {
eq.excludes = this.excludes;
eq.filePaths = this.filePaths;
eq.files = this.files;
+ eq.name = this.name;
eq.gav = this.gav;
if (eq.gav == null) {
- eq.gav = "org.example.project:jbang-run-dummy:1.0-SNAPSHOT";
+ if (eq.name == null) {
+ eq.name = "jbang-run-dummy";
+ }
+ eq.gav = "org.example.project:" + eq.name + ":1.0-SNAPSHOT";
}
eq.dependencies.addAll(dependencies);
if (!this.exportRun) {
diff --git
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesBaseCommand.java
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesBaseCommand.java
index fdb0aec1a7a..c77146be48c 100644
---
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesBaseCommand.java
+++
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesBaseCommand.java
@@ -17,6 +17,11 @@
package org.apache.camel.dsl.jbang.core.commands.kubernetes;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.function.Supplier;
+
import io.fabric8.kubernetes.api.model.HasMetadata;
import io.fabric8.kubernetes.api.model.KubernetesResourceList;
import io.fabric8.kubernetes.api.model.Pod;
@@ -25,9 +30,13 @@ import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.dsl.NonNamespaceOperation;
import io.fabric8.kubernetes.client.dsl.PodResource;
import io.fabric8.kubernetes.client.dsl.Resource;
+import org.apache.camel.RuntimeCamelException;
import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
+import org.apache.camel.dsl.jbang.core.common.SourceScheme;
+import org.apache.camel.util.FileUtil;
import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.StringHelper;
import picocli.CommandLine;
/**
@@ -45,10 +54,45 @@ public abstract class KubernetesBaseCommand extends
CamelCommand {
@CommandLine.Option(names = { "--namespace", "-n" }, description =
"Namespace to use for all operations")
String namespace;
+ @CommandLine.Option(names = { "--name" },
+ description = "The integration name. Use this when the
name should not get derived otherwise.")
+ String name;
+
+ List<Supplier<String>> projectNameSuppliers = new ArrayList<>();
+
private KubernetesClient kubernetesClient;
public KubernetesBaseCommand(CamelJBangMain main) {
super(main);
+ projectNameSuppliers.add(() -> name);
+ }
+
+ protected String getProjectName() {
+ return
projectNameSuppliers.stream().map(Supplier::get).filter(Objects::nonNull).findFirst()
+ .orElseThrow(() -> new RuntimeCamelException("Failed to
resolve project name"));
+ }
+
+ protected String projectNameFromImage(Supplier<String> imageSupplier) {
+ return
KubernetesHelper.sanitize(StringHelper.beforeLast(imageSupplier.get(), ":"));
+ }
+
+ protected String projectNameFromGav(Supplier<String> gavSupplier) {
+ var gav = gavSupplier.get();
+ if (gav != null) {
+ String[] ids = gav.split(":");
+ if (ids.length > 1) {
+ return KubernetesHelper.sanitize(ids[1]); // artifactId
+ }
+ }
+ return null;
+ }
+
+ protected String projectNameFromFilePath(Supplier<String> pathSupplier) {
+ var filePath = pathSupplier.get();
+ if (filePath != null) {
+ return
KubernetesHelper.sanitize(FileUtil.onlyName(SourceScheme.onlyName(filePath)));
+ }
+ return null;
}
/**
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 243b7859882..341643740bc 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
@@ -23,8 +23,6 @@ import java.util.List;
import io.fabric8.kubernetes.api.model.StatusDetails;
import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
-import org.apache.camel.dsl.jbang.core.common.SourceScheme;
-import org.apache.camel.util.FileUtil;
import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.StringHelper;
import picocli.CommandLine;
@@ -36,10 +34,6 @@ public class KubernetesDelete extends KubernetesBaseCommand {
arity = "0..1", paramLabel = "<file>")
String filePath;
- @CommandLine.Option(names = { "--name" },
- description = "The integration name. Use this when the
name should not get derived from the source file name.")
- String name;
-
@CommandLine.Option(names = { "--working-dir" },
description = "The working directory where to find
exported project sources.")
String workingDir;
@@ -50,6 +44,7 @@ public class KubernetesDelete extends KubernetesBaseCommand {
public KubernetesDelete(CamelJBangMain main) {
super(main);
+ projectNameSuppliers.add(() -> projectNameFromFilePath(() ->
filePath));
}
public Integer doCall() throws Exception {
@@ -64,15 +59,7 @@ public class KubernetesDelete extends KubernetesBaseCommand {
}
}
- 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;
- }
+ String projectName = getProjectName();
// Next, try the project name in the run dir
if (resolvedManifestDir == null) {
diff --git
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExport.java
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExport.java
index ab0eed087da..cf28668bb55 100644
---
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExport.java
+++
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExport.java
@@ -130,6 +130,7 @@ public class KubernetesExport extends Export {
quarkusVersion = configurer.quarkusVersion;
files = configurer.files;
+ name = configurer.name;
gav = configurer.gav;
repositories = configurer.repositories;
dependencies = configurer.dependencies;
@@ -468,10 +469,12 @@ public class KubernetesExport extends Export {
}
protected String getProjectName() {
+ if (name != null) {
+ return KubernetesHelper.sanitize(name);
+ }
if (image != null) {
- return
KubernetesHelper.sanitize(KubernetesHelper.sanitize(StringHelper.beforeLast(image,
":")));
+ return KubernetesHelper.sanitize(StringHelper.beforeLast(image,
":"));
}
-
return KubernetesHelper.sanitize(super.getProjectName());
}
@@ -489,6 +492,7 @@ public class KubernetesExport extends Export {
public record ExportConfigurer(RuntimeType runtime,
String quarkusVersion,
List<String> files,
+ String name,
String gav,
String repositories,
List<String> dependencies,
diff --git
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesHelper.java
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesHelper.java
index 31966980e53..63ede150504 100644
---
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesHelper.java
+++
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesHelper.java
@@ -132,12 +132,14 @@ public final class KubernetesHelper {
* @return sanitized name ready to be used as a Kubernetes resource
name.
*/
public static String sanitize(String name) {
- name = FileUtil.onlyName(name);
- name = StringHelper.sanitize(name);
- name = StringHelper.camelCaseToDash(name);
- name = name.toLowerCase(Locale.US);
- name = name.replaceAll("[^a-z0-9-]", "");
- name = name.trim();
+ if (name != null) {
+ name = FileUtil.onlyName(name);
+ name = StringHelper.sanitize(name);
+ name = StringHelper.camelCaseToDash(name);
+ name = name.toLowerCase(Locale.US);
+ name = name.replaceAll("[^a-z0-9-]", "");
+ name = name.trim();
+ }
return name;
}
diff --git
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesPlugin.java
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesPlugin.java
index 6ca5bc2e3b7..53fb07b93f0 100644
---
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesPlugin.java
+++
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesPlugin.java
@@ -30,7 +30,7 @@ public class KubernetesPlugin implements Plugin {
.addSubcommand("run", new CommandLine(new KubernetesRun(main)))
.addSubcommand("export", new CommandLine(new
KubernetesExport(main)))
.addSubcommand("delete", new CommandLine(new
KubernetesDelete(main)))
- .addSubcommand("logs", new CommandLine(new PodLogs(main)));
+ .addSubcommand("logs", new CommandLine(new
KubernetesPodLogs(main)));
commandLine.addSubcommand("kubernetes", cmd, "k8s");
}
diff --git
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/PodLogs.java
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesPodLogs.java
similarity index 86%
rename from
dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/PodLogs.java
rename to
dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesPodLogs.java
index a726816221d..ebb1d5a95d1 100644
---
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/PodLogs.java
+++
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesPodLogs.java
@@ -25,8 +25,6 @@ import io.fabric8.kubernetes.client.dsl.LogWatch;
import io.fabric8.kubernetes.client.dsl.PodResource;
import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
import org.apache.camel.dsl.jbang.core.commands.kubernetes.traits.BaseTrait;
-import org.apache.camel.dsl.jbang.core.common.SourceScheme;
-import org.apache.camel.util.FileUtil;
import org.apache.camel.util.ObjectHelper;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -34,16 +32,12 @@ import picocli.CommandLine.Command;
import static
org.apache.camel.dsl.jbang.core.commands.kubernetes.KubernetesHelper.getPodPhase;
@Command(name = "logs", description = "Print the logs of a Kubernetes pod",
sortOptions = false)
-public class PodLogs extends KubernetesBaseCommand {
+public class KubernetesPodLogs extends KubernetesBaseCommand {
@CommandLine.Parameters(description = "The Camel file to get logs from.
Integration name is derived from the file name.",
arity = "0..1", paramLabel = "<file>")
protected String filePath;
- @CommandLine.Option(names = { "--name" },
- description = "The integration name. Use this when the
name should not get derived from the source file name.")
- protected String name;
-
@CommandLine.Option(names = { "--label" },
description = "Label name and value used as a pod
selector.")
protected String label;
@@ -66,24 +60,15 @@ public class PodLogs extends KubernetesBaseCommand {
long maxMessageCount = -1;
long messageCount = 0;
- public PodLogs(CamelJBangMain main) {
+ public KubernetesPodLogs(CamelJBangMain main) {
super(main);
+ projectNameSuppliers.add(() -> projectNameFromFilePath(() ->
filePath));
}
public Integer doCall() throws Exception {
- if (name == null && label == null && filePath == null) {
- printer().println("Name or label selector must be set");
- return 1;
- }
-
if (label == null) {
- String projectName;
- if (name != null) {
- projectName = KubernetesHelper.sanitize(name);
- } else {
- projectName =
KubernetesHelper.sanitize(FileUtil.onlyName(SourceScheme.onlyName(filePath)));
- }
+ String projectName = getProjectName();
label = "%s=%s".formatted(BaseTrait.KUBERNETES_LABEL_NAME,
projectName);
}
diff --git
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRun.java
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRun.java
index a677137e175..0d25eb43822 100644
---
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRun.java
+++
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRun.java
@@ -28,7 +28,6 @@ import java.util.concurrent.TimeUnit;
import io.fabric8.kubernetes.api.model.Pod;
import org.apache.camel.CamelContext;
-import org.apache.camel.RuntimeCamelException;
import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
import org.apache.camel.dsl.jbang.core.commands.CommandHelper;
import org.apache.camel.dsl.jbang.core.commands.kubernetes.traits.BaseTrait;
@@ -41,7 +40,6 @@ import
org.apache.camel.support.FileWatcherResourceReloadStrategy;
import org.apache.camel.util.FileUtil;
import org.apache.camel.util.IOHelper;
import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.StringHelper;
import org.apache.camel.util.concurrent.ThreadHelper;
import picocli.CommandLine;
@@ -244,15 +242,22 @@ public class KubernetesRun extends KubernetesBaseCommand {
private Thread devModeShutdownTask;
private int devModeReloadCount;
- private PodLogs reusablePodLogs;
+ private KubernetesPodLogs reusablePodLogs;
public KubernetesRun(CamelJBangMain main) {
- super(main);
+ this(main, null);
}
public KubernetesRun(CamelJBangMain main, String[] files) {
super(main);
filePaths = files;
+ projectNameSuppliers.add(() -> projectNameFromImage(() -> image));
+ projectNameSuppliers.add(() -> projectNameFromGav(() -> gav));
+ projectNameSuppliers.add(() -> projectNameFromFilePath(() ->
firstFilePath()));
+ }
+
+ private String firstFilePath() {
+ return filePaths != null && filePaths.length > 0 ? filePaths[0] : null;
}
public Integer doCall() throws Exception {
@@ -328,6 +333,7 @@ public class KubernetesRun extends KubernetesBaseCommand {
runtime,
quarkusVersion,
List.of(filePaths),
+ name,
gav,
repositories,
dependencies,
@@ -382,11 +388,12 @@ public class KubernetesRun extends KubernetesBaseCommand {
}
private void setupDevMode(String projectName, String workingDir) throws
Exception {
+ String firstPath = firstFilePath();
String watchDir = ".";
FileFilter filter = null;
- if (filePaths != null && filePaths.length > 0) {
- String filePath =
FileUtil.onlyPath(SourceScheme.onlyName(filePaths[0]));
+ if (firstPath != null) {
+ String filePath =
FileUtil.onlyPath(SourceScheme.onlyName(firstPath));
if (filePath != null) {
watchDir = filePath;
}
@@ -465,7 +472,7 @@ public class KubernetesRun extends KubernetesBaseCommand {
private void startPodLogging(String projectName) throws Exception {
try {
- reusablePodLogs = new PodLogs(getMain());
+ reusablePodLogs = new KubernetesPodLogs(getMain());
if (!ObjectHelper.isEmpty(namespace)) {
reusablePodLogs.namespace = namespace;
}
@@ -605,24 +612,4 @@ public class KubernetesRun extends KubernetesBaseCommand {
return 0;
}
-
- private String getProjectName() {
- if (image != null) {
- return KubernetesHelper.sanitize(StringHelper.beforeLast(image,
":"));
- }
-
- if (gav != null) {
- String[] ids = gav.split(":");
- if (ids.length > 1) {
- return KubernetesHelper.sanitize(ids[1]); // artifactId
- }
- }
-
- if (filePaths != null && filePaths.length > 0) {
- return
KubernetesHelper.sanitize(FileUtil.onlyName(SourceScheme.onlyName(filePaths[0])));
- }
-
- throw new RuntimeCamelException(
- "Failed to resolve project name - please provide --gav,
--image option or at least one source file");
- }
}
diff --git
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportTest.java
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportTest.java
index e9f3b111784..1e5bf3044c9 100644
---
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportTest.java
+++
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportTest.java
@@ -63,6 +63,20 @@ class KubernetesExportTest extends KubernetesExportBaseTest {
Assertions.assertEquals("1.0.0", model.getVersion());
}
+ @ParameterizedTest
+ @MethodSource("runtimeProvider")
+ public void shouldGenerateNamedProject(RuntimeType rt) throws Exception {
+ KubernetesExport command = createCommand(new String[] {
"classpath:route.yaml" },
+ "--name=projName", "--runtime=" + rt.runtime());
+ int exit = command.doCall();
+ Assertions.assertEquals(0, exit);
+
+ Model model = readMavenModel();
+ Assertions.assertEquals("org.example.project", model.getGroupId());
+ Assertions.assertEquals("proj-name", model.getArtifactId());
+ Assertions.assertEquals("1.0-SNAPSHOT", model.getVersion());
+ }
+
@ParameterizedTest
@MethodSource("runtimeProvider")
public void shouldGenerateKubernetesManifest(RuntimeType rt) throws
Exception {
diff --git
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/PodLogsTest.java
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesPodLogsTest.java
similarity index 90%
rename from
dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/PodLogsTest.java
rename to
dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesPodLogsTest.java
index 4b7dcdb4be5..1575b93bc0e 100644
---
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/PodLogsTest.java
+++
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesPodLogsTest.java
@@ -29,11 +29,11 @@ import
org.junit.jupiter.api.condition.DisabledIfSystemProperty;
@DisabledIfSystemProperty(named = "ci.env.name", matches = ".*",
disabledReason = "Requires too much network
resources")
-class PodLogsTest extends KubernetesBaseTest {
+class KubernetesPodLogsTest extends KubernetesBaseTest {
@Test
public void shouldHandlePodNotFound() throws Exception {
- PodLogs command = createCommand();
+ KubernetesPodLogs command = createCommand();
command.name = "mickey-mouse";
command.maxRetryAttempts = 2; // total timeout of 4 seconds
int exit = command.doCall();
@@ -64,8 +64,8 @@ class PodLogsTest extends KubernetesBaseTest {
Assertions.assertEquals(0, exit);
}
- private PodLogs createCommand() {
- PodLogs command = new PodLogs(new
CamelJBangMain().withPrinter(printer));
+ private KubernetesPodLogs createCommand() {
+ KubernetesPodLogs command = new KubernetesPodLogs(new
CamelJBangMain().withPrinter(printer));
command.withClient(kubernetesClient);
return command;
}