This is an automated email from the ASF dual-hosted git repository. astefanutti pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit 50edc77a320759eff4ca2440b15e4bf1fad40d13 Author: Antonin Stefanutti <[email protected]> AuthorDate: Tue Aug 31 12:48:38 2021 +0200 chore(native): Polish native checks logic --- pkg/trait/jvm.go | 3 ++- pkg/trait/quarkus.go | 21 +++++++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/pkg/trait/jvm.go b/pkg/trait/jvm.go index 8d17bcc..60e853b 100644 --- a/pkg/trait/jvm.go +++ b/pkg/trait/jvm.go @@ -77,7 +77,8 @@ func (t *jvmTrait) Configure(e *Environment) (bool, error) { } if trait := e.Catalog.GetTrait(quarkusTraitId); trait != nil { - if quarkus := trait.(*quarkusTrait); IsNilOrTrue(quarkus.Enabled) && quarkus.hasNativePackageType(e) { + // The JVM trait must be disabled in case the current IntegrationKit corresponds to a native build + if quarkus := trait.(*quarkusTrait); IsNilOrTrue(quarkus.Enabled) && quarkus.isNativeIntegration(e) { return false, nil } } diff --git a/pkg/trait/quarkus.go b/pkg/trait/quarkus.go index 629ba82..49a180e 100644 --- a/pkg/trait/quarkus.go +++ b/pkg/trait/quarkus.go @@ -186,7 +186,9 @@ func (t *quarkusTrait) Apply(e *Environment) error { steps = append(steps, builder.Quarkus.CommonSteps...) - if t.hasNativePackageType(e) { + if native, err := t.isNativeKit(e); err != nil { + return err + } else if native { build.Maven.Properties["quarkus.package.type"] = string(nativePackageType) steps = append(steps, builder.Image.NativeImageContext) // Spectrum does not rely on Dockerfile to assemble the image @@ -210,7 +212,7 @@ func (t *quarkusTrait) Apply(e *Environment) error { build.Steps = builder.StepIDsFor(steps...) case v1.IntegrationKitPhaseReady: - if e.IntegrationInPhase(v1.IntegrationPhaseDeploying, v1.IntegrationPhaseRunning) && t.hasNativePackageType(e) { + if e.IntegrationInPhase(v1.IntegrationPhaseDeploying, v1.IntegrationPhaseRunning) && t.isNativeIntegration(e) { container := e.getIntegrationContainer() if container == nil { return fmt.Errorf("unable to find integration container: %s", e.Integration.Name) @@ -263,19 +265,22 @@ func (t *quarkusTrait) getKitTraits(e *Environment) map[string]v1.TraitSpec { return traits } -func (t *quarkusTrait) hasNativePackageType(e *Environment) bool { +func (t *quarkusTrait) isNativeKit(e *Environment) (bool, error) { switch types := t.PackageTypes; len(types) { case 0: - return false + return false, nil case 1: - return types[0] == nativePackageType + return types[0] == nativePackageType, nil default: - // The Integration has more than one package types. - // Let's rely on the current IntegrationKit to resolve it. - return e.IntegrationKit.Labels[v1.IntegrationKitLayoutLabel] == v1.IntegrationKitLayoutNative + return false, fmt.Errorf("kit %q has more than one package type", e.IntegrationKit.Name) } } +func (t *quarkusTrait) isNativeIntegration(e *Environment) bool { + // The current IntegrationKit determines the Integration runtime type + return e.IntegrationKit.Labels[v1.IntegrationKitLayoutLabel] == v1.IntegrationKitLayoutNative +} + func getBuilderTask(tasks []v1.Task) *v1.BuilderTask { for i, task := range tasks { if task.Builder != nil {
