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.git


The following commit(s) were added to refs/heads/main by this push:
     new ea9e5fb69 feat(traits): telemetry refactoring
ea9e5fb69 is described below

commit ea9e5fb691e14df4cf94964f7a26bd20b88bdbc0
Author: Pasquale Congiusti <pasquale.congiu...@gmail.com>
AuthorDate: Fri Mar 22 13:23:32 2024 +0100

    feat(traits): telemetry refactoring
---
 addons/telemetry/telemetry.go      | 50 +++++++++++++++++++++++++++++++-------
 addons/telemetry/telemetry_test.go | 30 +++++++++++++++--------
 2 files changed, 61 insertions(+), 19 deletions(-)

diff --git a/addons/telemetry/telemetry.go b/addons/telemetry/telemetry.go
index e77f8b97b..ec7f7c858 100644
--- a/addons/telemetry/telemetry.go
+++ b/addons/telemetry/telemetry.go
@@ -18,6 +18,8 @@ limitations under the License.
 package telemetry
 
 import (
+       "fmt"
+
        "k8s.io/utils/pointer"
 
        corev1 "k8s.io/api/core/v1"
@@ -130,30 +132,63 @@ func (t *telemetryTrait) Configure(e *trait.Environment) 
(bool, *trait.TraitCond
 func (t *telemetryTrait) Apply(e *trait.Environment) error {
        util.StringSliceUniqueAdd(&e.Integration.Status.Capabilities, 
v1.CapabilityTelemetry)
 
+       if e.CamelCatalog.Runtime.Capabilities["telemetry"].RuntimeProperties 
!= nil {
+               t.setCatalogConfiguration(e)
+       } else {
+               t.setProperties(e)
+       }
+
+       return nil
+}
+
+func (t *telemetryTrait) setCatalogConfiguration(e *trait.Environment) {
+       if e.ApplicationProperties == nil {
+               e.ApplicationProperties = make(map[string]string)
+       }
+
+       if t.Endpoint != "" {
+               e.ApplicationProperties["camel.k.telemetry.endpoint"] = 
t.Endpoint
+       }
+       if t.ServiceName != "" {
+               e.ApplicationProperties["camel.k.telemetry.serviceName"] = 
fmt.Sprintf("service.name=%s", t.ServiceName)
+       }
+       if t.Sampler != "" {
+               e.ApplicationProperties["camel.k.telemetry.sampler"] = t.Sampler
+       }
+       if t.SamplerRatio != "" {
+               e.ApplicationProperties["camel.k.telemetry.samplerRatio"] = 
t.SamplerRatio
+       }
+       if pointer.BoolDeref(t.SamplerParentBased, true) {
+               e.ApplicationProperties["camel.k.telemetry.samplerParentBased"] 
= "true"
+       } else {
+               e.ApplicationProperties["camel.k.telemetry.samplerParentBased"] 
= "false"
+       }
+
+       for _, cp := range 
e.CamelCatalog.Runtime.Capabilities["telemetry"].RuntimeProperties {
+               e.ApplicationProperties[trait.CapabilityPropertyKey(cp.Key, 
e.ApplicationProperties)] = cp.Value
+       }
+}
+
+// Deprecated: to be removed in future release in favor of func 
setCatalogConfiguration().
+func (t *telemetryTrait) setProperties(e *trait.Environment) {
        if e.CamelCatalog != nil {
                provider := e.CamelCatalog.CamelCatalogSpec.Runtime.Provider
                properties := telemetryProperties[provider]
-
                if appPropEnabled := properties[propEnabled]; appPropEnabled != 
"" {
                        e.ApplicationProperties[appPropEnabled] = "true"
                }
-
                if appPropEndpoint := properties[propEndpoint]; appPropEndpoint 
!= "" && t.Endpoint != "" {
                        e.ApplicationProperties[appPropEndpoint] = t.Endpoint
                }
-
                if appPropServiceName := properties[propServiceName]; 
appPropServiceName != "" && t.ServiceName != "" {
                        e.ApplicationProperties[appPropServiceName] = 
"service.name=" + t.ServiceName
                }
-
                if appPropSampler := properties[propSampler]; appPropSampler != 
"" && t.Sampler != "" {
                        e.ApplicationProperties[appPropSampler] = t.Sampler
                }
-
                if appPropSamplerRatio := properties[propSamplerRatio]; 
appPropSamplerRatio != "" && t.SamplerRatio != "" {
                        e.ApplicationProperties[appPropSamplerRatio] = 
t.SamplerRatio
                }
-
                if appPropSamplerParentBased := 
properties[propSamplerParentBased]; appPropSamplerParentBased != "" {
                        if pointer.BoolDeref(t.SamplerParentBased, true) {
                                
e.ApplicationProperties[appPropSamplerParentBased] = "true"
@@ -161,8 +196,5 @@ func (t *telemetryTrait) Apply(e *trait.Environment) error {
                                
e.ApplicationProperties[appPropSamplerParentBased] = "false"
                        }
                }
-
        }
-
-       return nil
 }
diff --git a/addons/telemetry/telemetry_test.go 
b/addons/telemetry/telemetry_test.go
index 3f4428b46..82820b4ff 100644
--- a/addons/telemetry/telemetry_test.go
+++ b/addons/telemetry/telemetry_test.go
@@ -46,11 +46,16 @@ func TestTelemetryTraitOnDefaultQuarkus(t *testing.T) {
        require.NoError(t, err)
 
        assert.Empty(t, 
e.ApplicationProperties["quarkus.opentelemetry.enabled"])
-       assert.Equal(t, "http://endpoint3";, 
e.ApplicationProperties["quarkus.opentelemetry.tracer.exporter.otlp.endpoint"])
-       assert.Equal(t, "service.name=test", 
e.ApplicationProperties["quarkus.opentelemetry.tracer.resource-attributes"])
-       assert.Equal(t, "on", 
e.ApplicationProperties["quarkus.opentelemetry.tracer.sampler"])
-       assert.Empty(t, 
e.ApplicationProperties["quarkus.opentelemetry.tracer.sampler.ratio"])
-       assert.Equal(t, "true", 
e.ApplicationProperties["quarkus.opentelemetry.tracer.sampler.parent-based"])
+       assert.Equal(t, "http://endpoint3";, 
e.ApplicationProperties["camel.k.telemetry.endpoint"])
+       assert.Equal(t, "service.name=test", 
e.ApplicationProperties["camel.k.telemetry.serviceName"])
+       assert.Equal(t, "on", 
e.ApplicationProperties["camel.k.telemetry.sampler"])
+       assert.Equal(t, "", 
e.ApplicationProperties["camel.k.telemetry.samplerRatio"])
+       assert.Equal(t, "true", 
e.ApplicationProperties["camel.k.telemetry.samplerParentBased"])
+       assert.Equal(t, "${camel.k.telemetry.endpoint}", 
e.ApplicationProperties["quarkus.opentelemetry.tracer.exporter.otlp.endpoint"])
+       assert.Equal(t, "${camel.k.telemetry.serviceName}", 
e.ApplicationProperties["quarkus.opentelemetry.tracer.resource-attributes"])
+       assert.Equal(t, "${camel.k.telemetry.sampler}", 
e.ApplicationProperties["quarkus.opentelemetry.tracer.sampler"])
+       assert.Equal(t, "${camel.k.telemetry.samplerRatio}", 
e.ApplicationProperties["quarkus.opentelemetry.tracer.sampler.ratio"])
+       assert.Equal(t, "${camel.k.telemetry.samplerParentBased}", 
e.ApplicationProperties["quarkus.opentelemetry.tracer.sampler.parent-based"])
 }
 
 func TestTelemetryTraitWithValues(t *testing.T) {
@@ -72,11 +77,16 @@ func TestTelemetryTraitWithValues(t *testing.T) {
        require.NoError(t, err)
 
        assert.Empty(t, 
e.ApplicationProperties["quarkus.opentelemetry.enabled"])
-       assert.Equal(t, "http://endpoint3";, 
e.ApplicationProperties["quarkus.opentelemetry.tracer.exporter.otlp.endpoint"])
-       assert.Equal(t, "service.name=Test", 
e.ApplicationProperties["quarkus.opentelemetry.tracer.resource-attributes"])
-       assert.Equal(t, "ratio", 
e.ApplicationProperties["quarkus.opentelemetry.tracer.sampler"])
-       assert.Equal(t, "0.001", 
e.ApplicationProperties["quarkus.opentelemetry.tracer.sampler.ratio"])
-       assert.Equal(t, "false", 
e.ApplicationProperties["quarkus.opentelemetry.tracer.sampler.parent-based"])
+       assert.Equal(t, "http://endpoint3";, 
e.ApplicationProperties["camel.k.telemetry.endpoint"])
+       assert.Equal(t, "service.name=Test", 
e.ApplicationProperties["camel.k.telemetry.serviceName"])
+       assert.Equal(t, "ratio", 
e.ApplicationProperties["camel.k.telemetry.sampler"])
+       assert.Equal(t, "0.001", 
e.ApplicationProperties["camel.k.telemetry.samplerRatio"])
+       assert.Equal(t, "false", 
e.ApplicationProperties["camel.k.telemetry.samplerParentBased"])
+       assert.Equal(t, "${camel.k.telemetry.endpoint}", 
e.ApplicationProperties["quarkus.opentelemetry.tracer.exporter.otlp.endpoint"])
+       assert.Equal(t, "${camel.k.telemetry.serviceName}", 
e.ApplicationProperties["quarkus.opentelemetry.tracer.resource-attributes"])
+       assert.Equal(t, "${camel.k.telemetry.sampler}", 
e.ApplicationProperties["quarkus.opentelemetry.tracer.sampler"])
+       assert.Equal(t, "${camel.k.telemetry.samplerRatio}", 
e.ApplicationProperties["quarkus.opentelemetry.tracer.sampler.ratio"])
+       assert.Equal(t, "${camel.k.telemetry.samplerParentBased}", 
e.ApplicationProperties["quarkus.opentelemetry.tracer.sampler.parent-based"])
 }
 
 func createEnvironment(t *testing.T, catalogGen func() (*camel.RuntimeCatalog, 
error)) *trait.Environment {

Reply via email to