From b4225aaeedda032df99c43e8098da161319d74b6 Mon Sep 17 00:00:00 2001 From: lamai93 Date: Wed, 31 Oct 2018 11:07:52 +0100 Subject: [PATCH 1/2] Support older versions of arangodb. --- pkg/deployment/resources/pod_creator.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/pkg/deployment/resources/pod_creator.go b/pkg/deployment/resources/pod_creator.go index 683a5d14b..133328147 100644 --- a/pkg/deployment/resources/pod_creator.go +++ b/pkg/deployment/resources/pod_creator.go @@ -369,12 +369,28 @@ func (r *Resources) createReadinessProbe(spec api.DeploymentSpec, group api.Serv } } probeCfg := &k8sutil.HTTPProbeConfig{ - LocalPath: "/_admin/server/availability", + LocalPath: "/_api/version", Secure: spec.IsSecure(), Authorization: authorization, InitialDelaySeconds: 2, PeriodSeconds: 2, } + switch spec.GetMode() { + case api.DeploymentModeActiveFailover: + probeCfg.LocalPath = "/_admin/echo" + } + + status, _ := r.context.GetStatus() + currentImage := status.CurrentImage + if currentImage == nil { + return nil, fmt.Errorf("CurrentImage is nil when creating a pod") + } + + // /_admin/server/availability is the way to go, it is available since 3.3.9 + if currentImage.ArangoDBVersion.CompareTo("3.3.9") >= 0 { + probeCfg.LocalPath = "/_admin/server/availability" + } + return probeCfg, nil } From 12a37bee6e8371591f62821fbdaf3e9e9ac1fec2 Mon Sep 17 00:00:00 2001 From: lamai93 Date: Wed, 31 Oct 2018 11:38:10 +0100 Subject: [PATCH 2/2] Pass version to createReadynessProbe. --- pkg/deployment/resources/pod_creator.go | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/pkg/deployment/resources/pod_creator.go b/pkg/deployment/resources/pod_creator.go index 133328147..4a06262ac 100644 --- a/pkg/deployment/resources/pod_creator.go +++ b/pkg/deployment/resources/pod_creator.go @@ -35,6 +35,7 @@ import ( "sync" "time" + driver "github.com/arangodb/go-driver" "github.com/arangodb/go-driver/jwt" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1alpha" "github.com/arangodb/kube-arangodb/pkg/util/constants" @@ -353,7 +354,7 @@ func (r *Resources) createLivenessProbe(spec api.DeploymentSpec, group api.Serve } // createReadinessProbe creates configuration for a readiness probe of a server in the given group. -func (r *Resources) createReadinessProbe(spec api.DeploymentSpec, group api.ServerGroup) (*k8sutil.HTTPProbeConfig, error) { +func (r *Resources) createReadinessProbe(spec api.DeploymentSpec, group api.ServerGroup, version driver.Version) (*k8sutil.HTTPProbeConfig, error) { if group != api.ServerGroupSingle && group != api.ServerGroupCoordinators { return nil, nil } @@ -380,14 +381,8 @@ func (r *Resources) createReadinessProbe(spec api.DeploymentSpec, group api.Serv probeCfg.LocalPath = "/_admin/echo" } - status, _ := r.context.GetStatus() - currentImage := status.CurrentImage - if currentImage == nil { - return nil, fmt.Errorf("CurrentImage is nil when creating a pod") - } - // /_admin/server/availability is the way to go, it is available since 3.3.9 - if currentImage.ArangoDBVersion.CompareTo("3.3.9") >= 0 { + if version.CompareTo("3.3.9") >= 0 { probeCfg.LocalPath = "/_admin/server/availability" } @@ -498,7 +493,7 @@ func (r *Resources) createPodForMember(spec api.DeploymentSpec, memberID string, if err != nil { return maskAny(err) } - readinessProbe, err := r.createReadinessProbe(spec, group) + readinessProbe, err := r.createReadinessProbe(spec, group, imageInfo.ArangoDBVersion) if err != nil { return maskAny(err) }