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