This is an automated email from the ASF dual-hosted git repository. nferraro pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit 59466e182d2e56fd3bf02861d79dd0b2dfec8d48 Author: nicolaferraro <ni.ferr...@gmail.com> AuthorDate: Thu Oct 14 13:24:07 2021 +0200 Fix #2687: use annotations for both operator and platform --- e2e/support/test_support.go | 18 +++++++++--------- pkg/apis/camel/v1/common_types.go | 9 +++++---- pkg/controller/integrationkit/build.go | 13 ++++++------- pkg/platform/operator.go | 4 ++-- pkg/platform/platform.go | 23 +++++++++++++++-------- pkg/trait/container.go | 13 +++++++------ pkg/trait/quarkus.go | 13 +++++++------ 7 files changed, 51 insertions(+), 42 deletions(-) diff --git a/e2e/support/test_support.go b/e2e/support/test_support.go index 60fce20..64dbf5c 100644 --- a/e2e/support/test_support.go +++ b/e2e/support/test_support.go @@ -428,10 +428,10 @@ func AssignIntegrationToOperator(ns, name, operator string) error { if it == nil { return fmt.Errorf("cannot assign integration %q to operator: integration not found", name) } - if it.Labels == nil { - it.Labels = make(map[string]string) + if it.Annotations == nil { + it.Annotations = make(map[string]string) } - it.Labels[v1.OperatorIDLabel] = operator + it.Annotations[v1.OperatorIDAnnotation] = operator return TestClient().Update(TestContext, it) } @@ -745,10 +745,10 @@ func AssignKameletBindingToOperator(ns, name, operator string) error { if klb == nil { return fmt.Errorf("cannot assign kamelet binding %q to operator: kamelet binding not found", name) } - if klb.Labels == nil { - klb.Labels = make(map[string]string) + if klb.Annotations == nil { + klb.Annotations = make(map[string]string) } - klb.Labels[v1.OperatorIDLabel] = operator + klb.Annotations[v1.OperatorIDAnnotation] = operator return TestClient().Update(TestContext, klb) } @@ -1073,10 +1073,10 @@ func AssignPlatformToOperator(ns, operator string) error { if pl == nil { return errors.New("cannot assign platform to operator: no platform found") } - if pl.Labels == nil { - pl.Labels = make(map[string]string) + if pl.Annotations == nil { + pl.Annotations = make(map[string]string) } - pl.Labels[v1.OperatorIDLabel] = operator + pl.Annotations[v1.OperatorIDAnnotation] = operator return TestClient().Update(TestContext, pl) } diff --git a/pkg/apis/camel/v1/common_types.go b/pkg/apis/camel/v1/common_types.go index 571f547..45e9f91 100644 --- a/pkg/apis/camel/v1/common_types.go +++ b/pkg/apis/camel/v1/common_types.go @@ -23,10 +23,11 @@ import ( ) const ( - TraitAnnotationPrefix = "trait.camel.apache.org/" - OperatorIDLabel = "camel.apache.org/operator.id" - SecondaryPlatformLabel = "camel.apache.org/secondary.platform" - PlatformSelectorAnnotation = "camel.apache.org/platform.id" + TraitAnnotationPrefix = "trait.camel.apache.org/" + + OperatorIDAnnotation = "camel.apache.org/operator.id" + SecondaryPlatformAnnotation = "camel.apache.org/secondary.platform" + PlatformSelectorAnnotation = "camel.apache.org/platform.id" ) // BuildStrategy specifies how the Build should be executed diff --git a/pkg/controller/integrationkit/build.go b/pkg/controller/integrationkit/build.go index cb74cd0..47fa5c6 100644 --- a/pkg/controller/integrationkit/build.go +++ b/pkg/controller/integrationkit/build.go @@ -86,15 +86,14 @@ func (action *buildAction) handleBuildSubmitted(ctx context.Context, kit *v1.Int labels := kubernetes.FilterCamelCreatorLabels(kit.Labels) labels[v1.IntegrationKitLayoutLabel] = kit.Labels[v1.IntegrationKitLayoutLabel] + + var annotations = make(map[string]string) + if v, ok := kit.Annotations[v1.PlatformSelectorAnnotation]; ok { + annotations[v1.PlatformSelectorAnnotation] = v + } operatorID := defaults.OperatorID() if operatorID != "" { - labels[v1.OperatorIDLabel] = operatorID - } - var annotations map[string]string - if v, ok := kit.Annotations[v1.PlatformSelectorAnnotation]; ok { - annotations = map[string]string{ - v1.PlatformSelectorAnnotation: v, - } + annotations[v1.OperatorIDAnnotation] = operatorID } timeout := env.Platform.Status.Build.GetTimeout() diff --git a/pkg/platform/operator.go b/pkg/platform/operator.go index d34c898..d8efd79 100644 --- a/pkg/platform/operator.go +++ b/pkg/platform/operator.go @@ -108,7 +108,7 @@ func IsOperatorHandler(object ctrl.Object) bool { if object == nil { return true } - resourceID := object.GetLabels()[camelv1.OperatorIDLabel] + resourceID := object.GetAnnotations()[camelv1.OperatorIDAnnotation] operatorID := defaults.OperatorID() return resourceID == operatorID } @@ -155,7 +155,7 @@ func (f FilteringFuncs) Update(e event.UpdateEvent) bool { return false } if e.ObjectOld != nil && e.ObjectNew != nil && - e.ObjectOld.GetLabels()[camelv1.OperatorIDLabel] != e.ObjectNew.GetLabels()[camelv1.OperatorIDLabel] { + e.ObjectOld.GetAnnotations()[camelv1.OperatorIDAnnotation] != e.ObjectNew.GetAnnotations()[camelv1.OperatorIDAnnotation] { // Always force reconciliation when the object becomes managed by the current operator return true } diff --git a/pkg/platform/platform.go b/pkg/platform/platform.go index e7e0774..73b365f 100644 --- a/pkg/platform/platform.go +++ b/pkg/platform/platform.go @@ -26,8 +26,6 @@ import ( "github.com/apache/camel-k/pkg/util/kubernetes" corev1 "k8s.io/api/core/v1" k8serrors "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/labels" - "k8s.io/apimachinery/pkg/selection" k8sclient "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -167,15 +165,24 @@ func findLocal(ctx context.Context, c k8sclient.Reader, namespace string, active // ListPrimaryPlatforms returns all non-secondary platforms installed in a given namespace (only one will be active) func ListPrimaryPlatforms(ctx context.Context, c k8sclient.Reader, namespace string) (*v1.IntegrationPlatformList, error) { - lst := v1.NewIntegrationPlatformList() - primaryPlatform, err := labels.NewRequirement(v1.SecondaryPlatformLabel, selection.DoesNotExist, []string{}) + lst, err := ListAllPlatforms(ctx, c, namespace) if err != nil { return nil, err } - opt := k8sclient.MatchingLabelsSelector{ - labels.NewSelector().Add(*primaryPlatform), + + filtered := v1.NewIntegrationPlatformList() + for _, pl := range lst.Items { + if val, present := pl.Annotations[v1.SecondaryPlatformAnnotation]; !present || val != "true" { + filtered.Items = append(filtered.Items, pl) + } } - if err := c.List(ctx, &lst, k8sclient.InNamespace(namespace), opt); err != nil { + return &filtered, nil +} + +// ListAllPlatforms returns all platforms installed in a given namespace +func ListAllPlatforms(ctx context.Context, c k8sclient.Reader, namespace string) (*v1.IntegrationPlatformList, error) { + lst := v1.NewIntegrationPlatformList() + if err := c.List(ctx, &lst, k8sclient.InNamespace(namespace)); err != nil { return nil, err } return &lst, nil @@ -188,7 +195,7 @@ func IsActive(p *v1.IntegrationPlatform) bool { // IsSecondary determines if the given platform is marked as secondary func IsSecondary(p *v1.IntegrationPlatform) bool { - if l, ok := p.Labels[v1.SecondaryPlatformLabel]; ok && l == "true" { + if l, ok := p.Annotations[v1.SecondaryPlatformAnnotation]; ok && l == "true" { return true } return false diff --git a/pkg/trait/container.go b/pkg/trait/container.go index 00c9826..bf9316f 100644 --- a/pkg/trait/container.go +++ b/pkg/trait/container.go @@ -216,14 +216,15 @@ func (t *containerTrait) configureImageIntegrationKit(e *Environment) error { kubernetes.CamelCreatorLabelVersion: e.Integration.ResourceVersion, } - operatorID := defaults.OperatorID() - if operatorID != "" { - kit.Labels[v1.OperatorIDLabel] = operatorID + if kit.Annotations == nil { + kit.Annotations = make(map[string]string) } if v, ok := e.Integration.Annotations[v1.PlatformSelectorAnnotation]; ok { - kit.Annotations = map[string]string{ - v1.PlatformSelectorAnnotation: v, - } + kit.Annotations[v1.PlatformSelectorAnnotation] = v + } + operatorID := defaults.OperatorID() + if operatorID != "" { + kit.Annotations[v1.OperatorIDAnnotation] = operatorID } t.L.Infof("image %s", kit.Spec.Image) diff --git a/pkg/trait/quarkus.go b/pkg/trait/quarkus.go index 1c66527..327afcc 100644 --- a/pkg/trait/quarkus.go +++ b/pkg/trait/quarkus.go @@ -261,14 +261,15 @@ func (t *quarkusTrait) newIntegrationKit(e *Environment, packageType quarkusPack kubernetes.CamelCreatorLabelVersion: integration.ResourceVersion, } - operatorID := defaults.OperatorID() - if operatorID != "" { - kit.Labels[v1.OperatorIDLabel] = operatorID + if kit.Annotations == nil { + kit.Annotations = make(map[string]string) } if v, ok := integration.Annotations[v1.PlatformSelectorAnnotation]; ok { - kit.Annotations = map[string]string{ - v1.PlatformSelectorAnnotation: v, - } + kit.Annotations[v1.PlatformSelectorAnnotation] = v + } + operatorID := defaults.OperatorID() + if operatorID != "" { + kit.Annotations[v1.OperatorIDAnnotation] = operatorID } traits := t.getKitTraits(e)