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 95ed2010c97 CAMEL-19708: camel-jbang - Export Main should support YAML
resource fragments for kubernetes support
95ed2010c97 is described below
commit 95ed2010c972e711f72be8a2b7c1993018f92ffd
Author: Claus Ibsen <[email protected]>
AuthorDate: Sun Aug 6 08:44:58 2023 +0200
CAMEL-19708: camel-jbang - Export Main should support YAML resource
fragments for kubernetes support
---
.../modules/ROOT/pages/camel-jbang.adoc | 24 ++++++++++++++++++++++
.../dsl/jbang/core/commands/ExportBaseCommand.java | 11 +++++++++-
.../apache/camel/dsl/jbang/core/commands/Run.java | 15 ++++++++++++++
3 files changed, 49 insertions(+), 1 deletion(-)
diff --git a/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
b/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
index db2b5843e91..aea0e83d456 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
@@ -2246,6 +2246,30 @@ jkube.recreate=true
You can find more details in the https://eclipse.dev/jkube/docs/[Eclipse
JKube] and
https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin[Jib]
documentations.
+===== Resource fragments
+
+Resource fragments allows to store external configuration in YAML resource
descriptions, which
+will be exported to `src/main/jkube` directory.
+
+Camel JBang will export files that ends with `jkube.yaml` or `jkube.yml` into
`src/main/jkube` directory.
+
+For example having the following file named `configmap.jkube.yaml`:
+
+[source,yaml]
+----
+metadata:
+ name: ${project.artifactId}
+data:
+ application.properties: |
+ # spring application properties file
+ welcome = Hello from Kubernetes ConfigMap!!!
+ dummy = some value
+----
+
+Will let Camel JBang export this into as `src/main/jkube/configmap.yaml`.
+
+You can find more information about resource fragments at the
https://eclipse.dev/jkube/docs/kubernetes-maven-plugin/#_resource_fragments[Eclipse
JKube] website.
+
=== Exporting with selected files
By default, Camel will export what was last run, or all files from the current
directory.
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 bd7df4db115..8ddc2dd4339 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
@@ -65,7 +65,8 @@ abstract class ExportBaseCommand extends CamelCommand {
"camel.component.properties.location",
"camel.component.kamelet.location",
"camel.jbang.classpathFiles",
- "camel.jbang.localKameletDir"
+ "camel.jbang.localKameletDir",
+ "camel.jbang.jkubeFiles"
};
private static final Pattern PACKAGE_PATTERN = Pattern.compile(
@@ -417,6 +418,7 @@ abstract class ExportBaseCommand extends CamelCommand {
boolean camel =
"camel.main.routesIncludePattern".equals(k);
boolean kamelet =
"camel.component.kamelet.location".equals(k)
|| "camel.jbang.localKameletDir".equals(k);
+ boolean jkube = "camel.jbang.jkubeFiles".equals(k);
File target = java ? srcJavaDir : camel ?
srcCamelResourcesDir : srcResourcesDir;
File source = new File(f);
File out;
@@ -429,6 +431,13 @@ abstract class ExportBaseCommand extends CamelCommand {
if (kamelet) {
out = srcKameletsResourcesDir;
safeCopy(source, out, true);
+ } else if (jkube) {
+ // file should be renamed and moved into
src/main/jkube
+ f = f.replace(".jkube.yaml", ".yaml");
+ f = f.replace(".jkube.yml", ".yml");
+ out = new
File(srcCamelResourcesDir.getParentFile().getParentFile(), "jkube/" + f);
+ out.mkdirs();
+ safeCopy(source, out, true);
} else {
safeCopy(source, out, true);
}
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 e8f0ca92555..698daed3455 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
@@ -440,6 +440,7 @@ public class Run extends CamelCommand {
StringJoiner sjReload = new StringJoiner(",");
StringJoiner sjClasspathFiles = new StringJoiner(",");
StringJoiner sjKamelets = new StringJoiner(",");
+ StringJoiner sjJKubeFiles = new StringJoiner(",");
// include generated openapi to files to run
if (openapi != null) {
@@ -451,6 +452,10 @@ public class Run extends CamelCommand {
file = loadFromClipboard(file);
} else if (skipFile(file)) {
continue;
+ } else if (jkubeFile(file)) {
+ // jkube
+ sjJKubeFiles.add(file);
+ continue;
} else if (!knownFile(file) && !file.endsWith(".properties")) {
// non known files to be added on classpath
sjClasspathFiles.add(file);
@@ -549,6 +554,12 @@ public class Run extends CamelCommand {
} else {
writeSetting(main, profileProperties,
"camel.jbang.classpathFiles", () -> null);
}
+ if (sjJKubeFiles.length() > 0) {
+ main.addInitialProperty("camel.jbang.jkubeFiles",
sjJKubeFiles.toString());
+ writeSettings("camel.jbang.jkubeFiles", sjJKubeFiles.toString());
+ } else {
+ writeSetting(main, profileProperties, "camel.jbang.jkubeFiles", ()
-> null);
+ }
if (sjKamelets.length() > 0) {
String loc =
main.getInitialProperties().getProperty("camel.component.kamelet.location");
@@ -1078,6 +1089,10 @@ public class Run extends CamelCommand {
return false;
}
+ private boolean jkubeFile(String name) {
+ return name.endsWith(".jkube.yaml") || name.endsWith(".jkube.yml");
+ }
+
private void writeSettings(String key, String value) {
FileOutputStream fos = null;
try {