This is an automated email from the ASF dual-hosted git repository.

pcongiusti pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k-runtime.git


The following commit(s) were added to refs/heads/main by this push:
     new 1511044b feat(catalog): leverage placeholders
1511044b is described below

commit 1511044b7068fc380b98e0d4408a8dec554976ca
Author: Pasquale Congiusti <pasquale.congiu...@gmail.com>
AuthorDate: Thu Mar 21 15:38:32 2024 +0100

    feat(catalog): leverage placeholders
    
    This may help reaching a higher degree of cross compatibility between 
runtimes
---
 .../camel/k/catalog/model/CamelCapability.java     | 16 ++++++--
 .../src/it/generate-catalog/verify.groovy          | 47 +++++++++++++++-------
 .../camel/k/tooling/maven/GenerateCatalogMojo.java | 34 ++++++++--------
 3 files changed, 61 insertions(+), 36 deletions(-)

diff --git 
a/support/camel-k-catalog-model/src/main/java/org/apache/camel/k/catalog/model/CamelCapability.java
 
b/support/camel-k-catalog-model/src/main/java/org/apache/camel/k/catalog/model/CamelCapability.java
index 769e48db..d0fbd876 100644
--- 
a/support/camel-k-catalog-model/src/main/java/org/apache/camel/k/catalog/model/CamelCapability.java
+++ 
b/support/camel-k-catalog-model/src/main/java/org/apache/camel/k/catalog/model/CamelCapability.java
@@ -40,15 +40,15 @@ public interface CamelCapability {
     @Value.Auxiliary
     @Value.Default
     @Value.NaturalOrder
-    default SortedMap<String, String> getRuntimeProperties() {
-        return Collections.emptySortedMap();
+    default SortedSet<Property> getRuntimeProperties() {
+        return Collections.emptySortedSet();
     }
 
     @Value.Auxiliary
     @Value.Default
     @Value.NaturalOrder
-    default SortedMap<String, String> getBuildTimeProperties() {
-        return Collections.emptySortedMap();
+    default SortedSet<Property> getBuildTimeProperties() {
+        return Collections.emptySortedSet();
     }
 
     @Value.Auxiliary
@@ -74,5 +74,13 @@ public interface CamelCapability {
                 return super.addDependencies(Artifact.from(groupId, 
artifactId, classifier.get()));
             }
         }
+
+        public Builder addRuntimeProperty(String key, String val) {
+            return super.addRuntimeProperty(Property.from(key, val));
+        }
+
+        public Builder addBuildTimeProperty(String key, String val) {
+            return super.addBuildTimeProperty(Property.from(key, val));
+        }
     }
 }
