Skip to content

Commit

Permalink
Fix #791: upgrade to knative 0.7.1
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolaferraro authored and lburgazzoli committed Jul 23, 2019
1 parent d471c10 commit 913372d
Show file tree
Hide file tree
Showing 10 changed files with 137 additions and 60 deletions.
10 changes: 6 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
module github.com/apache/camel-k

require (
cloud.google.com/go v0.43.0 // indirect
github.com/Masterminds/semver v1.4.2
github.com/alecthomas/jsonschema v0.0.0-20190122210438-a6952de1bbe6
github.com/coreos/prometheus-operator v0.29.0
Expand All @@ -9,10 +10,9 @@ require (
github.com/google/go-containerregistry v0.0.0-20190206233756-dbc4da98389f // indirect
github.com/google/uuid v1.1.1
github.com/jpillora/backoff v0.0.0-20170918002102-8eab2debe79d
github.com/knative/build v0.4.0 // indirect
github.com/knative/eventing v0.4.0
github.com/knative/pkg v0.0.0-20190214162945-0183bf9cdc73
github.com/knative/serving v0.4.0
github.com/knative/eventing v0.7.1
github.com/knative/pkg v0.0.0-20190624141606-d82505e6c5b4
github.com/knative/serving v0.7.1
github.com/mitchellh/mapstructure v1.1.2
github.com/onsi/ginkgo v1.8.0 // indirect
github.com/onsi/gomega v1.5.0
Expand All @@ -27,6 +27,8 @@ require (
github.com/stoewer/go-strcase v1.0.2
github.com/stretchr/testify v1.3.0
go.uber.org/multierr v1.1.0
golang.org/x/net v0.0.0-20190628185345-da137c7871d7 // indirect
golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7 // indirect
gopkg.in/yaml.v2 v2.2.2
k8s.io/api v0.0.0-20190612125737-db0771252981
k8s.io/apimachinery v0.0.0-20190612125636-6a5db36e93ad
Expand Down
80 changes: 72 additions & 8 deletions go.sum

Large diffs are not rendered by default.

11 changes: 7 additions & 4 deletions pkg/trait/classpath.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,14 @@ func (t *classpathTrait) Apply(e *Environment) error {
}
})
e.Resources.VisitKnativeService(func(service *serving.Service) {
for _, m := range service.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.VolumeMounts {
e.Classpath.Add(m.MountPath)
for ci := range service.Spec.ConfigurationSpec.GetTemplate().Spec.Containers {
c := &service.Spec.ConfigurationSpec.GetTemplate().Spec.Containers[ci]
for mi := range c.VolumeMounts {
m := &c.VolumeMounts[mi]
e.Classpath.Add(m.MountPath)
}
t.setJavaClasspath(e.Classpath, &c.Env)
}

t.setJavaClasspath(e.Classpath, &service.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.Env)
})
}

Expand Down
2 changes: 1 addition & 1 deletion pkg/trait/istio.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ func (t *istioTrait) Apply(e *Environment) error {
d.Spec.Template.Annotations = t.injectIstioAnnotation(d.Spec.Template.Annotations, true)
})
e.Resources.VisitKnativeConfigurationSpec(func(cs *serving.ConfigurationSpec) {
cs.RevisionTemplate.Annotations = t.injectIstioAnnotation(cs.RevisionTemplate.Annotations, false)
cs.Template.Annotations = t.injectIstioAnnotation(cs.GetTemplate().Annotations, false)
})
}
return nil
Expand Down
24 changes: 9 additions & 15 deletions pkg/trait/istio_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,8 @@ func NewIstioTestEnv(t *testing.T, d *appsv1.Deployment, s *serving.Service, ena
func TestIstioInject(t *testing.T) {
s := serving.Service{
Spec: serving.ServiceSpec{
RunLatest: &serving.RunLatestType{
Configuration: serving.ConfigurationSpec{
RevisionTemplate: serving.RevisionTemplateSpec{},
},
ConfigurationSpec: serving.ConfigurationSpec{
Template: &serving.RevisionTemplateSpec{},
},
},
}
Expand All @@ -91,17 +89,15 @@ func TestIstioInject(t *testing.T) {
err := env.Catalog.apply(&env)
assert.Nil(t, err)

assert.Empty(t, s.Spec.RunLatest.Configuration.RevisionTemplate.Annotations[istioSidecarInjectAnnotation])
assert.Empty(t, s.Spec.ConfigurationSpec.GetTemplate().Annotations[istioSidecarInjectAnnotation])
assert.NotEmpty(t, d.Spec.Template.Annotations[istioSidecarInjectAnnotation])
}

func TestIstioForcedInjectTrue(t *testing.T) {
s := serving.Service{
Spec: serving.ServiceSpec{
RunLatest: &serving.RunLatestType{
Configuration: serving.ConfigurationSpec{
RevisionTemplate: serving.RevisionTemplateSpec{},
},
ConfigurationSpec: serving.ConfigurationSpec{
Template: &serving.RevisionTemplateSpec{},
},
},
}
Expand All @@ -117,17 +113,15 @@ func TestIstioForcedInjectTrue(t *testing.T) {
err := env.Catalog.apply(&env)
assert.Nil(t, err)

assert.Equal(t, "true", s.Spec.RunLatest.Configuration.RevisionTemplate.Annotations[istioSidecarInjectAnnotation])
assert.Equal(t, "true", s.Spec.ConfigurationSpec.GetTemplate().Annotations[istioSidecarInjectAnnotation])
assert.Equal(t, "true", d.Spec.Template.Annotations[istioSidecarInjectAnnotation])
}

func TestIstioForcedInjectFalse(t *testing.T) {
s := serving.Service{
Spec: serving.ServiceSpec{
RunLatest: &serving.RunLatestType{
Configuration: serving.ConfigurationSpec{
RevisionTemplate: serving.RevisionTemplateSpec{},
},
ConfigurationSpec: serving.ConfigurationSpec{
Template: &serving.RevisionTemplateSpec{},
},
},
}
Expand All @@ -143,7 +137,7 @@ func TestIstioForcedInjectFalse(t *testing.T) {
err := env.Catalog.apply(&env)
assert.Nil(t, err)

assert.Equal(t, "false", s.Spec.RunLatest.Configuration.RevisionTemplate.Annotations[istioSidecarInjectAnnotation])
assert.Equal(t, "false", s.Spec.ConfigurationSpec.GetTemplate().Annotations[istioSidecarInjectAnnotation])
assert.Equal(t, "false", d.Spec.Template.Annotations[istioSidecarInjectAnnotation])
}

Expand Down
16 changes: 8 additions & 8 deletions pkg/trait/knative_service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -127,21 +127,21 @@ func TestKnativeService(t *testing.T) {

assert.NotNil(t, s)

spec := s.Spec.RunLatest.Configuration.RevisionTemplate.Spec
spec := s.Spec.ConfigurationSpec.GetTemplate().Spec

assert.Len(t, spec.Container.VolumeMounts, 5)
assert.Len(t, spec.Containers[0].VolumeMounts, 5)
assert.Len(t, spec.Volumes, 5)

assert.Condition(t, func() bool {
for _, v := range spec.Container.VolumeMounts {
for _, v := range spec.Containers[0].VolumeMounts {
if v.Name == "integration-properties" {
return true
}
}
return false
})
assert.Condition(t, func() bool {
for _, v := range spec.Container.VolumeMounts {
for _, v := range spec.Containers[0].VolumeMounts {
if v.Name == "my-cm" {
return true
}
Expand Down Expand Up @@ -173,10 +173,10 @@ func TestKnativeService(t *testing.T) {
}
})

test.EnvVarExists(t, spec.Container.Env, "JAVA_CLASSPATH")
test.EnvVarHasValue(t, spec.Container.Env, "CAMEL_K_ROUTES", "file:/etc/camel/sources/i-source-000/routes.js?language=js&compression=true")
test.EnvVarHasValue(t, spec.Container.Env, "CAMEL_K_CONF", "/etc/camel/conf/application.properties")
test.EnvVarHasValue(t, spec.Container.Env, "CAMEL_K_CONF_D", "/etc/camel/conf.d")
test.EnvVarExists(t, spec.Containers[0].Env, "JAVA_CLASSPATH")
test.EnvVarHasValue(t, spec.Containers[0].Env, "CAMEL_K_ROUTES", "file:/etc/camel/sources/i-source-000/routes.js?language=js&compression=true")
test.EnvVarHasValue(t, spec.Containers[0].Env, "CAMEL_K_CONF", "/etc/camel/conf/application.properties")
test.EnvVarHasValue(t, spec.Containers[0].Env, "CAMEL_K_CONF_D", "/etc/camel/conf.d")
}

func TestKnativeServiceWithCustomContainerName(t *testing.T) {
Expand Down
12 changes: 8 additions & 4 deletions pkg/trait/knative_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -195,8 +195,10 @@ func NewFakeClient(namespace string) (controller.Client, error) {
Name: "endpoint-sink-1",
},
Status: serving.ServiceStatus{
Address: &duckv1alpha1.Addressable{
Hostname: "endpoint-sink-1.host",
RouteStatusFields: serving.RouteStatusFields{
Address: &duckv1alpha1.Addressable{
Hostname: "endpoint-sink-1.host",
},
},
},
},
Expand All @@ -210,8 +212,10 @@ func NewFakeClient(namespace string) (controller.Client, error) {
Name: "endpoint-sink-2",
},
Status: serving.ServiceStatus{
Address: &duckv1alpha1.Addressable{
Hostname: "endpoint-sink-2.host",
RouteStatusFields: serving.RouteStatusFields{
Address: &duckv1alpha1.Addressable{
Hostname: "endpoint-sink-2.host",
},
},
},
},
Expand Down
2 changes: 1 addition & 1 deletion pkg/trait/owner.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ func (t *ownerTrait) Apply(e *Environment) error {
})

e.Resources.VisitKnativeService(func(service *serving.Service) {
t.propagateLabelAndAnnotations(&service.Spec.RunLatest.Configuration.RevisionTemplate, targetLabels, targetAnnotations)
t.propagateLabelAndAnnotations(service.Spec.ConfigurationSpec.GetTemplate(), targetLabels, targetAnnotations)
})

return nil
Expand Down
21 changes: 18 additions & 3 deletions pkg/trait/probes_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import (
"github.com/stretchr/testify/assert"

serving "github.com/knative/serving/pkg/apis/serving/v1alpha1"
servingbeta "github.com/knative/serving/pkg/apis/serving/v1beta1"
appsv1 "k8s.io/api/apps/v1"
corev1 "k8s.io/api/core/v1"
)
Expand Down Expand Up @@ -101,7 +102,21 @@ func TestProbesOnDeployment(t *testing.T) {
func TestProbesOnKnativeService(t *testing.T) {
target := serving.Service{
Spec: serving.ServiceSpec{
RunLatest: &serving.RunLatestType{},
ConfigurationSpec: serving.ConfigurationSpec{
Template: &serving.RevisionTemplateSpec{
Spec: serving.RevisionSpec{
RevisionSpec: servingbeta.RevisionSpec{
PodSpec: corev1.PodSpec{
Containers: []corev1.Container{
{
Image: "dummy",
},
},
},
},
},
},
},
},
}

Expand All @@ -127,6 +142,6 @@ func TestProbesOnKnativeService(t *testing.T) {

err = tr.Apply(&e)
assert.Nil(t, err)
assert.Nil(t, target.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.LivenessProbe)
assert.Nil(t, target.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.ReadinessProbe)
assert.Nil(t, target.Spec.ConfigurationSpec.GetTemplate().Spec.Containers[0].LivenessProbe)
assert.Nil(t, target.Spec.ConfigurationSpec.GetTemplate().Spec.Containers[0].ReadinessProbe)
}
19 changes: 7 additions & 12 deletions pkg/util/kubernetes/collection.go
Original file line number Diff line number Diff line change
Expand Up @@ -272,27 +272,22 @@ func (c *Collection) GetContainerByName(name string) *corev1.Container {
func (c *Collection) VisitContainer(visitor func(container *corev1.Container)) {
c.VisitDeployment(func(d *appsv1.Deployment) {
for idx := range d.Spec.Template.Spec.Containers {
c := &d.Spec.Template.Spec.Containers[idx]
visitor(c)
cntref := &d.Spec.Template.Spec.Containers[idx]
visitor(cntref)
}
})
c.VisitKnativeConfigurationSpec(func(cs *serving.ConfigurationSpec) {
c := &cs.RevisionTemplate.Spec.Container
visitor(c)
for _, cnt := range cs.GetTemplate().Spec.Containers {
cntref := &cnt
visitor(cntref)
}
})
}

// VisitKnativeConfigurationSpec executes the visitor function on all knative ConfigurationSpec inside serving Services
func (c *Collection) VisitKnativeConfigurationSpec(visitor func(container *serving.ConfigurationSpec)) {
c.VisitKnativeService(func(s *serving.Service) {
if s.Spec.RunLatest != nil {
c := &s.Spec.RunLatest.Configuration
visitor(c)
}
if s.Spec.Release != nil {
c := &s.Spec.Release.Configuration
visitor(c)
}
visitor(&s.Spec.ConfigurationSpec)
})
}

Expand Down

0 comments on commit 913372d

Please sign in to comment.