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