@@ -53,26 +53,59 @@ func PodLifecycle() *corev1.Lifecycle {
53
53
54
54
func PodLivenessProbe (i * ispnv1.Infinispan , operand version.Operand ) * corev1.Probe {
55
55
i .InitServiceContainer ()
56
- return probe (i .Spec .Service .Container .LivenessProbe , operand )
56
+ if decoupledProbes (operand ) {
57
+ return livenessProbe (i .Spec .Service .Container .LivenessProbe )
58
+ }
59
+ return legacyHealthProbe (i .Spec .Service .Container .LivenessProbe , operand )
57
60
}
58
61
59
62
func PodReadinessProbe (i * ispnv1.Infinispan , operand version.Operand ) * corev1.Probe {
60
63
i .InitServiceContainer ()
61
- return probe (i .Spec .Service .Container .ReadinessProbe , operand )
64
+ if decoupledProbes (operand ) {
65
+ return readinessProbe (i .Spec .Service .Container .ReadinessProbe )
66
+ }
67
+ return legacyHealthProbe (i .Spec .Service .Container .ReadinessProbe , operand )
62
68
}
63
69
64
70
func PodStartupProbe (i * ispnv1.Infinispan , operand version.Operand ) * corev1.Probe {
65
71
i .InitServiceContainer ()
66
- return probe (i .Spec .Service .Container .StartupProbe , operand )
72
+ if decoupledProbes (operand ) {
73
+ return livenessProbe (i .Spec .Service .Container .StartupProbe )
74
+ }
75
+ return legacyHealthProbe (i .Spec .Service .Container .StartupProbe , operand )
76
+ }
77
+
78
+ func decoupledProbes (operand version.Operand ) bool {
79
+ u := operand .UpstreamVersion
80
+ switch u .Major {
81
+ case 14 :
82
+ return false
83
+ case 15 :
84
+ return u .Minor == 0 && u .Patch > 14 || u .Minor == 2 && u .Patch > 1
85
+ default :
86
+ return true
87
+ }
67
88
}
68
89
69
- func probe (p ispnv1.ContainerProbeSpec , operand version.Operand ) * corev1.Probe {
90
+ func livenessProbe (p ispnv1.ContainerProbeSpec ) * corev1.Probe {
91
+ return probe (p , "/health/live" )
92
+ }
93
+
94
+ func readinessProbe (p ispnv1.ContainerProbeSpec ) * corev1.Probe {
95
+ return probe (p , "/health/ready" )
96
+ }
97
+
98
+ func legacyHealthProbe (p ispnv1.ContainerProbeSpec , operand version.Operand ) * corev1.Probe {
70
99
var path string
71
100
if operand .UpstreamVersion .GTE (semver.Version {Major : 15 }) {
72
101
path = "rest/v2/container/health/status"
73
102
} else {
74
103
path = "rest/v2/cache-managers/default/health/status"
75
104
}
105
+ return probe (p , path )
106
+ }
107
+
108
+ func probe (p ispnv1.ContainerProbeSpec , path string ) * corev1.Probe {
76
109
return & corev1.Probe {
77
110
ProbeHandler : corev1.ProbeHandler {
78
111
HTTPGet : & corev1.HTTPGetAction {
0 commit comments