From df30d3a87d4ec7cd37a4ef0706cb5c108c24df33 Mon Sep 17 00:00:00 2001 From: Pasquale Congiusti Date: Fri, 6 Oct 2023 11:10:03 +0200 Subject: [PATCH] feat(api): Kamelet as static resource Remove the reconciliation loop and the kamelet.status property --- pkg/apis/camel/v1/kamelet_types.go | 1 + pkg/cmd/describe_kamelet.go | 3 - pkg/cmd/kamelet_get.go | 3 +- pkg/controller/add_kamelet.go | 26 --- pkg/controller/kamelet/action.go | 54 ----- pkg/controller/kamelet/initialize.go | 48 ----- pkg/controller/kamelet/kamelet_controller.go | 210 ------------------- pkg/controller/kamelet/log.go | 23 -- pkg/controller/kamelet/monitor.go | 46 ---- pkg/event/manager.go | 29 --- pkg/kamelet/initialize.go | 105 ---------- pkg/trait/kamelets.go | 50 +---- pkg/trait/kamelets_test.go | 10 - 13 files changed, 4 insertions(+), 604 deletions(-) delete mode 100644 pkg/controller/add_kamelet.go delete mode 100644 pkg/controller/kamelet/action.go delete mode 100644 pkg/controller/kamelet/initialize.go delete mode 100644 pkg/controller/kamelet/kamelet_controller.go delete mode 100644 pkg/controller/kamelet/log.go delete mode 100644 pkg/controller/kamelet/monitor.go delete mode 100644 pkg/kamelet/initialize.go diff --git a/pkg/apis/camel/v1/kamelet_types.go b/pkg/apis/camel/v1/kamelet_types.go index 04730d4acc..9a3680fb80 100644 --- a/pkg/apis/camel/v1/kamelet_types.go +++ b/pkg/apis/camel/v1/kamelet_types.go @@ -64,6 +64,7 @@ type Kamelet struct { // the desired specification Spec KameletSpec `json:"spec,omitempty"` // the actual status of the resource + // Deprecated no longer in use Status KameletStatus `json:"status,omitempty"` } diff --git a/pkg/cmd/describe_kamelet.go b/pkg/cmd/describe_kamelet.go index c7267fd84e..b8601b8b79 100644 --- a/pkg/cmd/describe_kamelet.go +++ b/pkg/cmd/describe_kamelet.go @@ -99,9 +99,6 @@ func (command *describeKameletCommandOptions) describeKamelet(cmd *cobra.Command w := indentedwriter.NewWriter(cmd.OutOrStdout()) describeObjectMeta(w, kamelet.ObjectMeta) - - w.Writef(0, "Phase:\t%s\n", kamelet.Status.Phase) - // Definition def := kamelet.Spec.Definition if def != nil { diff --git a/pkg/cmd/kamelet_get.go b/pkg/cmd/kamelet_get.go index 37e7023c71..707e300676 100644 --- a/pkg/cmd/kamelet_get.go +++ b/pkg/cmd/kamelet_get.go @@ -121,9 +121,8 @@ func (command *kameletGetCommandOptions) run(cmd *cobra.Command) error { continue } - fmt.Fprintf(w, "%s\t%s\t%s\t%s\t%s\t%s\t%s\n", + fmt.Fprintf(w, "%s\t%s\t%s\t%s\t%s\t%s\n", kl.Name, - string(kl.Status.Phase), klType, group, bundled, diff --git a/pkg/controller/add_kamelet.go b/pkg/controller/add_kamelet.go deleted file mode 100644 index bf3b2e5246..0000000000 --- a/pkg/controller/add_kamelet.go +++ /dev/null @@ -1,26 +0,0 @@ -/* -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 controller - -import ( - "github.com/apache/camel-k/v2/pkg/controller/kamelet" -) - -func init() { - addToManager = append(addToManager, kamelet.Add) -} diff --git a/pkg/controller/kamelet/action.go b/pkg/controller/kamelet/action.go deleted file mode 100644 index 618d2423e3..0000000000 --- a/pkg/controller/kamelet/action.go +++ /dev/null @@ -1,54 +0,0 @@ -/* -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 kamelet - -import ( - "context" - - 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" -) - -// Action --. -type Action interface { - client.Injectable - log.Injectable - - // a user friendly name for the action - Name() string - - // returns true if the action can handle the kamelet - CanHandle(kamelet *v1.Kamelet) bool - - // executes the handling function - Handle(ctx context.Context, kamelet *v1.Kamelet) (*v1.Kamelet, error) -} - -type baseAction struct { - client client.Client - L log.Logger -} - -func (action *baseAction) InjectClient(client client.Client) { - action.client = client -} - -func (action *baseAction) InjectLogger(log log.Logger) { - action.L = log -} diff --git a/pkg/controller/kamelet/initialize.go b/pkg/controller/kamelet/initialize.go deleted file mode 100644 index 96845af49c..0000000000 --- a/pkg/controller/kamelet/initialize.go +++ /dev/null @@ -1,48 +0,0 @@ -/* -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 kamelet - -import ( - "context" - - v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1" - kameletutils "github.com/apache/camel-k/v2/pkg/kamelet" -) - -// NewInitializeAction returns a action that initializes the kamelet configuration when not provided by the user. -func NewInitializeAction() Action { - return &initializeAction{} -} - -type initializeAction struct { - baseAction -} - -func (action *initializeAction) Name() string { - return "initialize" -} - -func (action *initializeAction) CanHandle(kamelet *v1.Kamelet) bool { - return kamelet.Status.Phase == v1.KameletPhaseNone -} - -func (action *initializeAction) Handle(ctx context.Context, kamelet *v1.Kamelet) (*v1.Kamelet, error) { - action.L.Info("Initializing Kamelet") - - return kameletutils.Initialize(kamelet) -} diff --git a/pkg/controller/kamelet/kamelet_controller.go b/pkg/controller/kamelet/kamelet_controller.go deleted file mode 100644 index e005ff48dd..0000000000 --- a/pkg/controller/kamelet/kamelet_controller.go +++ /dev/null @@ -1,210 +0,0 @@ -/* -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 kamelet - -import ( - "context" - goruntime "runtime" - "time" - - k8serrors "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/schema" - "k8s.io/client-go/tools/record" - - "sigs.k8s.io/controller-runtime/pkg/builder" - ctrl "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/controller" - "sigs.k8s.io/controller-runtime/pkg/event" - "sigs.k8s.io/controller-runtime/pkg/manager" - "sigs.k8s.io/controller-runtime/pkg/reconcile" - - v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1" - - "github.com/apache/camel-k/v2/pkg/client" - camelevent "github.com/apache/camel-k/v2/pkg/event" - "github.com/apache/camel-k/v2/pkg/platform" - "github.com/apache/camel-k/v2/pkg/util/monitoring" -) - -// Add creates a new Kamelet Controller and adds it to the Manager. The Manager will set fields on the Controller -// and Start it when the Manager is Started. -func Add(ctx context.Context, mgr manager.Manager, c client.Client) error { - return add(mgr, newReconciler(mgr, c)) -} - -func newReconciler(mgr manager.Manager, c client.Client) reconcile.Reconciler { - return monitoring.NewInstrumentedReconciler( - &reconcileKamelet{ - client: c, - scheme: mgr.GetScheme(), - recorder: mgr.GetEventRecorderFor("camel-k-kamelet-controller"), - }, - schema.GroupVersionKind{ - Group: v1.SchemeGroupVersion.Group, - Version: v1.SchemeGroupVersion.Version, - Kind: v1.KameletKind, - }, - ) -} - -func add(mgr manager.Manager, r reconcile.Reconciler) error { - return builder.ControllerManagedBy(mgr). - Named("kamelet-controller"). - // Watch for changes to primary resource Kamelet - For(&v1.Kamelet{}, builder.WithPredicates( - platform.FilteringFuncs{ - UpdateFunc: func(e event.UpdateEvent) bool { - oldKamelet, ok := e.ObjectOld.(*v1.Kamelet) - if !ok { - return false - } - newKamelet, ok := e.ObjectNew.(*v1.Kamelet) - if !ok { - return false - } - // Ignore updates to the Kamelet status in which case metadata.Generation - // does not change, or except when the Kamelet phase changes as it's used - // to transition from one phase to another - return oldKamelet.Generation != newKamelet.Generation || - oldKamelet.Status.Phase != newKamelet.Status.Phase - }, - DeleteFunc: func(e event.DeleteEvent) bool { - // Evaluates to false if the object has been confirmed deleted - return !e.DeleteStateUnknown - }, - })). - WithOptions(controller.Options{ - MaxConcurrentReconciles: goruntime.GOMAXPROCS(0), - }). - Complete(r) -} - -var _ reconcile.Reconciler = &reconcileKamelet{} - -// reconcileKamelet reconciles a Kamelet object. -type reconcileKamelet struct { - // This client, initialized using mgr.Client() above, is a split client - // that reads objects from the cache and writes to the API server - client client.Client - scheme *runtime.Scheme - recorder record.EventRecorder -} - -// Reconcile reads that state of the cluster for a Kamelet object and makes changes based -// on the state read and what is in the Kamelet.Spec -// Note: -// The Controller will requeue the Request to be processed again if the returned error is non-nil or -// Result.Requeue is true, otherwise upon completion it will remove the work from the queue. -func (r *reconcileKamelet) Reconcile(ctx context.Context, request reconcile.Request) (reconcile.Result, error) { - rlog := Log.WithValues("request-namespace", request.Namespace, "request-name", request.Name) - rlog.Debug("Reconciling Kamelet") - - // Make sure the operator is allowed to act on namespace - if ok, err := platform.IsOperatorAllowedOnNamespace(ctx, r.client, request.Namespace); err != nil { - return reconcile.Result{}, err - } else if !ok { - rlog.Info("Ignoring request because namespace is locked") - return reconcile.Result{}, nil - } - - // Fetch the Kamelet instance - var instance v1.Kamelet - - if err := r.client.Get(ctx, request.NamespacedName, &instance); err != nil { - if k8serrors.IsNotFound(err) { - // Request object not found, could have been deleted after reconcile request. - // Owned objects are automatically garbage collected. For additional cleanup - // logic use finalizers. - - // Return and don't requeue - return reconcile.Result{}, nil - } - // Error reading the object - requeue the request. - return reconcile.Result{}, err - } - - // Only process resources assigned to the operator - if !platform.IsOperatorHandlerConsideringLock(ctx, r.client, request.Namespace, &instance) { - rlog.Info("Ignoring request because resource is not assigned to current operator") - return reconcile.Result{}, nil - } - - actions := []Action{ - NewInitializeAction(), - NewMonitorAction(), - } - - var targetPhase v1.KameletPhase - var err error - - target := instance.DeepCopy() - targetLog := rlog.ForKamelet(target) - - for _, a := range actions { - a.InjectClient(r.client) - a.InjectLogger(targetLog) - - if !a.CanHandle(target) { - continue - } - - targetLog.Debugf("Invoking action %s", a.Name()) - - phaseFrom := target.Status.Phase - - target, err = a.Handle(ctx, target) - if err != nil { - camelevent.NotifyKameletError(ctx, r.client, r.recorder, &instance, target, err) - return reconcile.Result{}, err - } - - if target != nil { - target.Status.ObservedGeneration = instance.GetGeneration() - - if err := r.client.Status().Patch(ctx, target, ctrl.MergeFrom(&instance)); err != nil { - camelevent.NotifyKameletError(ctx, r.client, r.recorder, &instance, target, err) - return reconcile.Result{}, err - } - - targetPhase = target.Status.Phase - - if targetPhase != phaseFrom { - targetLog.Info( - "State transition", - "phase-from", phaseFrom, - "phase-to", target.Status.Phase, - ) - } - } - - // handle one action at time so the resource - // is always at its latest state - camelevent.NotifyKameletUpdated(ctx, r.client, r.recorder, &instance, target) - break - } - - if targetPhase == v1.KameletPhaseReady { - return reconcile.Result{}, nil - } - - // Requeue - return reconcile.Result{ - RequeueAfter: 5 * time.Second, - }, nil -} diff --git a/pkg/controller/kamelet/log.go b/pkg/controller/kamelet/log.go deleted file mode 100644 index 468c42b8e4..0000000000 --- a/pkg/controller/kamelet/log.go +++ /dev/null @@ -1,23 +0,0 @@ -/* -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 kamelet - -import "github.com/apache/camel-k/v2/pkg/util/log" - -// Log --. -var Log = log.Log.WithName("controller").WithName("kamelet") diff --git a/pkg/controller/kamelet/monitor.go b/pkg/controller/kamelet/monitor.go deleted file mode 100644 index a3a655d0ae..0000000000 --- a/pkg/controller/kamelet/monitor.go +++ /dev/null @@ -1,46 +0,0 @@ -/* -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 kamelet - -import ( - "context" - - v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1" - kameletutils "github.com/apache/camel-k/v2/pkg/kamelet" -) - -// NewMonitorAction returns an action that monitors the kamelet after it's fully initialized. -func NewMonitorAction() Action { - return &monitorAction{} -} - -type monitorAction struct { - baseAction -} - -func (action *monitorAction) Name() string { - return "monitor" -} - -func (action *monitorAction) CanHandle(kamelet *v1.Kamelet) bool { - return kamelet.Status.Phase == v1.KameletPhaseReady || kamelet.Status.Phase == v1.KameletPhaseError -} - -func (action *monitorAction) Handle(ctx context.Context, kamelet *v1.Kamelet) (*v1.Kamelet, error) { - return kameletutils.Initialize(kamelet) -} diff --git a/pkg/event/manager.go b/pkg/event/manager.go index 6c87aa5798..106287b73a 100644 --- a/pkg/event/manager.go +++ b/pkg/event/manager.go @@ -168,35 +168,6 @@ func NotifyIntegrationPlatformError(ctx context.Context, c client.Client, record recorder.Eventf(p, corev1.EventTypeWarning, ReasonIntegrationPlatformError, "Cannot reconcile Integration Platform %s: %v", p.Name, err) } -// NotifyKameletUpdated automatically generates events when a Kamelet changes. -func NotifyKameletUpdated(ctx context.Context, c client.Client, recorder record.EventRecorder, old, newResource *v1.Kamelet) { - if newResource == nil { - return - } - oldPhase := "" - var oldConditions []v1.ResourceCondition - if old != nil { - oldPhase = string(old.Status.Phase) - oldConditions = old.Status.GetConditions() - } - if newResource.Status.Phase != v1.KameletPhaseNone { - notifyIfConditionUpdated(recorder, newResource, oldConditions, newResource.Status.GetConditions(), "Kamelet", newResource.Name, ReasonKameletConditionChanged) - } - notifyIfPhaseUpdated(ctx, c, recorder, newResource, oldPhase, string(newResource.Status.Phase), "Kamelet", newResource.Name, ReasonKameletPhaseUpdated, "") -} - -// NotifyKameletError automatically generates error events when the kamelet reconcile cycle phase has an error. -func NotifyKameletError(ctx context.Context, c client.Client, recorder record.EventRecorder, old, newResource *v1.Kamelet, err error) { - k := old - if newResource != nil { - k = newResource - } - if k == nil { - return - } - recorder.Eventf(k, corev1.EventTypeWarning, ReasonKameletError, "Cannot reconcile Kamelet %s: %v", k.Name, err) -} - // NotifyCamelCatalogUpdated automatically generates events when a CamelCatalog changes. func NotifyCamelCatalogUpdated(ctx context.Context, c client.Client, recorder record.EventRecorder, old, newResource *v1.CamelCatalog) { if newResource == nil { diff --git a/pkg/kamelet/initialize.go b/pkg/kamelet/initialize.go deleted file mode 100644 index cce0997841..0000000000 --- a/pkg/kamelet/initialize.go +++ /dev/null @@ -1,105 +0,0 @@ -/* -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 kamelet - -import ( - "bytes" - "encoding/json" - "fmt" - "sort" - - v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1" - - corev1 "k8s.io/api/core/v1" -) - -func Initialize(kamelet *v1.Kamelet) (*v1.Kamelet, error) { - target := kamelet.DeepCopy() - - ok := true - if !v1.ValidKameletName(kamelet.Name) { - ok = false - target.Status.SetCondition( - v1.KameletConditionReady, - corev1.ConditionFalse, - v1.KameletConditionReasonInvalidName, - fmt.Sprintf("Kamelet name %q is reserved", kamelet.Name), - ) - } - if !v1.ValidKameletProperties(kamelet) { - ok = false - target.Status.SetCondition( - v1.KameletConditionReady, - corev1.ConditionFalse, - v1.KameletConditionReasonInvalidProperty, - fmt.Sprintf("Kamelet property %q is reserved and cannot be part of the schema", v1.KameletIDProperty), - ) - } - - if !ok { - target.Status.Phase = v1.KameletPhaseError - } else { - target.Status.Phase = v1.KameletPhaseReady - target.Status.SetCondition( - v1.KameletConditionReady, - corev1.ConditionTrue, - "", - "", - ) - if err := recomputeProperties(target); err != nil { - return nil, err - } - } - - return target, nil -} - -func recomputeProperties(kamelet *v1.Kamelet) error { - if kamelet.Spec.Definition == nil { - return nil - } - - kamelet.Status.Properties = make([]v1.KameletProperty, 0, len(kamelet.Spec.Definition.Properties)) - propSet := make(map[string]bool) - for k, v := range kamelet.Spec.Definition.Properties { - if propSet[k] { - continue - } - propSet[k] = true - defValue := "" - if v.Default != nil { - var val interface{} - d := json.NewDecoder(bytes.NewReader(v.Default.RawMessage)) - d.UseNumber() - if err := d.Decode(&val); err != nil { - return fmt.Errorf("cannot decode default value for property %q: %w", k, err) - } - defValue = fmt.Sprintf("%v", val) - } - kamelet.Status.Properties = append(kamelet.Status.Properties, v1.KameletProperty{ - Name: k, - Default: defValue, - }) - } - sort.SliceStable(kamelet.Status.Properties, func(i, j int) bool { - pi := kamelet.Status.Properties[i].Name - pj := kamelet.Status.Properties[j].Name - return pi < pj - }) - return nil -} diff --git a/pkg/trait/kamelets.go b/pkg/trait/kamelets.go index 9d1b1c308f..02abf60e97 100644 --- a/pkg/trait/kamelets.go +++ b/pkg/trait/kamelets.go @@ -30,8 +30,6 @@ import ( v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1" traitv1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1/trait" - - kameletutils "github.com/apache/camel-k/v2/pkg/kamelet" "github.com/apache/camel-k/v2/pkg/kamelet/repository" "github.com/apache/camel-k/v2/pkg/platform" "github.com/apache/camel-k/v2/pkg/util" @@ -107,8 +105,6 @@ func (t *kameletsTrait) Apply(e *Environment) error { } if e.IntegrationInPhase(v1.IntegrationPhaseInitialization) { return t.addConfigurationSecrets(e) - } else if e.IntegrationInRunningPhases() { - return t.configureApplicationProperties(e) } return nil @@ -134,12 +130,7 @@ func (t *kameletsTrait) collectKamelets(e *Environment) (map[string]*v1.Kamelet, missingKamelets = append(missingKamelets, key) } else { availableKamelets = append(availableKamelets, key) - - // Initialize remote kamelets - kamelets[key], err = kameletutils.Initialize(kamelet) - if err != nil { - return nil, err - } + kamelets[key] = kamelet } } @@ -181,15 +172,9 @@ func (t *kameletsTrait) addKamelets(e *Environment) error { for _, key := range t.getKameletKeys() { kamelet := kamelets[key] - - if kamelet.Status.Phase != v1.KameletPhaseReady { - return fmt.Errorf("kamelet %q is not %s: %s", key, v1.KameletPhaseReady, kamelet.Status.Phase) - } - if err := t.addKameletAsSource(e, kamelet); err != nil { return err } - // Adding dependencies from Kamelets util.StringSliceUniqueConcat(&e.Integration.Status.Dependencies, kamelet.Spec.Dependencies) } @@ -199,39 +184,8 @@ func (t *kameletsTrait) addKamelets(e *Environment) error { return nil } -func (t *kameletsTrait) configureApplicationProperties(e *Environment) error { - if len(t.getKameletKeys()) > 0 { - kamelets, err := t.collectKamelets(e) - if err != nil { - return err - } - - for _, key := range t.getKameletKeys() { - kamelet := kamelets[key] - // Configuring defaults from Kamelet - for _, prop := range kamelet.Status.Properties { - if prop.Default != "" { - // Check whether user specified a value - userDefined := false - propName := fmt.Sprintf("camel.kamelet.%s.%s", kamelet.Name, prop.Name) - propPrefix := propName + "=" - for _, userProp := range e.Integration.Spec.Configuration { - if strings.HasPrefix(userProp.Value, propPrefix) { - userDefined = true - break - } - } - if !userDefined { - e.ApplicationProperties[propName] = prop.Default - } - } - } - } - } - return nil -} - func (t *kameletsTrait) addKameletAsSource(e *Environment, kamelet *v1.Kamelet) error { + fmt.Println("addKameletAsSource", kamelet) sources := make([]v1.SourceSpec, 0) if kamelet.Spec.Template != nil { diff --git a/pkg/trait/kamelets_test.go b/pkg/trait/kamelets_test.go index a91bc9c71c..142fa6fdaa 100644 --- a/pkg/trait/kamelets_test.go +++ b/pkg/trait/kamelets_test.go @@ -98,7 +98,6 @@ func TestKameletLookup(t *testing.T) { "camel:log", }, }, - Status: v1.KameletStatus{Phase: v1.KameletPhaseReady}, }) enabled, err := trait.Configure(environment) require.NoError(t, err) @@ -147,7 +146,6 @@ func TestKameletSecondarySourcesLookup(t *testing.T) { }, }, }, - Status: v1.KameletStatus{Phase: v1.KameletPhaseReady}, }) enabled, err := trait.Configure(environment) require.NoError(t, err) @@ -198,7 +196,6 @@ func TestNonYAMLKameletLookup(t *testing.T) { }, }, }, - Status: v1.KameletStatus{Phase: v1.KameletPhaseReady}, }) enabled, err := trait.Configure(environment) require.NoError(t, err) @@ -250,7 +247,6 @@ func TestMultipleKamelets(t *testing.T) { "camel:xxx", }, }, - Status: v1.KameletStatus{Phase: v1.KameletPhaseReady}, }, &v1.Kamelet{ ObjectMeta: metav1.ObjectMeta{ Namespace: "test", @@ -274,7 +270,6 @@ func TestMultipleKamelets(t *testing.T) { "camel:tbd", }, }, - Status: v1.KameletStatus{Phase: v1.KameletPhaseReady}, }) enabled, err := trait.Configure(environment) require.NoError(t, err) @@ -336,7 +331,6 @@ func TestKameletConfigLookup(t *testing.T) { "camel:log", }, }, - Status: v1.KameletStatus{Phase: v1.KameletPhaseReady}, }, &corev1.Secret{ ObjectMeta: metav1.ObjectMeta{ Namespace: "test", @@ -399,7 +393,6 @@ func TestKameletNamedConfigLookup(t *testing.T) { "camel:log", }, }, - Status: v1.KameletStatus{Phase: v1.KameletPhaseReady}, }, &corev1.Secret{ ObjectMeta: metav1.ObjectMeta{ Namespace: "test", @@ -465,7 +458,6 @@ func TestKameletConditionFalse(t *testing.T) { }, }), }, - Status: v1.KameletStatus{Phase: v1.KameletPhaseReady}, }) enabled, err := trait.Configure(environment) @@ -504,7 +496,6 @@ func TestKameletConditionTrue(t *testing.T) { }, }), }, - Status: v1.KameletStatus{Phase: v1.KameletPhaseReady}, }, &v1.Kamelet{ ObjectMeta: metav1.ObjectMeta{ @@ -518,7 +509,6 @@ func TestKameletConditionTrue(t *testing.T) { }, }), }, - Status: v1.KameletStatus{Phase: v1.KameletPhaseReady}, }) enabled, err := trait.Configure(environment)