Skip to content

Commit

Permalink
Make merge default probe pure
Browse files Browse the repository at this point in the history
  • Loading branch information
ilya-hontarau committed Mar 29, 2024
1 parent 2952d91 commit 71539c2
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 9 deletions.
20 changes: 11 additions & 9 deletions internal/controller/factory/statefulset.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ func generateEtcdCommand(cluster *etcdaenixiov1alpha1.EtcdCluster) []string {
}

func getStartupProbe(probe *corev1.Probe) *corev1.Probe {
defaultProbe := &corev1.Probe{
defaultProbe := corev1.Probe{
ProbeHandler: corev1.ProbeHandler{
HTTPGet: &corev1.HTTPGetAction{
Path: "/readyz?serializable=false",
Expand All @@ -210,7 +210,7 @@ func getStartupProbe(probe *corev1.Probe) *corev1.Probe {
}

func getReadinessProbe(probe *corev1.Probe) *corev1.Probe {
defaultProbe := &corev1.Probe{
defaultProbe := corev1.Probe{
ProbeHandler: corev1.ProbeHandler{
HTTPGet: &corev1.HTTPGetAction{
Path: "/readyz",
Expand All @@ -224,7 +224,7 @@ func getReadinessProbe(probe *corev1.Probe) *corev1.Probe {
}

func getLivenessProbe(probe *corev1.Probe) *corev1.Probe {
defaultProbe := &corev1.Probe{
defaultProbe := corev1.Probe{
ProbeHandler: corev1.ProbeHandler{
HTTPGet: &corev1.HTTPGetAction{
Path: "/livez",
Expand All @@ -237,24 +237,26 @@ func getLivenessProbe(probe *corev1.Probe) *corev1.Probe {
return mergeWithDefaultProbe(probe, defaultProbe)
}

func mergeWithDefaultProbe(probe *corev1.Probe, defaultProbe *corev1.Probe) *corev1.Probe {
func mergeWithDefaultProbe(probe *corev1.Probe, defaultProbe corev1.Probe) *corev1.Probe {
res := defaultProbe.DeepCopy()

if probe == nil {
return defaultProbe
return res
}

if probe.InitialDelaySeconds != 0 {
defaultProbe.InitialDelaySeconds = probe.InitialDelaySeconds
res.InitialDelaySeconds = probe.InitialDelaySeconds
}

if probe.PeriodSeconds != 0 {
defaultProbe.PeriodSeconds = probe.PeriodSeconds
res.PeriodSeconds = probe.PeriodSeconds
}

if hasProbeHandlerAction(*probe) {
defaultProbe.ProbeHandler = probe.ProbeHandler
res.ProbeHandler = probe.ProbeHandler
}

return defaultProbe
return res
}

func hasProbeHandlerAction(probe corev1.Probe) bool {
Expand Down
37 changes: 37 additions & 0 deletions internal/controller/factory/statefulset_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -487,4 +487,41 @@ var _ = Describe("CreateOrUpdateStatefulSet handler", func() {
}))
})
})
Context("When merge with default probe", func() {
It("should correctly merge probe with default", func() {
defaultProbe := v1.Probe{
ProbeHandler: v1.ProbeHandler{
HTTPGet: &v1.HTTPGetAction{
Path: "/livez",
Port: intstr.FromInt32(2379),
},
},
InitialDelaySeconds: 5,
PeriodSeconds: 5,
}
defaultProbeCopy := defaultProbe.DeepCopy()

probe := &v1.Probe{
ProbeHandler: v1.ProbeHandler{
Exec: &v1.ExecAction{
Command: []string{"test"},
},
},
InitialDelaySeconds: 11,
}
result := mergeWithDefaultProbe(probe, defaultProbe)
Expect(result).To(Equal(&v1.Probe{
ProbeHandler: v1.ProbeHandler{
Exec: &v1.ExecAction{
Command: []string{"test"},
},
},
InitialDelaySeconds: 11,
PeriodSeconds: 5,
}))
By("Shouldn't mutate default probe", func() {
Expect(defaultProbe).To(Equal(*defaultProbeCopy))
})
})
})
})

0 comments on commit 71539c2

Please sign in to comment.