You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by as...@apache.org on 2019/11/04 16:10:37 UTC

[camel-k] 13/38: feat(quarkus): Start shaping a runtime trait interface

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 <an...@stefanutti.fr>
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() {