This is an automated email from the ASF dual-hosted git repository.

astefanutti pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit d9380d0a65b534542b2dc2d0bb942b0bcffb3157
Author: Antonin Stefanutti <[email protected]>
AuthorDate: Wed Oct 23 12:42:01 2019 +0200

    feat(quarkus): Start shaping a runtime trait interface
---
 pkg/trait/camel.go        | 40 ++++++++++++++++++++++------------------
 pkg/trait/dependencies.go | 16 ++++++++++------
 pkg/trait/quarkus.go      | 15 +++++++++------
 3 files changed, 41 insertions(+), 30 deletions(-)

diff --git a/pkg/trait/camel.go b/pkg/trait/camel.go
index c7c8a61..66f7024 100644
--- a/pkg/trait/camel.go
+++ b/pkg/trait/camel.go
@@ -70,21 +70,22 @@ func (t *camelTrait) Apply(e *Environment) error {
        }
 
        if e.CamelCatalog == nil {
-               var catalog *camel.RuntimeCatalog
-               var err error
                quarkus := e.Catalog.GetTrait("quarkus").(*quarkusTrait)
                if quarkus.isEnabled() {
-                       catalog, err = quarkus.loadOrCreateCatalog(e, cv, rv)
+                       err := quarkus.loadOrCreateCatalog(e, cv, rv)
+                       if err != nil {
+                               return err
+                       }
                } else {
-                       catalog, err = t.loadOrCreateCatalog(e, cv, rv)
-               }
-               if err != nil {
-                       return err
-               } else if catalog == nil {
-                       return fmt.Errorf("unable to find catalog for: %s", cv)
+                       err := t.loadOrCreateCatalog(e, cv, rv)
+                       if err != nil {
+                               return err
+                       }
                }
+       }
 
-               e.CamelCatalog = catalog
+       if e.CamelCatalog == nil {
+               return fmt.Errorf("unable to find catalog for: %s", cv)
        }
 
        e.RuntimeVersion = rv
@@ -103,15 +104,15 @@ func (t *camelTrait) Apply(e *Environment) error {
        return nil
 }
 
