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() {