From 821b8f1cb8625a573a12e61c03d2ebb6b36a0042 Mon Sep 17 00:00:00 2001 From: Pasquale Congiusti Date: Tue, 13 Aug 2024 15:03:27 +0200 Subject: [PATCH] chore(traits): remove tracing --- addons/register_opentracing.go | 27 ----- addons/tracing/discovery/jaeger.go | 73 ------------ addons/tracing/discovery/locator.go | 34 ------ addons/tracing/test_support.go | 21 ---- addons/tracing/tracing.go | 153 ------------------------- addons/tracing/tracing_test.go | 76 ------------ addons/tracing/zz_desc_generated.go | 1 - addons/tracing/zz_generated_doc.go | 1 - docs/modules/ROOT/nav.adoc | 1 - docs/modules/traits/pages/tracing.adoc | 61 ---------- 10 files changed, 448 deletions(-) delete mode 100644 addons/register_opentracing.go delete mode 100644 addons/tracing/discovery/jaeger.go delete mode 100644 addons/tracing/discovery/locator.go delete mode 100644 addons/tracing/test_support.go delete mode 100644 addons/tracing/tracing.go delete mode 100644 addons/tracing/tracing_test.go delete mode 100644 addons/tracing/zz_desc_generated.go delete mode 100644 addons/tracing/zz_generated_doc.go delete mode 100644 docs/modules/traits/pages/tracing.adoc diff --git a/addons/register_opentracing.go b/addons/register_opentracing.go deleted file mode 100644 index 6b28d49eed..0000000000 --- a/addons/register_opentracing.go +++ /dev/null @@ -1,27 +0,0 @@ -/* -Licensed to the Apache Software Foundation (ASF) under one or more -contributor license agreements. See the NOTICE file distributed with -this work for additional information regarding copyright ownership. -The ASF licenses this file to You under the Apache License, Version 2.0 -(the "License"); you may not use this file except in compliance with -the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package addons - -import ( - "github.com/apache/camel-k/v2/addons/tracing" - "github.com/apache/camel-k/v2/pkg/trait" -) - -func init() { - trait.AddToTraits(tracing.NewTracingTrait) -} diff --git a/addons/tracing/discovery/jaeger.go b/addons/tracing/discovery/jaeger.go deleted file mode 100644 index 27d822a2b0..0000000000 --- a/addons/tracing/discovery/jaeger.go +++ /dev/null @@ -1,73 +0,0 @@ -/* -Licensed to the Apache Software Foundation (ASF) under one or more -contributor license agreements. See the NOTICE file distributed with -this work for additional information regarding copyright ownership. -The ASF licenses this file to You under the Apache License, Version 2.0 -(the "License"); you may not use this file except in compliance with -the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package discovery - -import ( - "context" - "fmt" - "sort" - "strings" - - "github.com/apache/camel-k/v2/pkg/client" - "github.com/apache/camel-k/v2/pkg/trait" - "github.com/apache/camel-k/v2/pkg/util/log" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -type JaegerTracingLocator struct { - allowHeadless bool -} - -const ( - jaegerPortName = "http-c-binary-trft" -) - -func (loc *JaegerTracingLocator) FindEndpoint(ctx context.Context, c client.Client, l log.Logger, e *trait.Environment) (string, error) { - opts := metav1.ListOptions{ - LabelSelector: "app.kubernetes.io/part-of=jaeger,app.kubernetes.io/component=service-collector", - } - lst, err := c.CoreV1().Services(e.Integration.Namespace).List(ctx, opts) - if err != nil { - return "", err - } - var candidates []string - for _, svc := range lst.Items { - if !loc.allowHeadless && strings.HasSuffix(svc.Name, "-headless") { - continue - } - - for _, port := range svc.Spec.Ports { - if port.Name == jaegerPortName && port.Port > 0 { - candidates = append(candidates, fmt.Sprintf("http://%s.%s.svc.cluster.local:%d/api/traces", svc.Name, svc.Namespace, port.Port)) - } - } - } - sort.Strings(candidates) - if len(candidates) > 0 { - for _, endpoint := range candidates { - l.Infof("Detected Jaeger endpoint at: %s", endpoint) - } - return candidates[0], nil - } - return "", nil -} - -// registering the locator. -func init() { - TracingLocators = append(TracingLocators, &JaegerTracingLocator{}, &JaegerTracingLocator{allowHeadless: true}) -} diff --git a/addons/tracing/discovery/locator.go b/addons/tracing/discovery/locator.go deleted file mode 100644 index 023cf3b044..0000000000 --- a/addons/tracing/discovery/locator.go +++ /dev/null @@ -1,34 +0,0 @@ -/* -Licensed to the Apache Software Foundation (ASF) under one or more -contributor license agreements. See the NOTICE file distributed with -this work for additional information regarding copyright ownership. -The ASF licenses this file to You under the Apache License, Version 2.0 -(the "License"); you may not use this file except in compliance with -the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package discovery - -import ( - "context" - - "github.com/apache/camel-k/v2/pkg/client" - "github.com/apache/camel-k/v2/pkg/trait" - "github.com/apache/camel-k/v2/pkg/util/log" -) - -// TracingLocators contains available tracing locators. -var TracingLocators []TracingLocator - -// TracingLocator is able to find the address of an available tracing endpoint. -type TracingLocator interface { - FindEndpoint(ctx context.Context, c client.Client, logger log.Logger, env *trait.Environment) (string, error) -} diff --git a/addons/tracing/test_support.go b/addons/tracing/test_support.go deleted file mode 100644 index 90ba65bacc..0000000000 --- a/addons/tracing/test_support.go +++ /dev/null @@ -1,21 +0,0 @@ -/* -Licensed to the Apache Software Foundation (ASF) under one or more -contributor license agreements. See the NOTICE file distributed with -this work for additional information regarding copyright ownership. -The ASF licenses this file to You under the Apache License, Version 2.0 -(the "License"); you may not use this file except in compliance with -the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package tracing - -// Expose tracingTrait type for testing. -type TestTracingTrait = tracingTrait diff --git a/addons/tracing/tracing.go b/addons/tracing/tracing.go deleted file mode 100644 index 80a302be4b..0000000000 --- a/addons/tracing/tracing.go +++ /dev/null @@ -1,153 +0,0 @@ -/* -Licensed to the Apache Software Foundation (ASF) under one or more -contributor license agreements. See the NOTICE file distributed with -this work for additional information regarding copyright ownership. -The ASF licenses this file to You under the Apache License, Version 2.0 -(the "License"); you may not use this file except in compliance with -the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package tracing - -import ( - "github.com/apache/camel-k/v2/addons/tracing/discovery" - v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1" - traitv1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1/trait" - "github.com/apache/camel-k/v2/pkg/trait" - "github.com/apache/camel-k/v2/pkg/util" - "k8s.io/utils/ptr" -) - -// WARNING: The Tracing trait has been **deprecated** in favor of the xref:traits:telemetry.adoc[Telemetry] trait. -// -// The Tracing trait can be used to automatically publish tracing information to an OpenTracing compatible collector. -// -// The trait is able to automatically discover the tracing endpoint available in the namespace (supports **Jaeger**). -// -// The Tracing trait is disabled by default. -// -// WARNING: The Tracing trait can't be enabled at the same time as the Telemetry trait. -// -// +camel-k:trait=tracing. -// +camel-k:deprecated=1.12.0. -type Trait struct { - traitv1.Trait `property:",squash" json:",inline"` - // Enables automatic configuration of the trait, including automatic discovery of the tracing endpoint. - Auto *bool `property:"auto" json:"auto,omitempty"` - // The name of the service that publishes tracing data (defaults to the integration name) - ServiceName string `property:"service-name" json:"serviceName,omitempty"` - // The target endpoint of the OpenTracing service (automatically discovered by default) - Endpoint string `property:"endpoint" json:"endpoint,omitempty"` - // The sampler type (default "const") - SamplerType *string `property:"sampler-type" json:"samplerType,omitempty"` - // The sampler specific param (default "1") - SamplerParam *string `property:"sampler-param" json:"samplerParam,omitempty"` -} - -type tracingTrait struct { - trait.BaseTrait - Trait `property:",squash"` -} - -const ( - propEnabled = "propEnabled" - propEndpoint = "propEndpoint" - propServiceName = "propServiceName" - propSamplerType = "propSamplerType" - propSamplerParam = "propSamplerParam" -) - -var ( - tracingProperties = map[v1.RuntimeProvider]map[string]string{ - v1.RuntimeProviderQuarkus: { - propEndpoint: "quarkus.jaeger.endpoint", - propServiceName: "quarkus.jaeger.service-name", - propSamplerType: "quarkus.jaeger.sampler-type", - propSamplerParam: "quarkus.jaeger.sampler-param", - }, - } - - defaultSamplerType = "const" - defaultSamplerParam = "1" -) - -// NewTracingTrait --. -func NewTracingTrait() trait.Trait { - return &tracingTrait{ - BaseTrait: trait.NewBaseTrait("tracing", trait.TraitOrderBeforeControllerCreation), - } -} - -func (t *tracingTrait) Configure(e *trait.Environment) (bool, *trait.TraitCondition, error) { - if e.Integration == nil || !ptr.Deref(t.Enabled, false) { - return false, nil, nil - } - if e.CamelCatalog == nil { - return false, trait.NewIntegrationConditionPlatformDisabledCatalogMissing(), nil - } - - if !ptr.Deref(t.Auto, true) { - return true, nil, nil - } - - if t.Endpoint == "" { - for _, locator := range discovery.TracingLocators { - endpoint, err := locator.FindEndpoint(e.Ctx, t.Client, t.L, e) - if err != nil { - return false, nil, err - } - if endpoint != "" { - t.L.Infof("Using tracing endpoint: %s", endpoint) - t.Endpoint = endpoint - break - } - } - } - - if t.ServiceName == "" { - t.ServiceName = e.Integration.Name - } - - if t.SamplerType == nil { - t.SamplerType = &defaultSamplerType - } - - if t.SamplerParam == nil { - t.SamplerParam = &defaultSamplerParam - } - - return true, nil, nil -} - -func (t *tracingTrait) Apply(e *trait.Environment) error { - util.StringSliceUniqueAdd(&e.Integration.Status.Capabilities, v1.CapabilityTracing) - - provider := e.CamelCatalog.CamelCatalogSpec.Runtime.Provider - properties := tracingProperties[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] = t.ServiceName - } - if appPropSamplerType := properties[propSamplerType]; appPropSamplerType != "" && t.SamplerType != nil { - e.ApplicationProperties[appPropSamplerType] = *t.SamplerType - } - if appPropSamplerParam := properties[propSamplerParam]; appPropSamplerParam != "" && t.SamplerParam != nil { - e.ApplicationProperties[appPropSamplerParam] = *t.SamplerParam - } - - return nil -} diff --git a/addons/tracing/tracing_test.go b/addons/tracing/tracing_test.go deleted file mode 100644 index f5bc525cea..0000000000 --- a/addons/tracing/tracing_test.go +++ /dev/null @@ -1,76 +0,0 @@ -/* -Licensed to the Apache Software Foundation (ASF) under one or more -contributor license agreements. See the NOTICE file distributed with -this work for additional information regarding copyright ownership. -The ASF licenses this file to You under the Apache License, Version 2.0 -(the "License"); you may not use this file except in compliance with -the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package tracing - -import ( - "testing" - - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/utils/ptr" - - v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1" - "github.com/apache/camel-k/v2/pkg/trait" - "github.com/apache/camel-k/v2/pkg/util/camel" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -func TestTracingTraitOnQuarkus(t *testing.T) { - e := createEnvironment(t, camel.QuarkusCatalog) - tracing := NewTracingTrait() - tt, _ := tracing.(*tracingTrait) - tt.Enabled = ptr.To(true) - tt.Endpoint = "http://endpoint3" - ok, condition, err := tracing.Configure(e) - require.NoError(t, err) - assert.True(t, ok) - assert.Nil(t, condition) - - err = tracing.Apply(e) - require.NoError(t, err) - - assert.Empty(t, e.ApplicationProperties["quarkus.jaeger.enabled"]) - assert.Equal(t, "http://endpoint3", e.ApplicationProperties["quarkus.jaeger.endpoint"]) - assert.Equal(t, "test", e.ApplicationProperties["quarkus.jaeger.service-name"]) - assert.Equal(t, "const", e.ApplicationProperties["quarkus.jaeger.sampler-type"]) - assert.Equal(t, "1", e.ApplicationProperties["quarkus.jaeger.sampler-param"]) -} - -func createEnvironment(t *testing.T, catalogGen func() (*camel.RuntimeCatalog, error)) *trait.Environment { - t.Helper() - - catalog, err := catalogGen() - require.NoError(t, err) - - e := trait.Environment{ - CamelCatalog: catalog, - ApplicationProperties: make(map[string]string), - } - - it := v1.Integration{ - ObjectMeta: metav1.ObjectMeta{ - Name: "test", - }, - Status: v1.IntegrationStatus{ - Phase: v1.IntegrationPhaseDeploying, - }, - } - e.Integration = &it - return &e -} diff --git a/addons/tracing/zz_desc_generated.go b/addons/tracing/zz_desc_generated.go deleted file mode 100644 index 5881eae3cb..0000000000 --- a/addons/tracing/zz_desc_generated.go +++ /dev/null @@ -1 +0,0 @@ -package tracing diff --git a/addons/tracing/zz_generated_doc.go b/addons/tracing/zz_generated_doc.go deleted file mode 100644 index 5881eae3cb..0000000000 --- a/addons/tracing/zz_generated_doc.go +++ /dev/null @@ -1 +0,0 @@ -package tracing diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 9f5c42ec3a..d6cf49ee60 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -90,7 +90,6 @@ ** xref:traits:service.adoc[Service] ** xref:traits:telemetry.adoc[Telemetry] ** xref:traits:toleration.adoc[Toleration] -** xref:traits:tracing.adoc[Tracing] // End of autogenerated code - DO NOT EDIT! (trait-nav) * xref:pipeline/pipeline.adoc[Pipelines] ** xref:pipeline/tekton.adoc[Tekton] diff --git a/docs/modules/traits/pages/tracing.adoc b/docs/modules/traits/pages/tracing.adoc deleted file mode 100644 index 26d638f8eb..0000000000 --- a/docs/modules/traits/pages/tracing.adoc +++ /dev/null @@ -1,61 +0,0 @@ -= Tracing Trait - -// Start of autogenerated code - DO NOT EDIT! (badges) -image:https://img.shields.io/badge/1.12.0-white?label=Deprecated&labelColor=C40C0C&color=gray[Deprecated Badge] -// End of autogenerated code - DO NOT EDIT! (badges) -// Start of autogenerated code - DO NOT EDIT! (description) -WARNING: The Tracing trait has been **deprecated** in favor of the xref:traits:telemetry.adoc[Telemetry] trait. - -The Tracing trait can be used to automatically publish tracing information to an OpenTracing compatible collector. - -The trait is able to automatically discover the tracing endpoint available in the namespace (supports **Jaeger**). - -The Tracing trait is disabled by default. - -WARNING: The Tracing trait can't be enabled at the same time as the Telemetry trait. - - -This trait is available in the following profiles: **Kubernetes, Knative, OpenShift**. - -// End of autogenerated code - DO NOT EDIT! (description) -// Start of autogenerated code - DO NOT EDIT! (configuration) -== Configuration - -Trait properties can be specified when running any integration with the CLI: -[source,console] ----- -$ kamel run --trait tracing.[key]=[value] --trait tracing.[key2]=[value2] integration.yaml ----- -The following configuration options are available: - -[cols="2m,1m,5a"] -|=== -|Property | Type | Description - -| tracing.enabled -| bool -| Can be used to enable or disable a trait. All traits share this common property. - -| tracing.auto -| bool -| Enables automatic configuration of the trait, including automatic discovery of the tracing endpoint. - -| tracing.service-name -| string -| The name of the service that publishes tracing data (defaults to the integration name) - -| tracing.endpoint -| string -| The target endpoint of the OpenTracing service (automatically discovered by default) - -| tracing.sampler-type -| string -| The sampler type (default "const") - -| tracing.sampler-param -| string -| The sampler specific param (default "1") - -|=== - -// End of autogenerated code - DO NOT EDIT! (configuration)