diff --git a/support/camel-k-maven-plugin/src/it/generate-catalog/verify.groovy 
b/support/camel-k-maven-plugin/src/it/generate-catalog/verify.groovy
index 5568b822..963ce052 100644
--- a/support/camel-k-maven-plugin/src/it/generate-catalog/verify.groovy
+++ b/support/camel-k-maven-plugin/src/it/generate-catalog/verify.groovy
@@ -49,24 +49,41 @@ new File(basedir, "catalog.yaml").withReader {
     assert catalog.spec.runtime.capabilities['master'].dependencies[0].groupId 
== 'org.apache.camel.k'
     assert 
catalog.spec.runtime.capabilities['master'].dependencies[0].artifactId == 
'camel-k-master'
     // Logging properties
-    assert 
catalog.spec.runtime.capabilities['logging'].runtimeProperties.color == 
'quarkus.console.color'
-    assert 
catalog.spec.runtime.capabilities['logging'].runtimeProperties.format == 
'quarkus.log.console.format'
-    assert catalog.spec.runtime.capabilities['logging'].runtimeProperties.json 
== 'quarkus.log.console.json'
-    assert 
catalog.spec.runtime.capabilities['logging'].runtimeProperties.jsonPrettyPrint 
== 'quarkus.log.console.json.pretty-print'
-    assert 
catalog.spec.runtime.capabilities['logging'].runtimeProperties.level == 
'quarkus.log.level'
+    assert 
catalog.spec.runtime.capabilities['logging'].runtimeProperties[0].key == 
'quarkus.console.color'
+    assert 
catalog.spec.runtime.capabilities['logging'].runtimeProperties[0].value == 
'${camel.k.logging.color}'
+    assert 
catalog.spec.runtime.capabilities['logging'].runtimeProperties[1].key == 
'quarkus.log.console.format'
+    assert 
catalog.spec.runtime.capabilities['logging'].runtimeProperties[1].value == 
'${camel.k.logging.format}'
+    assert 
catalog.spec.runtime.capabilities['logging'].runtimeProperties[2].key == 
'quarkus.log.console.json'
+    assert 
catalog.spec.runtime.capabilities['logging'].runtimeProperties[2].value == 
'${camel.k.logging.json}'
+    assert 
catalog.spec.runtime.capabilities['logging'].runtimeProperties[3].key == 
'quarkus.log.console.json.pretty-print'
+    assert 
catalog.spec.runtime.capabilities['logging'].runtimeProperties[3].value == 
'${camel.k.logging.jsonPrettyPrint}'
+    assert 
catalog.spec.runtime.capabilities['logging'].runtimeProperties[4].key == 
'quarkus.log.level'
+    assert 
catalog.spec.runtime.capabilities['logging'].runtimeProperties[4].value == 
'${camel.k.logging.level}'
     // Master properties
-    assert 
catalog.spec.runtime.capabilities['master'].runtimeProperties.labelKeyFormat == 
'quarkus.camel.cluster.kubernetes.labels.\"%s\"'
-    assert 
catalog.spec.runtime.capabilities['master'].runtimeProperties.resourceName == 
'quarkus.camel.cluster.kubernetes.resource-name'
-    assert 
catalog.spec.runtime.capabilities['master'].runtimeProperties.resourceType == 
'quarkus.camel.cluster.kubernetes.resource-type'
-    assert 
catalog.spec.runtime.capabilities['master'].buildTimeProperties.enabled == 
'quarkus.camel.cluster.kubernetes.enabled'
+    assert 
catalog.spec.runtime.capabilities['master'].runtimeProperties[0].key == 
'quarkus.camel.cluster.kubernetes.labels."${camel.k.master.labelKey}"'
+    assert 
catalog.spec.runtime.capabilities['master'].runtimeProperties[0].value == 
'${camel.k.master.labelValue}'
+    assert 
catalog.spec.runtime.capabilities['master'].runtimeProperties[1].key == 
'quarkus.camel.cluster.kubernetes.resource-name'
+    assert 
catalog.spec.runtime.capabilities['master'].runtimeProperties[1].value == 
'${camel.k.master.resourceName}'
+    assert 
catalog.spec.runtime.capabilities['master'].runtimeProperties[2].key == 
'quarkus.camel.cluster.kubernetes.resource-type'
+    assert 
catalog.spec.runtime.capabilities['master'].runtimeProperties[2].value == 
'${camel.k.master.resourceType}'
+    assert 
catalog.spec.runtime.capabilities['master'].buildTimeProperties[0].key == 
'quarkus.camel.cluster.kubernetes.enabled'
+    assert 
catalog.spec.runtime.capabilities['master'].buildTimeProperties[0].value == 
'${camel.k.master.enabled}'
     // Telemetry properties
-    assert 
catalog.spec.runtime.capabilities['telemetry'].runtimeProperties.endpoint == 
'quarkus.opentelemetry.tracer.exporter.otlp.endpoint'
-    assert 
catalog.spec.runtime.capabilities['telemetry'].runtimeProperties.sampler == 
'quarkus.opentelemetry.tracer.sampler'
-    assert 
catalog.spec.runtime.capabilities['telemetry'].runtimeProperties.samplerParentBased
 == 'quarkus.opentelemetry.tracer.sampler.parent-based'
-    assert 
catalog.spec.runtime.capabilities['telemetry'].runtimeProperties.samplerRatio 
== 'quarkus.opentelemetry.tracer.sampler.ratio'
-    assert 
catalog.spec.runtime.capabilities['telemetry'].runtimeProperties.serviceName == 
'quarkus.opentelemetry.tracer.resource-attributes'
+    assert 
catalog.spec.runtime.capabilities['telemetry'].runtimeProperties[0].key == 
'quarkus.opentelemetry.tracer.exporter.otlp.endpoint'
+    assert 
catalog.spec.runtime.capabilities['telemetry'].runtimeProperties[0].value == 
'${camel.k.telemetry.endpoint}'
+    assert 
catalog.spec.runtime.capabilities['telemetry'].runtimeProperties[1].key == 
'quarkus.opentelemetry.tracer.resource-attributes'
+    assert 
catalog.spec.runtime.capabilities['telemetry'].runtimeProperties[1].value == 
'${camel.k.telemetry.serviceName}'
+    assert 
catalog.spec.runtime.capabilities['telemetry'].runtimeProperties[2].key == 
'quarkus.opentelemetry.tracer.sampler'
+    assert 
catalog.spec.runtime.capabilities['telemetry'].runtimeProperties[2].value == 
'${camel.k.telemetry.sampler}'
+    assert 
catalog.spec.runtime.capabilities['telemetry'].runtimeProperties[3].key == 
'quarkus.opentelemetry.tracer.sampler.parent-based'
+    assert 
catalog.spec.runtime.capabilities['telemetry'].runtimeProperties[3].value == 
'${camel.k.telemetry.samplerParentBased}'
+    assert 
catalog.spec.runtime.capabilities['telemetry'].runtimeProperties[4].key == 
'quarkus.opentelemetry.tracer.sampler.ratio'
+    assert 
catalog.spec.runtime.capabilities['telemetry'].runtimeProperties[4].value == 
'${camel.k.telemetry.samplerRatio}'
+
     // Service Binding properties
-    assert 
catalog.spec.runtime.capabilities['service-binding'].runtimeProperties.enabled 
== 'quarkus.kubernetes-service-binding.enabled'
+    assert 
catalog.spec.runtime.capabilities['service-binding'].runtimeProperties[0].key 
== 'quarkus.kubernetes-service-binding.enabled'
+    assert 
catalog.spec.runtime.capabilities['service-binding'].runtimeProperties[0].value 
== '${camel.k.serviceBinding.enabled}'
+
     // Health properties
     assert 
catalog.spec.runtime.capabilities['health'].metadata.defaultLivenessProbePath 
== '/q/health/live'
     assert 
catalog.spec.runtime.capabilities['health'].metadata.defaultReadinessProbePath 
== '/q/health/ready'
diff --git 
a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java
 
b/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java
index 973535d2..f99af214 100644
--- 
a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java
+++ 
b/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java
@@ -492,11 +492,11 @@ public class GenerateCatalogMojo extends AbstractMojo {
         artifacts.clear();
         artifacts.add(Artifact.from("org.apache.camel.quarkus", 
"camel-quarkus-opentelemetry"));
         properties.clear();
-        properties.add(Property.from("endpoint", 
"quarkus.opentelemetry.tracer.exporter.otlp.endpoint"));
-        properties.add(Property.from("serviceName", 
"quarkus.opentelemetry.tracer.resource-attributes"));
-        properties.add(Property.from("sampler", 
"quarkus.opentelemetry.tracer.sampler"));
-        properties.add(Property.from("samplerRatio", 
"quarkus.opentelemetry.tracer.sampler.ratio"));
-        properties.add(Property.from("samplerParentBased", 
"quarkus.opentelemetry.tracer.sampler.parent-based"));
+        
properties.add(Property.from("quarkus.opentelemetry.tracer.exporter.otlp.endpoint",
 "${camel.k.telemetry.endpoint}"));
+        
properties.add(Property.from("quarkus.opentelemetry.tracer.resource-attributes",
 "${camel.k.telemetry.serviceName}"));
+        properties.add(Property.from("quarkus.opentelemetry.tracer.sampler", 
"${camel.k.telemetry.sampler}"));
+        
properties.add(Property.from("quarkus.opentelemetry.tracer.sampler.ratio", 
"${camel.k.telemetry.samplerRatio}"));
+        
properties.add(Property.from("quarkus.opentelemetry.tracer.sampler.parent-based",
 "${camel.k.telemetry.samplerParentBased}"));
         addCapability(runtimeSpec, catalogSpec, "telemetry", artifacts, 
properties, new ArrayList<>(), new ArrayList<>(), false);
 
         artifacts.clear();
@@ -507,11 +507,11 @@ public class GenerateCatalogMojo extends AbstractMojo {
         artifacts.clear();
         artifacts.add(Artifact.from("org.apache.camel.k", "camel-k-master"));
         properties.clear();
-        properties.add(Property.from("resourceName", 
"quarkus.camel.cluster.kubernetes.resource-name"));
-        properties.add(Property.from("resourceType", 
"quarkus.camel.cluster.kubernetes.resource-type"));
-        properties.add(Property.from("labelKeyFormat", 
"quarkus.camel.cluster.kubernetes.labels.\"%s\""));
+        
properties.add(Property.from("quarkus.camel.cluster.kubernetes.resource-name", 
"${camel.k.master.resourceName}"));
+        
properties.add(Property.from("quarkus.camel.cluster.kubernetes.resource-type", 
"${camel.k.master.resourceType}"));
+        
properties.add(Property.from("quarkus.camel.cluster.kubernetes.labels.\"${camel.k.master.labelKey}\"",
 "${camel.k.master.labelValue}"));
         List<Property> buildTimeProps = new ArrayList<>();
-        buildTimeProps.add(Property.from("enabled", 
"quarkus.camel.cluster.kubernetes.enabled"));
+        
buildTimeProps.add(Property.from("quarkus.camel.cluster.kubernetes.enabled", 
"${camel.k.master.enabled}"));
         addCapability(runtimeSpec, catalogSpec, "master", artifacts, 
properties, buildTimeProps, new ArrayList<>(), true);
 
         artifacts.clear();
@@ -548,16 +548,16 @@ public class GenerateCatalogMojo extends AbstractMojo {
 
         artifacts.clear();
         properties.clear();
-        properties.add(Property.from("level", "quarkus.log.level"));
-        properties.add(Property.from("color", "quarkus.console.color"));
-        properties.add(Property.from("format", "quarkus.log.console.format"));
-        properties.add(Property.from("json", "quarkus.log.console.json"));
-        properties.add(Property.from("jsonPrettyPrint", 
"quarkus.log.console.json.pretty-print"));
+        properties.add(Property.from("quarkus.log.level", 
"${camel.k.logging.level}"));
+        properties.add(Property.from("quarkus.console.color", 
"${camel.k.logging.color}"));
+        properties.add(Property.from("quarkus.log.console.format", 
"${camel.k.logging.format}"));
+        properties.add(Property.from("quarkus.log.console.json", 
"${camel.k.logging.json}"));
+        properties.add(Property.from("quarkus.log.console.json.pretty-print", 
"${camel.k.logging.jsonPrettyPrint}"));
         addCapability(runtimeSpec, catalogSpec, "logging", artifacts, 
properties, new ArrayList<>(), new ArrayList<>(), false);
 
         artifacts.clear();
         properties.clear();
-        properties.add(Property.from("enabled", 
"quarkus.kubernetes-service-binding.enabled"));
+        
properties.add(Property.from("quarkus.kubernetes-service-binding.enabled", 
"${camel.k.serviceBinding.enabled}"));
         addCapability(runtimeSpec, catalogSpec, "service-binding", artifacts, 
properties, new ArrayList<>(), new ArrayList<>(), false);
     }
 
@@ -585,10 +585,10 @@ public class GenerateCatalogMojo extends AbstractMojo {
     if (capabilitiesExclusionList != null && 
!capabilitiesExclusionList.contains(name)) {
         CamelCapability.Builder capBuilder = new CamelCapability.Builder();
         runtimeProperties.forEach(property -> {
-            capBuilder.putRuntimeProperty(property.getKey(), 
property.getValue());
+            capBuilder.addRuntimeProperty(property.getKey(), 
property.getValue());
         });
         buildTimeProperties.forEach(property -> {
-            capBuilder.putBuildTimeProperty(property.getKey(), 
property.getValue());
+            capBuilder.addBuildTimeProperty(property.getKey(), 
property.getValue());
         });
         metadataProperties.forEach(property -> {
             capBuilder.putMetadata(property.getKey(), property.getValue());

Reply via email to