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 1220ed6  Add option to health probes #525
1220ed6 is described below

commit 1220ed67cd667fbd73298eeeade82c03e9b3ff1b
Author: lburgazzoli <[email protected]>
AuthorDate: Wed Mar 6 13:45:51 2019 +0100

    Add option to health probes #525
---
 pkg/trait/probes.go      | 55 ++++++++++++++++++++++++++++++++++++++++--------
 pkg/trait/probes_test.go |  5 ++++-
 2 files changed, 50 insertions(+), 10 deletions(-)

diff --git a/pkg/trait/probes.go b/pkg/trait/probes.go
index fbc0e33..2ece7bb 100644
--- a/pkg/trait/probes.go
+++ b/pkg/trait/probes.go
@@ -32,9 +32,19 @@ import (
 type probesTrait struct {
        BaseTrait `property:",squash"`
 
-       BindHost string `property:"bind-host"`
-       BindPort int    `property:"bind-port"`
-       Path     string `property:"path"`
+       BindHost                  string `property:"bind-host"`
+       BindPort                  int    `property:"bind-port"`
+       Path                      string `property:"path"`
+       LivenessInitialDelay      int32  `property:"liveness-initial-delay"`
+       LivenessTimeout           int32  `property:"liveness-timeout"`
+       LivenessPeriod            int32  `property:"liveness-period"`
+       LivenessSuccessThreshold  int32  `property:"liveness-success-threshold"`
+       LivenessFailureThreshold  int32  `property:"liveness-failure-threshold"`
+       ReadinessInitialDelay     int32  `property:"readiness-initial-delay"`
+       ReadinessTimeout          int32  `property:"readiness-timeout"`
+       ReadinessPeriod           int32  `property:"readiness-period"`
+       ReadinessSuccessThreshold int32  
`property:"readiness-success-threshold"`
+       ReadinessFailureThreshold int32  
`property:"readiness-failure-threshold"`
 }
 
 func newProbesTrait() *probesTrait {
@@ -68,21 +78,21 @@ func (t *probesTrait) Apply(e *Environment) error {
                                return
                        }
 
-                       
deployment.Spec.Template.Spec.Containers[0].LivenessProbe = t.newProbe()
-                       
deployment.Spec.Template.Spec.Containers[0].ReadinessProbe = t.newProbe()
+                       
deployment.Spec.Template.Spec.Containers[0].LivenessProbe = t.newLivenessProbe()
+                       
deployment.Spec.Template.Spec.Containers[0].ReadinessProbe = 
t.newReadinessProbe()
                })
 
                e.Resources.VisitKnativeService(func(service *serving.Service) {
-                       
service.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.LivenessProbe
 = t.newProbe()
-                       
service.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.ReadinessProbe
 = t.newProbe()
+                       
service.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.LivenessProbe
 = t.newLivenessProbe()
+                       
service.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.ReadinessProbe
 = t.newReadinessProbe()
                })
        }
 
        return nil
 }
 
-func (t *probesTrait) newProbe() *corev1.Probe {
-       return &corev1.Probe{
+func (t *probesTrait) newLivenessProbe() *corev1.Probe {
+       p := corev1.Probe{
                Handler: corev1.Handler{
                        HTTPGet: &corev1.HTTPGetAction{
                                Port: intstr.FromInt(t.BindPort),
@@ -90,4 +100,31 @@ func (t *probesTrait) newProbe() *corev1.Probe {
                        },
                },
        }
+
+       p.InitialDelaySeconds = t.LivenessInitialDelay
+       p.TimeoutSeconds = t.LivenessTimeout
+       p.PeriodSeconds = t.LivenessPeriod
+       p.SuccessThreshold = t.LivenessSuccessThreshold
+       p.FailureThreshold = t.LivenessFailureThreshold
+
+       return &p
+}
+
+func (t *probesTrait) newReadinessProbe() *corev1.Probe {
+       p := corev1.Probe{
+               Handler: corev1.Handler{
+                       HTTPGet: &corev1.HTTPGetAction{
+                               Port: intstr.FromInt(t.BindPort),
+                               Path: t.Path,
+                       },
+               },
+       }
+
+       p.InitialDelaySeconds = t.ReadinessInitialDelay
+       p.TimeoutSeconds = t.ReadinessTimeout
+       p.PeriodSeconds = t.ReadinessPeriod
+       p.SuccessThreshold = t.ReadinessSuccessThreshold
+       p.FailureThreshold = t.ReadinessFailureThreshold
+
+       return &p
 }
diff --git a/pkg/trait/probes_test.go b/pkg/trait/probes_test.go
index 88a2a45..8250de9 100644
--- a/pkg/trait/probes_test.go
+++ b/pkg/trait/probes_test.go
@@ -81,6 +81,7 @@ func TestProbesOnDeployment(t *testing.T) {
        tr := newProbesTrait()
        tr.Enabled = &enabled
        tr.BindPort = 9191
+       tr.LivenessTimeout = 1234
 
        ok, err := tr.Configure(&e)
        assert.Nil(t, err)
@@ -88,13 +89,13 @@ func TestProbesOnDeployment(t *testing.T) {
 
        err = tr.Apply(&e)
        assert.Nil(t, err)
-       //assert.Contains(t, e.Integration.Status.Dependencies, 
"runtime:health")
        assert.Equal(t, "", 
target.Spec.Template.Spec.Containers[0].LivenessProbe.HTTPGet.Host)
        assert.Equal(t, int32(9191), 
target.Spec.Template.Spec.Containers[0].LivenessProbe.HTTPGet.Port.IntVal)
        assert.Equal(t, "/health", 
target.Spec.Template.Spec.Containers[0].LivenessProbe.HTTPGet.Path)
        assert.Equal(t, "", 
target.Spec.Template.Spec.Containers[0].ReadinessProbe.HTTPGet.Host)
        assert.Equal(t, int32(9191), 
target.Spec.Template.Spec.Containers[0].ReadinessProbe.HTTPGet.Port.IntVal)
        assert.Equal(t, "/health", 
target.Spec.Template.Spec.Containers[0].ReadinessProbe.HTTPGet.Path)
+       assert.Equal(t, int32(1234), 
target.Spec.Template.Spec.Containers[0].LivenessProbe.TimeoutSeconds)
 }
 
 func TestProbesOnKnativeService(t *testing.T) {
@@ -118,6 +119,7 @@ func TestProbesOnKnativeService(t *testing.T) {
        tr := newProbesTrait()
        tr.Enabled = &enabled
        tr.BindPort = 9191
+       tr.ReadinessTimeout = 4321
 
        ok, err := tr.Configure(&e)
        assert.Nil(t, err)
@@ -131,4 +133,5 @@ func TestProbesOnKnativeService(t *testing.T) {
        assert.Equal(t, "", 
target.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.ReadinessProbe.HTTPGet.Host)
        assert.Equal(t, int32(9191), 
target.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.ReadinessProbe.HTTPGet.Port.IntVal)
        assert.Equal(t, "/health", 
target.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.ReadinessProbe.HTTPGet.Path)
+       assert.Equal(t, int32(4321), 
target.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.ReadinessProbe.TimeoutSeconds)
 }

Reply via email to