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

squakez 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 40d0f1d81 Fix #6800: Flag to skip the camel-observability-services 
dependency
40d0f1d81 is described below

commit 40d0f1d813e0d0c707a059b2e8428ed5810e5b55
Author: Keerthan <[email protected]>
AuthorDate: Tue Sep 22 15:50:58 2026 +0530

    Fix #6800: Flag to skip the camel-observability-services dependency
---
 docs/modules/ROOT/partials/apis/camel-k-crds.adoc  |  7 ++
 docs/modules/traits/pages/camel.adoc               |  4 ++
 helm/camel-k/crds/camel-k-crds.yaml                | 36 ++++++++++
 pkg/apis/camel/v1/camelcatalog_types.go            |  3 +
 pkg/apis/camel/v1/trait/camel.go                   |  3 +
 pkg/apis/camel/v1/trait/zz_generated.deepcopy.go   |  5 ++
 pkg/apis/camel/v1/zz_generated.deepcopy.go         |  1 +
 pkg/controller/catalog/initialize.go               |  2 +-
 .../bases/camel.apache.org_integrationkits.yaml    |  4 ++
 .../camel.apache.org_integrationplatforms.yaml     |  8 +++
 .../camel.apache.org_integrationprofiles.yaml      |  8 +++
 .../crd/bases/camel.apache.org_integrations.yaml   |  8 +++
 .../config/crd/bases/camel.apache.org_pipes.yaml   |  8 +++
 pkg/trait/dependencies.go                          | 18 +++++
 pkg/trait/dependencies_test.go                     | 79 ++++++++++++++++++++++
 15 files changed, 193 insertions(+), 1 deletion(-)

