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 ec9406b410bcea0b2d74bfb0dc1ec57e50394d44 Author: Rodrigue Cloutier <rclout...@petalmd.com> AuthorDate: Thu Jan 25 13:58:56 2024 -0500 Add test for new annotation on build pod --- pkg/apis/camel/v1/trait/builder.go | 2 + pkg/controller/build/build_pod_test.go | 68 ++++++++++++++++++++++++++++++++++ pkg/trait/builder.go | 1 + pkg/trait/builder_test.go | 20 ++++++++++ 4 files changed, 91 insertions(+) diff --git a/pkg/apis/camel/v1/trait/builder.go b/pkg/apis/camel/v1/trait/builder.go index f8b495a5b..0e626438e 100644 --- a/pkg/apis/camel/v1/trait/builder.go +++ b/pkg/apis/camel/v1/trait/builder.go @@ -70,4 +70,6 @@ type BuilderTrait struct { TasksLimitMemory []string `property:"tasks-limit-memory" json:"tasksLimitMemory,omitempty"` // Defines a set of nodes the builder pod is eligible to be scheduled on, based on labels on the node. NodeSelector map[string]string `property:"node-selector" json:"nodeSelector,omitempty"` + // When using `pod` strategy, annotation to use for the builder pod. + Annotations map[string]string `property:"annotations" json:"annotations,omitempty"` } diff --git a/pkg/controller/build/build_pod_test.go b/pkg/controller/build/build_pod_test.go new file mode 100644 index 000000000..3dc5c87da --- /dev/null +++ b/pkg/controller/build/build_pod_test.go @@ -0,0 +1,68 @@ +/* +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 build + +import ( + "context" + "testing" + + v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1" + "github.com/apache/camel-k/v2/pkg/util/test" + "github.com/stretchr/testify/assert" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +func TestNewBuildPodConfiguration(t *testing.T) { + + ctx := context.TODO() + c, err := test.NewFakeClient() + assert.Nil(t, err) + + build := v1.Build{ + ObjectMeta: metav1.ObjectMeta{ + Name: "theBuildName", + }, + Spec: v1.BuildSpec{ + Tasks: []v1.Task{ + { + Builder: &v1.BuilderTask{ + BaseTask: v1.BaseTask{ + Name: "builder", + Configuration: v1.BuildConfiguration{ + BuilderPodNamespace: "theNamespace", + NodeSelector: map[string]string{"node": "selector"}, + Annotations: map[string]string{"annotation": "value"}, + }, + }, + }, + }, + }, + }, + } + + pod := newBuildPod(ctx, c, &build) + + assert.Equal(t, "Pod", pod.Kind) + assert.Equal(t, "theNamespace", pod.Namespace) + assert.Equal(t, map[string]string{ + "camel.apache.org/build": "theBuildName", + "camel.apache.org/component": "builder", + }, pod.Labels) + assert.Equal(t, map[string]string{"node": "selector"}, pod.Spec.NodeSelector) + assert.Equal(t, map[string]string{"annotation": "value"}, pod.Annotations) +} diff --git a/pkg/trait/builder.go b/pkg/trait/builder.go index 26202d269..6b9375126 100644 --- a/pkg/trait/builder.go +++ b/pkg/trait/builder.go @@ -185,6 +185,7 @@ func (t *builderTrait) Apply(e *Environment) error { return nil } builderTask.Configuration.NodeSelector = t.NodeSelector + builderTask.Configuration.Annotations = t.Annotations pipelineTasks = append(pipelineTasks, v1.Task{Builder: builderTask}) // Custom tasks diff --git a/pkg/trait/builder_test.go b/pkg/trait/builder_test.go index d7e4e87f1..de1af59d6 100644 --- a/pkg/trait/builder_test.go +++ b/pkg/trait/builder_test.go @@ -483,6 +483,26 @@ func TestBuilderWithNodeSelector(t *testing.T) { assert.Equal(t, map[string]string{"size": "large"}, builderTrait.NodeSelector) } +func TestBuilderWithAnnotations(t *testing.T) { + env := createBuilderTestEnv(v1.IntegrationPlatformClusterKubernetes, v1.IntegrationPlatformBuildPublishStrategyJib, v1.BuildStrategyRoutine) + builderTrait := createNominalBuilderTraitTest() + builderTrait.Annotations = map[string]string{ + "annotation": "value", + } + + active, condition, err := builderTrait.Configure(env) + assert.Nil(t, err) + + err = builderTrait.Apply(env) + assert.Nil(t, err) + + assert.True(t, active) + assert.Nil(t, condition) + + assert.Equal(t, map[string]string{"annotation": "value"}, env.Pipeline[0].Builder.Configuration.Annotations) + assert.Equal(t, map[string]string{"annotation": "value"}, builderTrait.Annotations) +} + func TestBuilderNoTasksFilter(t *testing.T) { env := createBuilderTestEnv(v1.IntegrationPlatformClusterKubernetes, v1.IntegrationPlatformBuildPublishStrategyJib, v1.BuildStrategyPod) builderTrait := createNominalBuilderTraitTest()