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

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


The following commit(s) were added to refs/heads/master by this push:
     new 44aa75d  chore(refactor): move JAVA_CLASSPATH configuration to 
classpath trait
44aa75d is described below

commit 44aa75de23939380a74ba7c081c74b7b6709f316
Author: lburgazzoli <lburgazz...@gmail.com>
AuthorDate: Tue Mar 12 13:02:09 2019 +0100

    chore(refactor): move JAVA_CLASSPATH configuration to classpath trait
---
 pkg/trait/classpath.go       | 42 +++++++++++++++++++++++++++++++++++++++++-
 pkg/trait/deployment.go      | 17 -----------------
 pkg/trait/knative_service.go | 15 ---------------
 pkg/trait/trait_catalog.go   |  6 +++---
 4 files changed, 44 insertions(+), 36 deletions(-)

diff --git a/pkg/trait/classpath.go b/pkg/trait/classpath.go
index fd621b9..697e23b 100644
--- a/pkg/trait/classpath.go
+++ b/pkg/trait/classpath.go
@@ -20,12 +20,19 @@ package trait
 import (
        "fmt"
 
-       "github.com/scylladb/go-set/strset"
+       "sort"
+       "strings"
 
        "github.com/apache/camel-k/pkg/apis/camel/v1alpha1"
+       "github.com/apache/camel-k/pkg/util/envvar"
+
+       "github.com/scylladb/go-set/strset"
 
        "github.com/pkg/errors"
 
+       serving "github.com/knative/serving/pkg/apis/serving/v1alpha1"
+       appsv1 "k8s.io/api/apps/v1"
+       corev1 "k8s.io/api/core/v1"
        k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
 )
 
@@ -89,5 +96,38 @@ func (t *classpathTrait) Apply(e *Environment) error {
                e.Classpath.Add("/deployments/dependencies/*")
        }
 
+       if e.Resources != nil {
+               //
+               // Add mounted volumes as resources
+               //
+               e.Resources.VisitDeployment(func(deployment *appsv1.Deployment) 
{
+                       for i := 0; i < 
len(deployment.Spec.Template.Spec.Containers); i++ {
+                               cp := e.Classpath.Copy()
+
+                               for _, m := range 
deployment.Spec.Template.Spec.Containers[i].VolumeMounts {
+                                       cp.Add(m.MountPath)
+                               }
+
+                               t.setJavaClasspath(cp, 
&deployment.Spec.Template.Spec.Containers[i].Env)
+                       }
+               })
+               e.Resources.VisitKnativeService(func(service *serving.Service) {
+                       for _, m := range 
service.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.VolumeMounts
 {
+                               e.Classpath.Add(m.MountPath)
+                       }
+
+                       t.setJavaClasspath(e.Classpath, 
&service.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.Env)
+               })
+       }
+
        return nil
 }
+
+func (t *classpathTrait) setJavaClasspath(cp *strset.Set, env 
*[]corev1.EnvVar) {
+       items := cp.List()
+
+       // keep classpath sorted
+       sort.Strings(items)
+
+       envvar.SetVal(env, "JAVA_CLASSPATH", strings.Join(items, ":"))
+}
diff --git a/pkg/trait/deployment.go b/pkg/trait/deployment.go
index 6b580a9..dfcd9a7 100644
--- a/pkg/trait/deployment.go
+++ b/pkg/trait/deployment.go
@@ -18,7 +18,6 @@ limitations under the License.
 package trait
 
 import (
-       "sort"
        "strings"
 
        "github.com/apache/camel-k/pkg/apis/camel/v1alpha1"
@@ -180,21 +179,5 @@ func (t *deploymentTrait) getDeploymentFor(e *Environment) 
*appsv1.Deployment {
                &deployment.Spec.Template.Spec.Containers[0].VolumeMounts,
        )
 
-       //
-       // Add mounted volumes as resources
-       //
-       for _, c := range deployment.Spec.Template.Spec.Containers {
-               for _, m := range c.VolumeMounts {
-                       e.Classpath.Add(m.MountPath)
-               }
-       }
-
-       cp := e.Classpath.List()
-
-       // keep classpath sorted
-       sort.Strings(cp)
-
-       envvar.SetVal(&deployment.Spec.Template.Spec.Containers[0].Env, 
"JAVA_CLASSPATH", strings.Join(cp, ":"))
-
        return &deployment
 }
diff --git a/pkg/trait/knative_service.go b/pkg/trait/knative_service.go
index 4055c53..edb64ff 100644
--- a/pkg/trait/knative_service.go
+++ b/pkg/trait/knative_service.go
@@ -18,9 +18,7 @@ limitations under the License.
 package trait
 
 import (
-       "sort"
        "strconv"
-       "strings"
 
        "github.com/apache/camel-k/pkg/util/kubernetes"
 
@@ -214,18 +212,5 @@ func (t *knativeServiceTrait) getServiceFor(e 
*Environment) (*serving.Service, e
                
envvar.SetVar(&svc.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.Env,
 envVar)
        }
 
-       // Add mounted volumes as resources
-       for _, m := range 
svc.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.VolumeMounts {
-               e.Classpath.Add(m.MountPath)
-       }
-
-       cp := e.Classpath.List()
-
-       // keep classpath sorted
-       sort.Strings(cp)
-
-       // set the classpath
-       envvar.SetVal(environment, "JAVA_CLASSPATH", strings.Join(cp, ":"))
-
        return &svc, nil
 }
diff --git a/pkg/trait/trait_catalog.go b/pkg/trait/trait_catalog.go
index b2e2e60..3cb1d1f 100644
--- a/pkg/trait/trait_catalog.go
+++ b/pkg/trait/trait_catalog.go
@@ -135,12 +135,12 @@ func (c *Catalog) traitsFor(environment *Environment) 
[]Trait {
                        c.tImages,
                        c.tBuilder,
                        c.tEnvironment,
-                       c.tClasspath,
                        c.tSpringBoot,
                        c.tJolokia,
                        c.tPrometheus,
                        c.tDeployer,
                        c.tDeployment,
+                       c.tClasspath,
                        c.tProbes,
                        c.tService,
                        c.tRoute,
@@ -156,12 +156,12 @@ func (c *Catalog) traitsFor(environment *Environment) 
[]Trait {
                        c.tImages,
                        c.tBuilder,
                        c.tEnvironment,
-                       c.tClasspath,
                        c.tSpringBoot,
                        c.tJolokia,
                        c.tPrometheus,
                        c.tDeployer,
                        c.tDeployment,
+                       c.tClasspath,
                        c.tProbes,
                        c.tService,
                        c.tIngress,
@@ -178,11 +178,11 @@ func (c *Catalog) traitsFor(environment *Environment) 
[]Trait {
                        c.tImages,
                        c.tBuilder,
                        c.tEnvironment,
-                       c.tClasspath,
                        c.tSpringBoot,
                        c.tDeployer,
                        c.tDeployment,
                        c.tKnativeService,
+                       c.tClasspath,
                        c.tProbes,
                        c.tIstio,
                        c.tOwner,

Reply via email to