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

commit fa59279386f00782124c3cc71b981768ba8c9c27
Author: Pasquale Congiusti <[email protected]>
AuthorDate: Thu Mar 21 11:47:10 2024 +0100

    chore(trait): add executed trait condition
---
 pkg/trait/builder_test.go          |  6 +++---
 pkg/trait/container_probes_test.go |  7 +++----
 pkg/trait/container_test.go        | 10 +++++-----
 pkg/trait/cron_test.go             |  8 +++-----
 pkg/trait/environment_test.go      |  8 ++++----
 pkg/trait/istio_test.go            |  8 ++++----
 pkg/trait/knative_test.go          |  2 +-
 pkg/trait/logging_test.go          |  4 ++--
 pkg/trait/mount_test.go            |  6 +++---
 pkg/trait/route_test.go            | 17 ++++++++---------
 pkg/trait/service_test.go          | 15 ++++-----------
 pkg/trait/trait_catalog.go         | 21 +++++++++++++--------
 pkg/trait/trait_test.go            | 15 +++++++++++++++
 13 files changed, 68 insertions(+), 59 deletions(-)

diff --git a/pkg/trait/builder_test.go b/pkg/trait/builder_test.go
index b31952b2b..dd831b640 100644
--- a/pkg/trait/builder_test.go
+++ b/pkg/trait/builder_test.go
@@ -48,7 +48,7 @@ func TestBuilderTraitNotAppliedBecauseOfNilKit(t *testing.T) {
                        conditions, err := NewBuilderTestCatalog().apply(e)
 
                        require.NoError(t, err)
-                       assert.Empty(t, conditions)
+                       assert.NotEmpty(t, conditions)
                        assert.NotEmpty(t, e.ExecutedTraits)
                        assert.Nil(t, e.GetTrait("builder"))
                        assert.Empty(t, e.Pipeline)
@@ -69,7 +69,7 @@ func TestBuilderTraitNotAppliedBecauseOfNilPhase(t 
*testing.T) {
                        conditions, err := NewBuilderTestCatalog().apply(e)
 
                        require.NoError(t, err)
-                       assert.Empty(t, conditions)
+                       assert.NotEmpty(t, conditions)
                        assert.NotEmpty(t, e.ExecutedTraits)
                        assert.Nil(t, e.GetTrait("builder"))
                        assert.Empty(t, e.Pipeline)
@@ -82,7 +82,7 @@ func TestS2IBuilderTrait(t *testing.T) {
        conditions, err := NewBuilderTestCatalog().apply(env)
 
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.NotEmpty(t, env.ExecutedTraits)
        assert.NotNil(t, env.GetTrait("builder"))
        assert.NotEmpty(t, env.Pipeline)
diff --git a/pkg/trait/container_probes_test.go 
b/pkg/trait/container_probes_test.go
index 071a5cea2..d756af65d 100644
--- a/pkg/trait/container_probes_test.go
+++ b/pkg/trait/container_probes_test.go
@@ -81,7 +81,7 @@ func TestProbesDependencies(t *testing.T) {
 
        conditions, err := env.Catalog.apply(&env)
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.Contains(t, env.Integration.Status.Dependencies, 
"mvn:org.apache.camel.quarkus:camel-quarkus-microprofile-health")
 }
 
@@ -106,7 +106,7 @@ func TestProbesOnDeployment(t *testing.T) {
 
        conditions, err := env.Catalog.apply(&env)
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
 
        container := env.GetIntegrationContainer()
 
@@ -144,7 +144,7 @@ func TestProbesOnDeploymentWithCustomScheme(t *testing.T) {
 
        conditions, err := env.Catalog.apply(&env)
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
 
        container := env.GetIntegrationContainer()
 
@@ -199,7 +199,6 @@ func TestProbesOnKnativeService(t *testing.T) {
 
        conditions, err := env.Catalog.apply(&env)
        require.NoError(t, err)
-       assert.Len(t, conditions, 2)
        assert.Contains(t, conditions, ctrlStrategyCondition)
        assert.Contains(t, conditions, serviceOverrideCondition)
 
diff --git a/pkg/trait/container_test.go b/pkg/trait/container_test.go
index 7867e3b0d..551503e92 100644
--- a/pkg/trait/container_test.go
+++ b/pkg/trait/container_test.go
@@ -89,7 +89,7 @@ func TestContainerWithDefaults(t *testing.T) {
        conditions, err := traitCatalog.apply(&environment)
 
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.NotEmpty(t, environment.ExecutedTraits)
        assert.NotNil(t, environment.GetTrait("deployment"))
        assert.NotNil(t, environment.GetTrait("container"))
@@ -170,7 +170,7 @@ func TestContainerWithOpenshift(t *testing.T) {
        conditions, err := traitCatalog.apply(&environment)
 
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.NotEmpty(t, environment.ExecutedTraits)
        assert.NotNil(t, environment.GetTrait("deployment"))
        assert.NotNil(t, environment.GetTrait("container"))
@@ -238,7 +238,7 @@ func TestContainerWithCustomName(t *testing.T) {
        conditions, err := traitCatalog.apply(&environment)
 
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.NotEmpty(t, environment.ExecutedTraits)
        assert.NotNil(t, environment.GetTrait("deployment"))
        assert.NotNil(t, environment.GetTrait("container"))
@@ -304,7 +304,7 @@ func TestContainerWithCustomImage(t *testing.T) {
        conditions, err := traitCatalog.apply(&environment)
 
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
 
        for _, postAction := range environment.PostActions {
                require.NoError(t, postAction(&environment))
@@ -428,7 +428,7 @@ func TestContainerWithImagePullPolicy(t *testing.T) {
        conditions, err := traitCatalog.apply(&environment)
 
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
 
        container := environment.GetIntegrationContainer()
 
diff --git a/pkg/trait/cron_test.go b/pkg/trait/cron_test.go
index 13492bc58..4e446600b 100644
--- a/pkg/trait/cron_test.go
+++ b/pkg/trait/cron_test.go
@@ -288,7 +288,7 @@ func TestCronDeps(t *testing.T) {
        conditions, err := tc.apply(&environment)
 
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.NotEmpty(t, environment.ExecutedTraits)
 
        ct, _ := environment.GetTrait("cron").(*cronTrait)
@@ -370,7 +370,7 @@ func TestCronMultipleScheduleFallback(t *testing.T) {
        conditions, err := tc.apply(&environment)
 
        assert.Nil(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.NotEmpty(t, environment.ExecutedTraits)
 
        ct, _ := environment.GetTrait("cron").(*cronTrait)
@@ -448,7 +448,7 @@ func TestCronDepsFallback(t *testing.T) {
        conditions, err := tc.apply(&environment)
 
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.NotEmpty(t, environment.ExecutedTraits)
 
        ct, _ := environment.GetTrait("cron").(*cronTrait)
@@ -529,7 +529,6 @@ func TestCronWithActiveDeadline(t *testing.T) {
        )
        conditions, err := tc.apply(&environment)
        require.NoError(t, err)
-       assert.Len(t, conditions, 1)
        assert.Contains(t, conditions, expectedCondition)
        assert.NotEmpty(t, environment.ExecutedTraits)
 
@@ -618,7 +617,6 @@ func TestCronWithBackoffLimit(t *testing.T) {
        )
        conditions, err := tc.apply(&environment)
        require.NoError(t, err)
-       assert.Len(t, conditions, 1)
        assert.Contains(t, conditions, expectedCondition)
        assert.NotEmpty(t, environment.ExecutedTraits)
 
diff --git a/pkg/trait/environment_test.go b/pkg/trait/environment_test.go
index 2fc0991d9..f83043702 100644
--- a/pkg/trait/environment_test.go
+++ b/pkg/trait/environment_test.go
@@ -44,7 +44,7 @@ func TestDefaultEnvironment(t *testing.T) {
 
        conditions, err := NewEnvironmentTestCatalog().apply(&env)
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
 
        ns := false
        name := false
@@ -93,7 +93,7 @@ func TestEnabledContainerMetaDataEnvVars(t *testing.T) {
 
        conditions, err := NewEnvironmentTestCatalog().apply(&env)
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
 
        ns := false
        name := false
@@ -133,7 +133,7 @@ func TestDisabledContainerMetaDataEnvVars(t *testing.T) {
 
        conditions, err := NewEnvironmentTestCatalog().apply(&env)
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
 
        ns := false
        name := false
@@ -172,7 +172,7 @@ func TestCustomEnvVars(t *testing.T) {
 
        conditions, err := NewEnvironmentTestCatalog().apply(&env)
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
 
        userK1 := false
        userK2 := false
diff --git a/pkg/trait/istio_test.go b/pkg/trait/istio_test.go
index ccc7b7dbe..1e758bb4d 100644
--- a/pkg/trait/istio_test.go
+++ b/pkg/trait/istio_test.go
@@ -102,7 +102,7 @@ func TestIstioInject(t *testing.T) {
        env := NewIstioTestEnv(t, &d, &s, true)
        conditions, err := env.Catalog.apply(&env)
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.Empty(t, 
s.Spec.ConfigurationSpec.Template.Annotations[istioSidecarInjectAnnotation])
        assert.NotEmpty(t, 
d.Spec.Template.Annotations[istioSidecarInjectAnnotation])
 }
@@ -127,7 +127,7 @@ func TestIstioForcedInjectTrue(t *testing.T) {
 
        conditions, err := env.Catalog.apply(&env)
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.Equal(t, "true", 
s.Spec.ConfigurationSpec.Template.Annotations[istioSidecarInjectAnnotation])
        assert.Equal(t, "true", 
d.Spec.Template.Annotations[istioSidecarInjectAnnotation])
 }
@@ -152,7 +152,7 @@ func TestIstioForcedInjectFalse(t *testing.T) {
 
        conditions, err := env.Catalog.apply(&env)
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.Equal(t, "false", 
s.Spec.ConfigurationSpec.Template.Annotations[istioSidecarInjectAnnotation])
        assert.Equal(t, "false", 
d.Spec.Template.Annotations[istioSidecarInjectAnnotation])
 }
@@ -175,6 +175,6 @@ func TestIstioDisabled(t *testing.T) {
 
        conditions, err := env.Catalog.apply(&env)
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.NotContains(t, env.ExecutedTraits, "istio")
 }
diff --git a/pkg/trait/knative_test.go b/pkg/trait/knative_test.go
index 0375c26ba..adc47978a 100644
--- a/pkg/trait/knative_test.go
+++ b/pkg/trait/knative_test.go
@@ -341,7 +341,7 @@ func TestKnativePlatformHttpDependencies(t *testing.T) {
 
                        conditions, err := tc.apply(&environment)
                        require.NoError(t, err)
-                       assert.Empty(t, conditions)
+                       assert.NotEmpty(t, conditions)
                        assert.Contains(t, 
environment.Integration.Status.Capabilities, v1.CapabilityPlatformHTTP)
                        assert.Contains(t, 
environment.Integration.Status.Dependencies, 
"mvn:org.apache.camel.quarkus:camel-quarkus-platform-http")
                })
diff --git a/pkg/trait/logging_test.go b/pkg/trait/logging_test.go
index 0a0df7a45..0947cb132 100644
--- a/pkg/trait/logging_test.go
+++ b/pkg/trait/logging_test.go
@@ -114,7 +114,7 @@ func TestEmptyLoggingTrait(t *testing.T) {
        conditions, err := NewLoggingTestCatalog().apply(env)
 
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.NotEmpty(t, env.ExecutedTraits)
 
        quarkusConsoleColor := false
@@ -167,7 +167,7 @@ func TestJsonLoggingTrait(t *testing.T) {
        conditions, err := NewLoggingTestCatalog().apply(env)
 
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.NotEmpty(t, env.ExecutedTraits)
 
        quarkusConsoleColor := false
diff --git a/pkg/trait/mount_test.go b/pkg/trait/mount_test.go
index 6191b2ae6..f64186878 100644
--- a/pkg/trait/mount_test.go
+++ b/pkg/trait/mount_test.go
@@ -46,7 +46,7 @@ func TestMountVolumesEmpty(t *testing.T) {
        conditions, err := traitCatalog.apply(environment)
 
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.NotEmpty(t, environment.ExecutedTraits)
        assert.NotNil(t, environment.GetTrait("mount"))
 
@@ -69,7 +69,7 @@ func TestMountVolumesIntegrationPhaseDeploying(t *testing.T) {
        conditions, err := traitCatalog.apply(environment)
 
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.NotEmpty(t, environment.ExecutedTraits)
        assert.NotNil(t, environment.GetTrait("mount"))
 
@@ -118,7 +118,7 @@ func TestMountVolumesIntegrationPhaseInitialization(t 
*testing.T) {
        conditions, err := traitCatalog.apply(environment)
 
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.NotEmpty(t, environment.ExecutedTraits)
        assert.Nil(t, environment.GetTrait("mount"))
 
diff --git a/pkg/trait/route_test.go b/pkg/trait/route_test.go
index 8956ff61f..00c9527db 100644
--- a/pkg/trait/route_test.go
+++ b/pkg/trait/route_test.go
@@ -208,7 +208,7 @@ func TestRoute_Default(t *testing.T) {
 
        conditions, err := traitsCatalog.apply(environment)
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.NotEmpty(t, environment.ExecutedTraits)
        assert.NotNil(t, environment.GetTrait("container"))
        assert.NotNil(t, environment.GetTrait("route"))
@@ -243,7 +243,6 @@ func TestRoute_Disabled(t *testing.T) {
        traitsCatalog := environment.Catalog
        conditions, err := traitsCatalog.apply(environment)
        require.NoError(t, err)
-       assert.Len(t, conditions, 1)
        assert.Contains(t, conditions, expectedCondition)
        assert.NotEmpty(t, environment.ExecutedTraits)
        assert.Nil(t, environment.GetTrait("route"))
@@ -284,7 +283,7 @@ func TestRoute_Host(t *testing.T) {
        conditions, err := traitsCatalog.apply(environment)
 
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.NotEmpty(t, environment.ExecutedTraits)
        assert.NotNil(t, environment.GetTrait("route"))
 
@@ -315,7 +314,7 @@ func TestRoute_TLS_From_Secret_reencrypt(t *testing.T) {
        conditions, err := traitsCatalog.apply(environment)
 
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.NotEmpty(t, environment.ExecutedTraits)
        assert.NotNil(t, environment.GetTrait("route"))
 
@@ -435,7 +434,7 @@ func TestRoute_TLS_reencrypt(t *testing.T) {
        }
        conditions, err := traitsCatalog.apply(environment)
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.NotEmpty(t, environment.ExecutedTraits)
        assert.NotNil(t, environment.GetTrait("route"))
 
@@ -469,7 +468,7 @@ func TestRoute_TLS_edge(t *testing.T) {
        }
        conditions, err := traitsCatalog.apply(environment)
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.NotEmpty(t, environment.ExecutedTraits)
        assert.NotNil(t, environment.GetTrait("route"))
 
@@ -501,7 +500,7 @@ func TestRoute_TLS_passthrough(t *testing.T) {
        }
        conditions, err := traitsCatalog.apply(environment)
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.NotEmpty(t, environment.ExecutedTraits)
        assert.NotNil(t, environment.GetTrait("route"))
 
@@ -531,7 +530,7 @@ func TestRoute_WithCustomServicePort(t *testing.T) {
        traitsCatalog := environment.Catalog
        conditions, err := traitsCatalog.apply(environment)
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
        assert.NotEmpty(t, environment.ExecutedTraits)
        assert.NotNil(t, environment.GetTrait("container"))
        assert.NotNil(t, environment.GetTrait("route"))
@@ -565,7 +564,7 @@ func TestRouteAnnotation(t *testing.T) {
        traitsCatalog := environment.Catalog
        conditions, err := traitsCatalog.apply(environment)
        require.NoError(t, err)
-       assert.Empty(t, conditions)
+       assert.NotEmpty(t, conditions)
 
        route := environment.Resources.GetRoute(func(r *routev1.Route) bool {
                return r.ObjectMeta.Name == name
diff --git a/pkg/trait/service_test.go b/pkg/trait/service_test.go
index 1509c6076..edbd412eb 100644
--- a/pkg/trait/service_test.go
+++ b/pkg/trait/service_test.go
@@ -109,10 +109,9 @@ func TestServiceWithDefaults(t *testing.T) {
        }
        environment.Platform.ResyncStatusFullConfig()
 
-       conditions, err := traitCatalog.apply(&environment)
+       _, err = traitCatalog.apply(&environment)
 
        require.NoError(t, err)
-       assert.Empty(t, conditions)
        assert.NotEmpty(t, environment.ExecutedTraits)
        assert.NotNil(t, environment.GetTrait("deployment"))
        assert.NotNil(t, environment.GetTrait("service"))
@@ -217,10 +216,9 @@ func TestService(t *testing.T) {
        }
        environment.Platform.ResyncStatusFullConfig()
 
-       conditions, err := traitCatalog.apply(&environment)
+       _, err = traitCatalog.apply(&environment)
 
        require.NoError(t, err)
-       assert.Empty(t, conditions)
        assert.NotEmpty(t, environment.ExecutedTraits)
        assert.NotNil(t, environment.GetTrait("deployment"))
        assert.NotNil(t, environment.GetTrait("service"))
@@ -305,10 +303,9 @@ func TestServiceWithCustomContainerName(t *testing.T) {
        }
        environment.Platform.ResyncStatusFullConfig()
 
-       conditions, err := traitCatalog.apply(&environment)
+       _, err = traitCatalog.apply(&environment)
 
        require.NoError(t, err)
-       assert.Empty(t, conditions)
        assert.NotEmpty(t, environment.ExecutedTraits)
        assert.NotNil(t, environment.GetTrait("deployment"))
        assert.NotNil(t, environment.GetTrait("service"))
@@ -397,10 +394,9 @@ func TestServiceWithNodePort(t *testing.T) {
        }
        environment.Platform.ResyncStatusFullConfig()
 
-       conditions, err := traitCatalog.apply(&environment)
+       _, err = traitCatalog.apply(&environment)
 
        require.NoError(t, err)
-       assert.Empty(t, conditions)
        assert.NotEmpty(t, environment.ExecutedTraits)
        assert.NotNil(t, environment.GetTrait("deployment"))
        assert.NotNil(t, environment.GetTrait("service"))
@@ -507,7 +503,6 @@ func TestServiceWithKnativeServiceEnabled(t *testing.T) {
        conditions, err := traitCatalog.apply(&environment)
 
        require.NoError(t, err)
-       assert.Len(t, conditions, 2)
        assert.Contains(t, conditions, deploymentCondition)
        assert.Contains(t, conditions, serviceCondition)
        assert.NotEmpty(t, environment.ExecutedTraits)
@@ -585,7 +580,6 @@ func TestServicesWithKnativeProfile(t *testing.T) {
        conditions, err := traitCatalog.apply(&environment)
 
        require.NoError(t, err)
-       assert.Len(t, conditions, 2)
        assert.Contains(t, conditions, deploymentCondition)
        assert.Contains(t, conditions, serviceCondition)
        assert.NotEmpty(t, environment.ExecutedTraits)
@@ -665,7 +659,6 @@ func 
TestServiceWithKnativeServiceDisabledInIntegrationPlatform(t *testing.T) {
        conditions, err := traitCatalog.apply(&environment)
 
        require.NoError(t, err)
-       assert.Len(t, conditions, 1)
        assert.Contains(t, conditions, expectedCondition)
        assert.NotEmpty(t, environment.ExecutedTraits)
        assert.NotNil(t, environment.GetTrait(serviceTraitID))
diff --git a/pkg/trait/trait_catalog.go b/pkg/trait/trait_catalog.go
index 3169f563c..8bbcf4bd3 100644
--- a/pkg/trait/trait_catalog.go
+++ b/pkg/trait/trait_catalog.go
@@ -26,6 +26,7 @@ import (
        v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
        "github.com/apache/camel-k/v2/pkg/client"
        "github.com/apache/camel-k/v2/pkg/util/log"
+       corev1 "k8s.io/api/core/v1"
 )
 
 // Catalog collects all information about traits in one place.
@@ -115,9 +116,7 @@ func (c *Catalog) apply(environment *Environment) 
([]*TraitCondition, error) {
                        if err != nil {
                                return traitsConditions, fmt.Errorf("%s trait 
execution failed: %w", trait.ID(), err)
                        }
-
                        environment.ExecutedTraits = 
append(environment.ExecutedTraits, trait)
-
                        // execute post step processors
                        for _, processor := range 
environment.PostStepProcessors {
                                err := processor(environment)
@@ -127,12 +126,7 @@ func (c *Catalog) apply(environment *Environment) 
([]*TraitCondition, error) {
                        }
                }
        }
-
-       traitIds := make([]string, 0)
-       for _, trait := range environment.ExecutedTraits {
-               traitIds = append(traitIds, string(trait.ID()))
-       }
-       c.L.Debugf("Applied traits: %s", strings.Join(traitIds, ","))
+       traitsConditions = append(traitsConditions, 
c.executedTraitCondition(environment.ExecutedTraits))
 
        if !applicable && 
environment.PlatformInPhase(v1.IntegrationPlatformPhaseReady) {
                return traitsConditions, errors.New("no trait can be executed 
because of no ready platform found")
@@ -148,6 +142,17 @@ func (c *Catalog) apply(environment *Environment) 
([]*TraitCondition, error) {
        return traitsConditions, nil
 }
 
+func (c *Catalog) executedTraitCondition(executedTrait []Trait) 
*TraitCondition {
+       traitIds := make([]string, 0)
+       for _, trait := range executedTrait {
+               traitIds = append(traitIds, string(trait.ID()))
+       }
+       message := fmt.Sprintf("Applied traits: %s", strings.Join(traitIds, 
","))
+       c.L.Debugf(message)
+
+       return NewIntegrationCondition(v1.IntegrationConditionTraitInfo, 
corev1.ConditionTrue, traitConfigurationReason, message)
+}
+
 // GetTrait returns the trait with the given ID.
 func (c *Catalog) GetTrait(id string) Trait {
        for _, t := range c.AllTraits() {
diff --git a/pkg/trait/trait_test.go b/pkg/trait/trait_test.go
index 509e70e84..ce750a199 100644
--- a/pkg/trait/trait_test.go
+++ b/pkg/trait/trait_test.go
@@ -549,3 +549,18 @@ func createTestEnv(t *testing.T, cluster 
v1.IntegrationPlatformCluster, script s
 func NewTraitTestCatalog() *Catalog {
        return NewCatalog(nil)
 }
+
+func TestExecutedTraitsCondition(t *testing.T) {
+       env := createTestEnv(t, v1.IntegrationPlatformClusterOpenShift, 
"camel:core")
+       catalog := NewTraitTestCatalog()
+       conditions, err := catalog.apply(env)
+       require.NoError(t, err)
+
+       expectedCondition := NewIntegrationCondition(
+               v1.IntegrationConditionTraitInfo,
+               corev1.ConditionTrue,
+               "TraitConfiguration",
+               "Applied traits: 
camel,environment,logging,deployer,deployment,gc,container,mount,quarkus,jvm,owner",
+       )
+       assert.Contains(t, conditions, expectedCondition)
+}

Reply via email to