diff --git a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc 
b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
index a53be7ad1..7f8518c7b 100644
--- a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
+++ b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
@@ -6830,6 +6830,13 @@ to the best matching Catalog existing on the cluster 
(Default, the one provided
 
 A list of properties to be provided to the Integration runtime
 
+|`skipObservabilityServices` +
+bool
+|
+
+
+Whether to skip the default Camel Observability Services dependency
+
 
 |===
 
diff --git a/docs/modules/traits/pages/camel.adoc 
b/docs/modules/traits/pages/camel.adoc
index ed6e8a7d8..f80086462 100755
--- a/docs/modules/traits/pages/camel.adoc
+++ b/docs/modules/traits/pages/camel.adoc
@@ -43,6 +43,10 @@ to the best matching Catalog existing on the cluster 
(Default, the one provided
 | []string
 | A list of properties to be provided to the Integration runtime
 
+| camel.skipObservabilityServices
+| bool
+| Whether to skip the default Camel Observability Services dependency
+
 |===
 
 NOTE: the variable names are "snake case" if you're using in `kamel` CLI, for 
example `trait.myParam` has to be translated as `-t trait.my-param`
diff --git a/helm/camel-k/crds/camel-k-crds.yaml 
b/helm/camel-k/crds/camel-k-crds.yaml
index 72eff8bd7..1a775f7e8 100644
--- a/helm/camel-k/crds/camel-k-crds.yaml
+++ b/helm/camel-k/crds/camel-k-crds.yaml
@@ -3102,6 +3102,10 @@ spec:
                           You can use a fixed version (for example "3.2.3") or 
a semantic version (for example "3.x") which will try to resolve
                           to the best matching Catalog existing on the cluster 
(Default, the one provided by the operator version).
                         type: string
+                      skipObservabilityServices:
+                        description: Whether to skip the default Camel 
Observability
+                          Services dependency
+                        type: boolean
                     type: object
                   quarkus:
                     description: |-
@@ -4061,6 +4065,10 @@ spec:
                           You can use a fixed version (for example "3.2.3") or 
a semantic version (for example "3.x") which will try to resolve
                           to the best matching Catalog existing on the cluster 
(Default, the one provided by the operator version).
                         type: string
+                      skipObservabilityServices:
+                        description: Whether to skip the default Camel 
Observability
+                          Services dependency
+                        type: boolean
                     type: object
                   container:
                     description: The configuration of Container trait
@@ -6632,6 +6640,10 @@ spec:
                           You can use a fixed version (for example "3.2.3") or 
a semantic version (for example "3.x") which will try to resolve
                           to the best matching Catalog existing on the cluster 
(Default, the one provided by the operator version).
                         type: string
+                      skipObservabilityServices:
+                        description: Whether to skip the default Camel 
Observability
+                          Services dependency
+                        type: boolean
                     type: object
                   container:
                     description: The configuration of Container trait
@@ -9164,6 +9176,10 @@ spec:
                           You can use a fixed version (for example "3.2.3") or 
a semantic version (for example "3.x") which will try to resolve
                           to the best matching Catalog existing on the cluster 
(Default, the one provided by the operator version).
                         type: string
+                      skipObservabilityServices:
+                        description: Whether to skip the default Camel 
Observability
+                          Services dependency
+                        type: boolean
                     type: object
                   container:
                     description: The configuration of Container trait
@@ -11684,6 +11700,10 @@ spec:
                           You can use a fixed version (for example "3.2.3") or 
a semantic version (for example "3.x") which will try to resolve
                           to the best matching Catalog existing on the cluster 
(Default, the one provided by the operator version).
                         type: string
+                      skipObservabilityServices:
+                        description: Whether to skip the default Camel 
Observability
+                          Services dependency
+                        type: boolean
                     type: object
                   container:
                     description: The configuration of Container trait
@@ -21266,6 +21286,10 @@ spec:
                           You can use a fixed version (for example "3.2.3") or 
a semantic version (for example "3.x") which will try to resolve
                           to the best matching Catalog existing on the cluster 
(Default, the one provided by the operator version).
                         type: string
+                      skipObservabilityServices:
+                        description: Whether to skip the default Camel 
Observability
+                          Services dependency
+                        type: boolean
                     type: object
                   container:
                     description: The configuration of Container trait
@@ -23674,6 +23698,10 @@ spec:
                           You can use a fixed version (for example "3.2.3") or 
a semantic version (for example "3.x") which will try to resolve
                           to the best matching Catalog existing on the cluster 
(Default, the one provided by the operator version).
                         type: string
+                      skipObservabilityServices:
+                        description: Whether to skip the default Camel 
Observability
+                          Services dependency
+                        type: boolean
                     type: object
                   container:
                     description: The configuration of Container trait
@@ -34617,6 +34645,10 @@ spec:
                               You can use a fixed version (for example 
"3.2.3") or a semantic version (for example "3.x") which will try to resolve
                               to the best matching Catalog existing on the 
cluster (Default, the one provided by the operator version).
                             type: string
+                          skipObservabilityServices:
+                            description: Whether to skip the default Camel 
Observability
+                              Services dependency
+                            type: boolean
                         type: object
                       container:
                         description: The configuration of Container trait
@@ -36949,6 +36981,10 @@ spec:
                           You can use a fixed version (for example "3.2.3") or 
a semantic version (for example "3.x") which will try to resolve
                           to the best matching Catalog existing on the cluster 
(Default, the one provided by the operator version).
                         type: string
+                      skipObservabilityServices:
+                        description: Whether to skip the default Camel 
Observability
+                          Services dependency
+                        type: boolean
                     type: object
                   container:
                     description: The configuration of Container trait
diff --git a/pkg/apis/camel/v1/camelcatalog_types.go 
b/pkg/apis/camel/v1/camelcatalog_types.go
index 18734384c..a6d0cecc3 100644
--- a/pkg/apis/camel/v1/camelcatalog_types.go
+++ b/pkg/apis/camel/v1/camelcatalog_types.go
@@ -26,6 +26,9 @@ const (
        // CamelCatalogKind -- .
        CamelCatalogKind    string = "CamelCatalog"
        MavenQuarkusGroupID string = "org.apache.camel.quarkus"
+
+       // CamelQuarkusObservabilityServicesArtifactID -- .
+       CamelQuarkusObservabilityServicesArtifactID string = 
"camel-quarkus-observability-services"
 )
 
 // +genclient
diff --git a/pkg/apis/camel/v1/trait/camel.go b/pkg/apis/camel/v1/trait/camel.go
index 502bef4aa..c4b33bb42 100644
--- a/pkg/apis/camel/v1/trait/camel.go
+++ b/pkg/apis/camel/v1/trait/camel.go
@@ -34,4 +34,7 @@ type CamelTrait struct {
        RuntimeVersion string `json:"runtimeVersion,omitempty" 
property:"runtime-version"`
        // A list of properties to be provided to the Integration runtime
        Properties []string `json:"properties,omitempty" property:"properties"`
+
+       // Whether to skip the default Camel Observability Services dependency
+       SkipObservabilityServices *bool 
`json:"skipObservabilityServices,omitempty" 
property:"skip-observability-services"`
 }
diff --git a/pkg/apis/camel/v1/trait/zz_generated.deepcopy.go 
b/pkg/apis/camel/v1/trait/zz_generated.deepcopy.go
index 190cbfade..5466a9cb0 100644
--- a/pkg/apis/camel/v1/trait/zz_generated.deepcopy.go
+++ b/pkg/apis/camel/v1/trait/zz_generated.deepcopy.go
@@ -170,6 +170,11 @@ func (in *CamelTrait) DeepCopyInto(out *CamelTrait) {
                *out = make([]string, len(*in))
                copy(*out, *in)
        }
+       if in.SkipObservabilityServices != nil {
+               in, out := &in.SkipObservabilityServices, 
&out.SkipObservabilityServices
+               *out = new(bool)
+               **out = **in
+       }
 }
 
 // DeepCopy is an autogenerated deepcopy function, copying the receiver, 
creating a new CamelTrait.
diff --git a/pkg/apis/camel/v1/zz_generated.deepcopy.go 
b/pkg/apis/camel/v1/zz_generated.deepcopy.go
index 07e39cd5e..af1a8a1dc 100644
--- a/pkg/apis/camel/v1/zz_generated.deepcopy.go
+++ b/pkg/apis/camel/v1/zz_generated.deepcopy.go
@@ -6,6 +6,7 @@ package v1
 
 import (
        "encoding/json"
+
        "github.com/apache/camel-k/v2/pkg/apis/camel/v1/trait"
        corev1 "k8s.io/api/core/v1"
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
diff --git a/pkg/controller/catalog/initialize.go 
b/pkg/controller/catalog/initialize.go
index b0388a6ea..c92188fdb 100644
--- a/pkg/controller/catalog/initialize.go
+++ b/pkg/controller/catalog/initialize.go
@@ -110,7 +110,7 @@ func (action *initializeAction) addPlainQuarkusCatalog(ctx 
context.Context, cata
                        // opinionated set of observability services
                        {
                                GroupID:    v1.MavenQuarkusGroupID,
-                               ArtifactID: 
"camel-quarkus-observability-services",
+                               ArtifactID: 
v1.CamelQuarkusObservabilityServicesArtifactID,
                        },
                }
                if clonedCatalog.Spec.Runtime.Capabilities != nil {
diff --git 
a/pkg/resources/config/crd/bases/camel.apache.org_integrationkits.yaml 
b/pkg/resources/config/crd/bases/camel.apache.org_integrationkits.yaml
index 2a3ffc624..512626d21 100644
--- a/pkg/resources/config/crd/bases/camel.apache.org_integrationkits.yaml
+++ b/pkg/resources/config/crd/bases/camel.apache.org_integrationkits.yaml
@@ -386,6 +386,10 @@ spec:
                           You can use a fixed version (for example "3.2.3") or 
a semantic version (for example "3.x") which will try to resolve
                           to the best matching Catalog existing on the cluster 
(Default, the one provided by the operator version).
                         type: string
+                      skipObservabilityServices:
+                        description: Whether to skip the default Camel 
Observability
+                          Services dependency
+                        type: boolean
                     type: object
                   quarkus:
                     description: |-
diff --git 
a/pkg/resources/config/crd/bases/camel.apache.org_integrationplatforms.yaml 
b/pkg/resources/config/crd/bases/camel.apache.org_integrationplatforms.yaml
index 3b318a775..09ad21815 100644
--- a/pkg/resources/config/crd/bases/camel.apache.org_integrationplatforms.yaml
+++ b/pkg/resources/config/crd/bases/camel.apache.org_integrationplatforms.yaml
@@ -753,6 +753,10 @@ spec:
                           You can use a fixed version (for example "3.2.3") or 
a semantic version (for example "3.x") which will try to resolve
                           to the best matching Catalog existing on the cluster 
(Default, the one provided by the operator version).
                         type: string
+                      skipObservabilityServices:
+                        description: Whether to skip the default Camel 
Observability
+                          Services dependency
+                        type: boolean
                     type: object
                   container:
                     description: The configuration of Container trait
@@ -3324,6 +3328,10 @@ spec:
                           You can use a fixed version (for example "3.2.3") or 
a semantic version (for example "3.x") which will try to resolve
                           to the best matching Catalog existing on the cluster 
(Default, the one provided by the operator version).
                         type: string
+                      skipObservabilityServices:
+                        description: Whether to skip the default Camel 
Observability
+                          Services dependency
+                        type: boolean
                     type: object
                   container:
                     description: The configuration of Container trait
diff --git 
a/pkg/resources/config/crd/bases/camel.apache.org_integrationprofiles.yaml 
b/pkg/resources/config/crd/bases/camel.apache.org_integrationprofiles.yaml
index 66a0aa2a2..69e52466a 100644
--- a/pkg/resources/config/crd/bases/camel.apache.org_integrationprofiles.yaml
+++ b/pkg/resources/config/crd/bases/camel.apache.org_integrationprofiles.yaml
@@ -678,6 +678,10 @@ spec:
                           You can use a fixed version (for example "3.2.3") or 
a semantic version (for example "3.x") which will try to resolve
                           to the best matching Catalog existing on the cluster 
(Default, the one provided by the operator version).
                         type: string
+                      skipObservabilityServices:
+                        description: Whether to skip the default Camel 
Observability
+                          Services dependency
+                        type: boolean
                     type: object
                   container:
                     description: The configuration of Container trait
@@ -3198,6 +3202,10 @@ spec:
                           You can use a fixed version (for example "3.2.3") or 
a semantic version (for example "3.x") which will try to resolve
                           to the best matching Catalog existing on the cluster 
(Default, the one provided by the operator version).
                         type: string
+                      skipObservabilityServices:
+                        description: Whether to skip the default Camel 
Observability
+                          Services dependency
+                        type: boolean
                     type: object
                   container:
                     description: The configuration of Container trait
diff --git a/pkg/resources/config/crd/bases/camel.apache.org_integrations.yaml 
b/pkg/resources/config/crd/bases/camel.apache.org_integrations.yaml
index 5154f6f11..9466171e1 100644
--- a/pkg/resources/config/crd/bases/camel.apache.org_integrations.yaml
+++ b/pkg/resources/config/crd/bases/camel.apache.org_integrations.yaml
@@ -7731,6 +7731,10 @@ spec:
                           You can use a fixed version (for example "3.2.3") or 
a semantic version (for example "3.x") which will try to resolve
                           to the best matching Catalog existing on the cluster 
(Default, the one provided by the operator version).
                         type: string
+                      skipObservabilityServices:
+                        description: Whether to skip the default Camel 
Observability
+                          Services dependency
+                        type: boolean
                     type: object
                   container:
                     description: The configuration of Container trait
@@ -10139,6 +10143,10 @@ spec:
                           You can use a fixed version (for example "3.2.3") or 
a semantic version (for example "3.x") which will try to resolve
                           to the best matching Catalog existing on the cluster 
(Default, the one provided by the operator version).
                         type: string
+                      skipObservabilityServices:
+                        description: Whether to skip the default Camel 
Observability
+                          Services dependency
+                        type: boolean
                     type: object
                   container:
                     description: The configuration of Container trait
diff --git a/pkg/resources/config/crd/bases/camel.apache.org_pipes.yaml 
b/pkg/resources/config/crd/bases/camel.apache.org_pipes.yaml
index 93c1730a2..893ae100a 100644
--- a/pkg/resources/config/crd/bases/camel.apache.org_pipes.yaml
+++ b/pkg/resources/config/crd/bases/camel.apache.org_pipes.yaml
@@ -7784,6 +7784,10 @@ spec:
                               You can use a fixed version (for example 
"3.2.3") or a semantic version (for example "3.x") which will try to resolve
                               to the best matching Catalog existing on the 
cluster (Default, the one provided by the operator version).
                             type: string
+                          skipObservabilityServices:
+                            description: Whether to skip the default Camel 
Observability
+                              Services dependency
+                            type: boolean
                         type: object
                       container:
                         description: The configuration of Container trait
@@ -10116,6 +10120,10 @@ spec:
                           You can use a fixed version (for example "3.2.3") or 
a semantic version (for example "3.x") which will try to resolve
                           to the best matching Catalog existing on the cluster 
(Default, the one provided by the operator version).
                         type: string
+                      skipObservabilityServices:
+                        description: Whether to skip the default Camel 
Observability
+                          Services dependency
+                        type: boolean
                     type: object
                   container:
                     description: The configuration of Container trait
diff --git a/pkg/trait/dependencies.go b/pkg/trait/dependencies.go
index b5641a553..efd01e898 100644
--- a/pkg/trait/dependencies.go
+++ b/pkg/trait/dependencies.go
@@ -24,6 +24,7 @@ import (
        "github.com/apache/camel-k/v2/pkg/util"
        "github.com/apache/camel-k/v2/pkg/util/camel"
        "github.com/apache/camel-k/v2/pkg/util/sets"
+       "k8s.io/utils/ptr"
 )
 
 const (
@@ -50,6 +51,16 @@ func (t *dependenciesTrait) Configure(e *Environment) (bool, 
*TraitCondition, er
        return e.IntegrationInPhase(v1.IntegrationPhaseInitialization), nil, nil
 }
 
+func (t *dependenciesTrait) isSkipObservabilityServices(e *Environment) bool {
+       if ct := e.Catalog.GetTrait(camelTraitID); ct != nil {
+               if camel, ok := ct.(*camelTrait); ok {
+                       return ptr.Deref(camel.SkipObservabilityServices, false)
+               }
+       }
+
+       return false
+}
+
 func (t *dependenciesTrait) Apply(e *Environment) error {
        if e.Integration.Status.Dependencies == nil {
                e.Integration.Status.Dependencies = make([]string, 0)
@@ -64,8 +75,15 @@ func (t *dependenciesTrait) Apply(e *Environment) error {
                dependencies.Add(e.Integration.Spec.Dependencies...)
        }
 
+       skipObservabilityServices := t.isSkipObservabilityServices(e)
+
        // Add runtime specific dependencies
        for _, d := range e.CamelCatalog.Runtime.Dependencies {
+               if skipObservabilityServices &&
+                       d.GroupID == v1.MavenQuarkusGroupID &&
+                       d.ArtifactID == 
v1.CamelQuarkusObservabilityServicesArtifactID {
+                       continue
+               }
                dependencies.Add(d.GetDependencyID())
        }
 
diff --git a/pkg/trait/dependencies_test.go b/pkg/trait/dependencies_test.go
index 2cb05e1e4..f36178c3b 100644
--- a/pkg/trait/dependencies_test.go
+++ b/pkg/trait/dependencies_test.go
@@ -25,6 +25,7 @@ import (
 
        v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
        "github.com/apache/camel-k/v2/pkg/util/camel"
+       "k8s.io/utils/ptr"
 )
 
 func TestDependenciesTraitApplicability(t *testing.T) {
@@ -395,3 +396,81 @@ func TestIntegrationProfileDependency(t *testing.T) {
                },
        )
 }
+
+func TestDependenciesTraitSkipObservabilityServices(t *testing.T) {
+       catalog, err := camel.DefaultCatalog()
+       require.NoError(t, err)
+       catalog.Runtime.Dependencies = []v1.MavenArtifact{
+               {
+                       GroupID:    v1.MavenQuarkusGroupID,
+                       ArtifactID: "camel-quarkus-core",
+               },
+               {
+                       GroupID:    v1.MavenQuarkusGroupID,
+                       ArtifactID: 
v1.CamelQuarkusObservabilityServicesArtifactID,
+               },
+       }
+
+       e := &Environment{
+               Catalog:      NewEnvironmentTestCatalog(),
+               CamelCatalog: catalog,
+               Integration: &v1.Integration{
+                       Status: v1.IntegrationStatus{
+                               Phase: v1.IntegrationPhaseInitialization,
+                       },
+               },
+       }
+
+       camelTrait, ok := e.Catalog.GetTrait(camelTraitID).(*camelTrait)
+       require.True(t, ok)
+       camelTrait.SkipObservabilityServices = ptr.To(true)
+
+       trait := newDependenciesTrait()
+       enabled, condition, err := trait.Configure(e)
+       require.NoError(t, err)
+       assert.Nil(t, condition)
+       assert.True(t, enabled)
+
+       err = trait.Apply(e)
+       require.NoError(t, err)
+
+       assert.Contains(t, e.Integration.Status.Dependencies, 
"mvn:org.apache.camel.quarkus:camel-quarkus-core")
+       assert.NotContains(t, e.Integration.Status.Dependencies, 
"mvn:org.apache.camel.quarkus:camel-quarkus-observability-services")
+}
+
+func TestDependenciesTraitObservabilityServicesDefault(t *testing.T) {
+       catalog, err := camel.DefaultCatalog()
+       require.NoError(t, err)
+       catalog.Runtime.Dependencies = []v1.MavenArtifact{
+               {
+                       GroupID:    v1.MavenQuarkusGroupID,
+                       ArtifactID: "camel-quarkus-core",
+               },
+               {
+                       GroupID:    v1.MavenQuarkusGroupID,
+                       ArtifactID: 
v1.CamelQuarkusObservabilityServicesArtifactID,
+               },
+       }
+
+       e := &Environment{
+               Catalog:      NewEnvironmentTestCatalog(),
+               CamelCatalog: catalog,
+               Integration: &v1.Integration{
+                       Status: v1.IntegrationStatus{
+                               Phase: v1.IntegrationPhaseInitialization,
+                       },
+               },
+       }
+
+       trait := newDependenciesTrait()
+       enabled, condition, err := trait.Configure(e)
+       require.NoError(t, err)
+       assert.Nil(t, condition)
+       assert.True(t, enabled)
+
+       err = trait.Apply(e)
+       require.NoError(t, err)
+
+       assert.Contains(t, e.Integration.Status.Dependencies, 
"mvn:org.apache.camel.quarkus:camel-quarkus-core")
+       assert.Contains(t, e.Integration.Status.Dependencies, 
"mvn:org.apache.camel.quarkus:camel-quarkus-observability-services")
+}

Reply via email to