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) +}
