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


The following commit(s) were added to refs/heads/master by this push:
     new 4ac6992  Route trait does not work if route.auto is set to false #767
4ac6992 is described below

commit 4ac699206c670e597f3453ae000e213fc56faf2b
Author: lburgazzoli <lburgazz...@gmail.com>
AuthorDate: Thu Jun 27 18:22:16 2019 +0200

    Route trait does not work if route.auto is set to false #767
---
 pkg/trait/route.go      | 22 ++++++--------
 pkg/trait/route_test.go | 77 ++++++++++++++++++++++++++++++++++---------------
 2 files changed, 63 insertions(+), 36 deletions(-)

diff --git a/pkg/trait/route.go b/pkg/trait/route.go
index ab7c5f4..2d53872 100644
--- a/pkg/trait/route.go
+++ b/pkg/trait/route.go
@@ -18,7 +18,6 @@ limitations under the License.
 package trait
 
 import (
-       "errors"
        "reflect"
 
        "github.com/apache/camel-k/pkg/apis/camel/v1alpha1"
@@ -31,7 +30,6 @@ import (
 
 type routeTrait struct {
        BaseTrait                        `property:",squash"`
-       Auto                             *bool  `property:"auto"`
        Host                             string `property:"host"`
        TLSTermination                   string `property:"tls-termination"`
        TLSCertificate                   string `property:"tls-certificate"`
@@ -39,7 +37,8 @@ type routeTrait struct {
        TLSCACertificate                 string `property:"tls-ca-certificate"`
        TLSDestinationCACertificate      string 
`property:"tls-destination-ca-certificate"`
        TLSInsecureEdgeTerminationPolicy string 
`property:"tls-insecure-edge-termination-policy"`
-       service                          *corev1.Service
+
+       service *corev1.Service
 }
 
 func newRouteTrait() *routeTrait {
@@ -57,15 +56,9 @@ func (t *routeTrait) Configure(e *Environment) (bool, error) 
{
                return false, nil
        }
 
-       if t.Auto == nil || *t.Auto {
-               t.service = t.getTargetService(e)
-               if t.service == nil {
-                       return false, nil
-               }
-       }
-
+       t.service = t.getTargetService(e)
        if t.service == nil {
-               return false, errors.New("cannot apply route trait: no target 
service")
+               return false, nil
        }
 
        return true, nil
@@ -80,7 +73,9 @@ func (t *routeTrait) Apply(e *Environment) error {
        return nil
 }
 
-func (t *routeTrait) getTargetService(e *Environment) (service 
*corev1.Service) {
+func (t *routeTrait) getTargetService(e *Environment) *corev1.Service {
+       var service *corev1.Service
+
        e.Resources.VisitService(func(s *corev1.Service) {
                if s.ObjectMeta.Labels != nil {
                        if s.ObjectMeta.Labels["camel.apache.org/integration"] 
== e.Integration.Name &&
@@ -92,7 +87,8 @@ func (t *routeTrait) getTargetService(e *Environment) 
(service *corev1.Service)
                        }
                }
        })
-       return
+
+       return service
 }
 
 func (t *routeTrait) getRouteFor(service *corev1.Service) *routev1.Route {
diff --git a/pkg/trait/route_test.go b/pkg/trait/route_test.go
index ca45334..48310fd 100644
--- a/pkg/trait/route_test.go
+++ b/pkg/trait/route_test.go
@@ -21,6 +21,8 @@ import (
        "context"
        "testing"
 
+       "github.com/rs/xid"
+
        "github.com/scylladb/go-set/strset"
 
        "github.com/apache/camel-k/pkg/apis/camel/v1alpha1"
@@ -34,7 +36,7 @@ import (
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 )
 
-func createTestRouteEnvironment(t *testing.T) *Environment {
+func createTestRouteEnvironment(t *testing.T, name string) *Environment {
        catalog, err := test.DefaultCatalog()
        assert.Nil(t, err)
 
@@ -43,7 +45,7 @@ func createTestRouteEnvironment(t *testing.T) *Environment {
                Catalog:      NewCatalog(context.TODO(), nil),
                Integration: &v1alpha1.Integration{
                        ObjectMeta: metav1.ObjectMeta{
-                               Name:      "test-i",
+                               Name:      name,
                                Namespace: "test-ns",
                        },
                        Status: v1alpha1.IntegrationStatus{
@@ -68,31 +70,34 @@ func createTestRouteEnvironment(t *testing.T) *Environment {
                EnvVars:        make([]corev1.EnvVar, 0),
                ExecutedTraits: make([]Trait, 0),
                Classpath:      strset.New(),
-               Resources: kubernetes.NewCollection(&corev1.Service{
-                       TypeMeta: metav1.TypeMeta{
-                               Kind:       "Service",
-                               APIVersion: "v1",
-                       },
-                       ObjectMeta: metav1.ObjectMeta{
-                               Name:      "test-i",
-                               Namespace: "test-ns",
-                               Labels: map[string]string{
-                                       "camel.apache.org/integration":  
"test-i",
-                                       "camel.apache.org/service.type": 
ServiceTypeUser,
+               Resources: kubernetes.NewCollection(
+                       &corev1.Service{
+                               TypeMeta: metav1.TypeMeta{
+                                       Kind:       "Service",
+                                       APIVersion: "v1",
                                },
-                       },
-                       Spec: corev1.ServiceSpec{
-                               Ports: []corev1.ServicePort{},
-                               Selector: map[string]string{
-                                       "camel.apache.org/integration": 
"test-i",
+                               ObjectMeta: metav1.ObjectMeta{
+                                       Name:      name,
+                                       Namespace: "test-ns",
+                                       Labels: map[string]string{
+                                               "camel.apache.org/integration": 
 name,
+                                               
"camel.apache.org/service.type": ServiceTypeUser,
+                                       },
+                               },
+                               Spec: corev1.ServiceSpec{
+                                       Ports: []corev1.ServicePort{},
+                                       Selector: map[string]string{
+                                               "camel.apache.org/integration": 
name,
+                                       },
                                },
                        },
-               }),
+               ),
        }
 }
 
 func TestRoute_Default(t *testing.T) {
-       environment := createTestRouteEnvironment(t)
+       name := xid.New().String()
+       environment := createTestRouteEnvironment(t, name)
        traitsCatalog := environment.Catalog
 
        err := traitsCatalog.apply(environment)
@@ -102,15 +107,41 @@ func TestRoute_Default(t *testing.T) {
        assert.NotNil(t, environment.GetTrait(ID("route")))
 
        route := environment.Resources.GetRoute(func(r *routev1.Route) bool {
-               return r.ObjectMeta.Name == "test-i"
+               return r.ObjectMeta.Name == name
        })
 
        assert.NotNil(t, route)
        assert.Nil(t, route.Spec.TLS)
 }
 
+func TestRoute_Disabled(t *testing.T) {
+       name := xid.New().String()
+       environment := createTestRouteEnvironment(t, name)
+       environment.Integration.Spec.Traits = map[string]v1alpha1.TraitSpec{
+               "route": {
+                       Configuration: map[string]string{
+                               "enabled": "false",
+                       },
+               },
+       }
+
+       traitsCatalog := environment.Catalog
+       err := traitsCatalog.apply(environment)
+
+       assert.Nil(t, err)
+       assert.NotEmpty(t, environment.ExecutedTraits)
+       assert.Nil(t, environment.GetTrait(ID("route")))
+
+       route := environment.Resources.GetRoute(func(r *routev1.Route) bool {
+               return r.ObjectMeta.Name == name
+       })
+
+       assert.Nil(t, route)
+}
+
 func TestRoute_TLS(t *testing.T) {
-       environment := createTestRouteEnvironment(t)
+       name := xid.New().String()
+       environment := createTestRouteEnvironment(t, name)
        traitsCatalog := environment.Catalog
 
        environment.Integration.Spec.Traits = map[string]v1alpha1.TraitSpec{
@@ -128,7 +159,7 @@ func TestRoute_TLS(t *testing.T) {
        assert.NotNil(t, environment.GetTrait(ID("route")))
 
        route := environment.Resources.GetRoute(func(r *routev1.Route) bool {
-               return r.ObjectMeta.Name == "test-i"
+               return r.ObjectMeta.Name == name
        })
 
        assert.NotNil(t, route)

Reply via email to