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 {