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

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

commit d5b004821ad0ac37f3dc0ddaee86447feae16dea
Author: nferraro <ni.ferr...@gmail.com>
AuthorDate: Fri Oct 11 13:28:55 2019 +0200

    fix #1005: allow to customize loader and add default dependencies for 
knative-source loader
---
 pkg/apis/camel/v1alpha1/integration_types.go |  3 ++
 pkg/trait/dependencies.go                    |  6 ++++
 pkg/trait/dependencies_test.go               | 44 ++++++++++++++++++++++++++++
 pkg/trait/trait_types.go                     |  4 +++
 4 files changed, 57 insertions(+)

diff --git a/pkg/apis/camel/v1alpha1/integration_types.go 
b/pkg/apis/camel/v1alpha1/integration_types.go
index 2b0ba8e..3d8d488 100644
--- a/pkg/apis/camel/v1alpha1/integration_types.go
+++ b/pkg/apis/camel/v1alpha1/integration_types.go
@@ -107,6 +107,9 @@ const (
 type SourceSpec struct {
        DataSpec
        Language Language `json:"language,omitempty"`
+       // Loader is an optional id of the org.apache.camel.k.RoutesLoader that 
will
+       // interpret this source at runtime
+       Loader   string   `json:"loader,omitempty"`
 }
 
 // Language --
diff --git a/pkg/trait/dependencies.go b/pkg/trait/dependencies.go
index 7a2b94b..9659577 100644
--- a/pkg/trait/dependencies.go
+++ b/pkg/trait/dependencies.go
@@ -19,6 +19,7 @@ package trait
 
 import (
        "sort"
+       "strings"
 
        "github.com/apache/camel-k/pkg/apis/camel/v1alpha1"
        "github.com/apache/camel-k/pkg/metadata"
@@ -70,6 +71,11 @@ func (t *dependenciesTrait) Apply(e *Environment) error {
                        util.StringSliceUniqueAdd(&dependencies, 
"mvn:org.apache.camel.k/camel-k-loader-java")
                }
 
+               if strings.HasPrefix(s.Loader, "knative-source") {
+                       util.StringSliceUniqueAdd(&dependencies, 
"mvn:org.apache.camel.k/camel-k-loader-knative")
+                       util.StringSliceUniqueAdd(&dependencies, 
"mvn:org.apache.camel.k/camel-k-runtime-knative")
+               }
+
                // main required by default
                util.StringSliceUniqueAdd(&dependencies, 
"mvn:org.apache.camel.k/camel-k-runtime-main")
 
diff --git a/pkg/trait/dependencies_test.go b/pkg/trait/dependencies_test.go
index fd9ae24..d92866a 100644
--- a/pkg/trait/dependencies_test.go
+++ b/pkg/trait/dependencies_test.go
@@ -188,3 +188,47 @@ func TestIntegrationAutoGeneratedDeps(t *testing.T) {
                e.Integration.Status.Dependencies,
        )
 }
+
+func TestIntegrationCustomLoader(t *testing.T) {
+       catalog, err := test.DefaultCatalog()
+       assert.Nil(t, err)
+
+       e := &Environment{
+               CamelCatalog: catalog,
+               Integration: &v1alpha1.Integration{
+                       Spec: v1alpha1.IntegrationSpec{
+                               Sources: []v1alpha1.SourceSpec{
+                                       {
+                                               DataSpec: v1alpha1.DataSpec{
+                                                       Name:    "flow.yaml",
+                                                       Content: "- from:\n    
uri: direct:foo\n    steps:\n    - to: log:bar",
+                                               },
+                                               Language: v1alpha1.LanguageYaml,
+                                               Loader: "knative-source-yaml",
+                                       },
+                               },
+                       },
+                       Status: v1alpha1.IntegrationStatus{
+                               Phase: v1alpha1.IntegrationPhaseInitialization,
+                       },
+               },
+       }
+
+       trait := newDependenciesTrait()
+       enabled, err := trait.Configure(e)
+       assert.Nil(t, err)
+       assert.True(t, enabled)
+
+       err = trait.Apply(e)
+       assert.Nil(t, err)
+       assert.ElementsMatch(t,
+               []string{
+                       "camel:direct",
+                       "camel:log",
+                       "mvn:org.apache.camel.k/camel-k-loader-knative",
+                       "mvn:org.apache.camel.k/camel-k-loader-yaml",
+                       "mvn:org.apache.camel.k/camel-k-runtime-knative",
+                       "mvn:org.apache.camel.k/camel-k-runtime-main"},
+               e.Integration.Status.Dependencies,
+       )
+}
diff --git a/pkg/trait/trait_types.go b/pkg/trait/trait_types.go
index fabf049..f1cb187 100644
--- a/pkg/trait/trait_types.go
+++ b/pkg/trait/trait_types.go
@@ -325,6 +325,7 @@ func (e *Environment) ComputeConfigMaps() []runtime.Object {
                                },
                                Annotations: map[string]string{
                                        "camel.apache.org/source.language":    
string(s.InferLanguage()),
+                                       "camel.apache.org/source.loader":      
s.Loader,
                                        "camel.apache.org/source.name":        
s.Name,
                                        "camel.apache.org/source.compression": 
strconv.FormatBool(s.Compression),
                                },
@@ -394,6 +395,9 @@ func (e *Environment) ComputeSourcesURI() []string {
                if s.InferLanguage() != "" {
                        params = append(params, 
"language="+string(s.InferLanguage()))
                }
+               if s.Loader != "" {
+                       params = append(params, "loader="+s.Loader)
+               }
                if s.Compression {
                        params = append(params, "compression=true")
                }

Reply via email to