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 3b8ae4a22a6dbcca65c2bfd4f580020990c02b4b Author: Pasquale Congiusti <[email protected]> AuthorDate: Wed Apr 21 10:15:17 2021 +0200 refactor(trait): error handler kamelet Just look for a possible error handler kamelet, it it was configured --- pkg/controller/kameletbinding/common.go | 22 +++++++--- pkg/trait/kamelets.go | 78 ++++++++++++++------------------- 2 files changed, 48 insertions(+), 52 deletions(-) diff --git a/pkg/controller/kameletbinding/common.go b/pkg/controller/kameletbinding/common.go index 13e13fe..06b5b76 100644 --- a/pkg/controller/kameletbinding/common.go +++ b/pkg/controller/kameletbinding/common.go @@ -80,13 +80,18 @@ func createIntegrationFor(ctx context.Context, c client.Client, kameletbinding * return nil, errors.Wrap(err, "could not determine sink URI") } var errorHandler *bindings.Binding - if kameletbinding.Spec.ErrorHandler.Endpoint.Ref != nil || kameletbinding.Spec.ErrorHandler.Endpoint.URI != nil { - errorHandler, err = bindings.Translate(bindingContext, bindings.EndpointContext{Type: v1alpha1.EndpointTypeErrorHandler}, kameletbinding.Spec.ErrorHandler.Endpoint) - if err != nil { - return nil, errors.Wrap(err, "could not determine error handler URI") + if kameletbinding.Spec.ErrorHandler.Type != "" { + errorHandlerURI := "" + if kameletbinding.Spec.ErrorHandler.Endpoint.Ref != nil || kameletbinding.Spec.ErrorHandler.Endpoint.URI != nil { + errorHandler, err = bindings.Translate(bindingContext, bindings.EndpointContext{Type: v1alpha1.EndpointTypeErrorHandler}, kameletbinding.Spec.ErrorHandler.Endpoint) + if err != nil { + return nil, errors.Wrap(err, "could not determine error handler URI") + } + + errorHandlerURI = errorHandler.URI } - err = setIntegrationErrorHandler(&it.Spec, errorHandler, kameletbinding.Spec.ErrorHandler) + err = setIntegrationErrorHandler(&it.Spec, errorHandlerURI, kameletbinding.Spec.ErrorHandler) if err != nil { return nil, errors.Wrap(err, "could not set integration error handler") } @@ -159,12 +164,15 @@ func createIntegrationFor(ctx context.Context, c client.Client, kameletbinding * return &it, nil } -func setIntegrationErrorHandler(it *v1.IntegrationSpec, errorHandler *bindings.Binding, errorHandlerSpec v1alpha1.ErrorHandler) error { +func setIntegrationErrorHandler(it *v1.IntegrationSpec, errorHandlerURI string, errorHandlerSpec v1alpha1.ErrorHandler) error { it.ErrorHandler = v1.ErrorHandlerSpec{ - URI: errorHandler.URI, Type: string(errorHandlerSpec.Type), } + if errorHandlerURI != "" { + it.ErrorHandler.URI = errorHandlerURI + } + return nil } diff --git a/pkg/trait/kamelets.go b/pkg/trait/kamelets.go index 190c17e..57ec4b5 100644 --- a/pkg/trait/kamelets.go +++ b/pkg/trait/kamelets.go @@ -105,7 +105,6 @@ func (t *kameletsTrait) Configure(e *Environment) (bool, error) { util.StringSliceUniqueConcat(&kamelets, extractKamelets(meta.ToURIs)) return true }) - sort.Strings(kamelets) } // Check if a Kamelet is configured as default error handler if e.Integration.Spec.ErrorHandler.URI != "" { @@ -114,21 +113,24 @@ func (t *kameletsTrait) Configure(e *Environment) (bool, error) { } } - t.List = strings.Join(kamelets, ",") + if len(kamelets) > 0 { + sort.Strings(kamelets) + t.List = strings.Join(kamelets, ",") + } } - return t.declaredKamelets(), nil -} - -func (t *kameletsTrait) declaredKamelets() bool { - return len(t.getKameletKeys()) > 0 + return len(t.getKameletKeys()) > 0, nil } func (t *kameletsTrait) Apply(e *Environment) error { <<<<<<< HEAD +<<<<<<< HEAD if e.IntegrationInPhase(v1.IntegrationPhaseInitialization, v1.IntegrationPhaseRunning) { ======= +======= + +>>>>>>> refactor(trait): error handler kamelet if e.IntegrationInPhase(v1.IntegrationPhaseInitialization) { >>>>>>> refactor(trait): integration error handler spec if err := t.addKamelets(e); err != nil { @@ -146,52 +148,41 @@ func (t *kameletsTrait) Apply(e *Environment) error { } func (t *kameletsTrait) addKamelets(e *Environment) error { - if t.declaredKamelets() { + kameletKeys := t.getKameletKeys() + if len(kameletKeys) > 0 { repo, err := repository.NewForPlatform(e.C, e.Client, e.Platform, e.Integration.Namespace, platform.GetOperatorNamespace()) if err != nil { return err } - - // Declared kamelets for _, k := range t.getKameletKeys() { - err := initializeKamelet(repo, e, k, t, v1.SourceTypeTemplate) + kamelet, err := repo.Get(e.C, k) if err != nil { return err } - } - - // resort dependencies - sort.Strings(e.Integration.Status.Dependencies) - } - return nil -} + if kamelet == nil { + return fmt.Errorf("kamelet %s not found in any of the defined repositories: %s", k, repo.String()) + } -func initializeKamelet(repo repository.KameletRepository, e *Environment, k string, t *kameletsTrait, sourceType v1.SourceType) error { - kamelet, err := repo.Get(e.C, k) - if err != nil { - return err - } - if kamelet == nil { - return fmt.Errorf("kamelet %s not found in any of the defined repositories: %s", k, repo.String()) - } + // Initialize remote kamelets + kamelet, err = kameletutils.Initialize(kamelet) + if err != nil { + return err + } - // Initialize remote kamelets - kamelet, err = kameletutils.Initialize(kamelet) - if err != nil { - return err - } + if kamelet.Status.Phase != v1alpha1.KameletPhaseReady { + return fmt.Errorf("kamelet %q is not %s: %s", k, v1alpha1.KameletPhaseReady, kamelet.Status.Phase) + } - if kamelet.Status.Phase != v1alpha1.KameletPhaseReady { - return fmt.Errorf("kamelet %q is not %s: %s", k, v1alpha1.KameletPhaseReady, kamelet.Status.Phase) - } + if err := t.addKameletAsSource(e, kamelet); err != nil { + return err + } - if err := t.addKameletAsSource(e, kamelet, sourceType); err != nil { - return err + // Adding dependencies from Kamelets + util.StringSliceUniqueConcat(&e.Integration.Status.Dependencies, kamelet.Spec.Dependencies) + } + // resort dependencies + sort.Strings(e.Integration.Status.Dependencies) } - - // Adding dependencies from Kamelets - util.StringSliceUniqueConcat(&e.Integration.Status.Dependencies, kamelet.Spec.Dependencies) - return nil } @@ -239,7 +230,7 @@ func (t *kameletsTrait) configureApplicationProperties(e *Environment) error { return nil } -func (t *kameletsTrait) addKameletAsSource(e *Environment, kamelet *v1alpha1.Kamelet, sourceType v1.SourceType) error { +func (t *kameletsTrait) addKameletAsSource(e *Environment, kamelet *v1alpha1.Kamelet) error { sources := make([]v1.SourceSpec, 0) if kamelet.Spec.Flow != nil { @@ -260,7 +251,7 @@ func (t *kameletsTrait) addKameletAsSource(e *Environment, kamelet *v1alpha1.Kam Content: string(flowData), }, Language: v1.LanguageYaml, - Type: sourceType, + Type: v1.SourceTypeTemplate, PropertyNames: propertyNames, } flowSource, err = integrationSourceFromKameletSource(e, kamelet, flowSource, fmt.Sprintf("%s-kamelet-%s-flow", e.Integration.Name, kamelet.Name)) @@ -271,9 +262,6 @@ func (t *kameletsTrait) addKameletAsSource(e *Environment, kamelet *v1alpha1.Kam } for idx, s := range kamelet.Spec.Sources { - if sourceType == v1.SourceTypeErrorHandler { - s.Type = sourceType - } intSource, err := integrationSourceFromKameletSource(e, kamelet, s, fmt.Sprintf("%s-kamelet-%s-%03d", e.Integration.Name, kamelet.Name, idx)) if err != nil { return err