-func (t *camelTrait) loadOrCreateCatalog(e *Environment, camelVersion string, 
runtimeVersion string) (*camel.RuntimeCatalog, error) {
+func (t *camelTrait) loadOrCreateCatalog(e *Environment, camelVersion string, 
runtimeVersion string) error {
        ns := e.DetermineNamespace()
        if ns == "" {
-               return nil, errors.New("unable to determine namespace")
+               return errors.New("unable to determine namespace")
        }
 
        c, err := camel.LoadCatalog(e.C, e.Client, ns, camelVersion, 
runtimeVersion, nil)
        if err != nil {
-               return nil, err
+               return err
        }
 
        if c == nil {
@@ -120,17 +121,17 @@ func (t *camelTrait) loadOrCreateCatalog(e *Environment, 
camelVersion string, ru
                // semver constraints
                cvHasFixedVersion, err := 
regexp.MatchString(`^(\d+)\.(\d+)\.([\w-\.]+)$`, camelVersion)
                if err != nil {
-                       return nil, err
+                       return err
                }
                rvHasFixedVersion, err := 
regexp.MatchString(`^(\d+)\.(\d+)\.([\w-\.]+)$`, runtimeVersion)
                if err != nil {
-                       return nil, err
+                       return err
                }
 
                if cvHasFixedVersion && rvHasFixedVersion {
                        c, err = t.generateCatalog(e, camelVersion, 
runtimeVersion)
                        if err != nil {
-                               return nil, err
+                               return err
                        }
 
                        // sanitize catalog name
@@ -146,11 +147,14 @@ func (t *camelTrait) loadOrCreateCatalog(e *Environment, 
camelVersion string, ru
 
                        err = e.Client.Create(e.C, &cx)
                        if err != nil && !k8serrors.IsAlreadyExists(err) {
-                               return nil, err
+                               return err
                        }
                }
        }
-       return c, nil
+
+       e.CamelCatalog = c
+
+       return nil
 }
 
 func (t *camelTrait) generateCatalog(e *Environment, camelVersion string, 
runtimeVersion string) (*camel.RuntimeCatalog, error) {
diff --git a/pkg/trait/dependencies.go b/pkg/trait/dependencies.go
index 69fb824..d143fac 100644
--- a/pkg/trait/dependencies.go
+++ b/pkg/trait/dependencies.go
@@ -45,30 +45,34 @@ func (t *dependenciesTrait) Configure(e *Environment) 
(bool, error) {
 }
 
 func (t *dependenciesTrait) Apply(e *Environment) error {
-       dependencies := make([]string, 0)
        if e.Integration.Spec.Dependencies != nil {
+               dependencies := make([]string, 0)
                for _, dep := range e.Integration.Spec.Dependencies {
                        util.StringSliceUniqueAdd(&dependencies, dep)
+                       e.Integration.Status.Dependencies = dependencies
                }
+       } else {
+               e.Integration.Status.Dependencies = make([]string, 0)
        }
 
        quarkus := e.Catalog.GetTrait("quarkus").(*quarkusTrait)
        if quarkus.isEnabled() {
-               err := quarkus.addRuntimeDependencies(e, &dependencies)
+               err := quarkus.addRuntimeDependencies(e)
                if err != nil {
                        return err
                }
        } else {
-               addDefaultRuntimeDependencies(e, &dependencies)
+               addDefaultRuntimeDependencies(e)
        }
 
        // sort the dependencies to get always the same list if they don't 
change
-       sort.Strings(dependencies)
-       e.Integration.Status.Dependencies = dependencies
+       sort.Strings(e.Integration.Status.Dependencies)
        return nil
 }
 
-func addDefaultRuntimeDependencies(e *Environment, dependencies *[]string) {
+func addDefaultRuntimeDependencies(e *Environment) {
+       dependencies := &e.Integration.Status.Dependencies
+
        for _, s := range e.Integration.Sources() {
                meta := metadata.Extract(e.CamelCatalog, s)
 
diff --git a/pkg/trait/quarkus.go b/pkg/trait/quarkus.go
index 37085ed..5139ce7 100644
--- a/pkg/trait/quarkus.go
+++ b/pkg/trait/quarkus.go
@@ -54,10 +54,10 @@ func (t *quarkusTrait) Apply(e *Environment) error {
        return nil
 }
 
-func (t *quarkusTrait) loadOrCreateCatalog(e *Environment, camelVersion 
string, runtimeVersion string) (*camel.RuntimeCatalog, error) {
+func (t *quarkusTrait) loadOrCreateCatalog(e *Environment, camelVersion 
string, runtimeVersion string) error {
        ns := e.DetermineNamespace()
        if ns == "" {
-               return nil, errors.New("unable to determine namespace")
+               return errors.New("unable to determine namespace")
        }
 
        c, err := camel.LoadCatalog(e.C, e.Client, ns, camelVersion, 
runtimeVersion, v1alpha1.QuarkusRuntimeProvider{
@@ -66,12 +66,14 @@ func (t *quarkusTrait) loadOrCreateCatalog(e *Environment, 
camelVersion string,
                QuarkusVersion:      "0.21.2",
        })
        if err != nil {
-               return nil, err
+               return err
        }
 
+       e.CamelCatalog = c
+
        // TODO: generate a catalog if nil
 
-       return c, nil
+       return nil
 }
 
 func (t *quarkusTrait) addBuildSteps(e *Environment) {
@@ -82,7 +84,9 @@ func (t *quarkusTrait) addClasspath(e *Environment) {
        // No-op as we rely on the Quarkus runner
 }
 
-func (t *quarkusTrait) addRuntimeDependencies(e *Environment, dependencies 
*[]string) error {
+func (t *quarkusTrait) addRuntimeDependencies(e *Environment) error {
+       dependencies := &e.Integration.Status.Dependencies
+
        for _, s := range e.Integration.Sources() {
                meta := metadata.Extract(e.CamelCatalog, s)
 
@@ -102,7 +106,6 @@ func (t *quarkusTrait) addRuntimeDependencies(e 
*Environment, dependencies *[]st
                        addRuntimeDependency("camel-k-quarkus-knative", 
dependencies)
                }
 
-               // main required by default
                addRuntimeDependency("camel-k-runtime-quarkus", dependencies)
 
                for _, d := range meta.Dependencies.List() {

Reply via email to