Skip to content

Commit 6e935de

Browse files
Merge pull request #307 from mshitrit/skip-remediation-creation-for-exluded-nodes
skip remediation for excluded nodes
2 parents 2edb6fd + 6f4a07b commit 6e935de

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

controllers/nodehealthcheck_controller.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
commonconditions "github.com/medik8s/common/pkg/conditions"
2929
"github.com/medik8s/common/pkg/etcd"
3030
commonevents "github.com/medik8s/common/pkg/events"
31+
commonlabels "github.com/medik8s/common/pkg/labels"
3132
"github.com/medik8s/common/pkg/lease"
3233
"github.com/medik8s/common/pkg/nodes"
3334
"github.com/pkg/errors"
@@ -353,6 +354,13 @@ func (r *NodeHealthCheckReconciler) Reconcile(ctx context.Context, req ctrl.Requ
353354
continue
354355
}
355356

357+
if r.isNodeRemediationExcluded(&node) {
358+
msg := fmt.Sprintf("Skipped remediation because node %s is marked to exclude remediations", node.GetName())
359+
log.Info(msg)
360+
commonevents.WarningEvent(r.Recorder, nhc, utils.EventReasonRemediationSkipped, msg)
361+
continue
362+
}
363+
356364
log.Info("handling unhealthy node", "node", node.GetName())
357365
requeueAfter, err := r.remediate(ctx, &node, nhc, resourceManager)
358366
if err != nil {
@@ -872,6 +880,15 @@ func (r *NodeHealthCheckReconciler) addRemediationTemplateCRWatch(templateCR *un
872880
return nil
873881
}
874882

883+
func (r *NodeHealthCheckReconciler) isNodeRemediationExcluded(node *v1.Node) bool {
884+
if nodeLabels := node.GetLabels(); nodeLabels == nil {
885+
return false
886+
} else {
887+
_, isNodeExcluded := nodeLabels[commonlabels.ExcludeFromRemediation]
888+
return isNodeExcluded
889+
}
890+
}
891+
875892
func getTimeoutAt(remediation *remediationv1alpha1.Remediation, configuredTimeout *time.Duration) time.Time {
876893
return remediation.Started.Add(*configuredTimeout)
877894
}

controllers/nodehealthcheck_controller_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -815,6 +815,20 @@ var _ = Describe("Node Health Check CR", func() {
815815

816816
})
817817

818+
Context("with Node marked for excluding remediation", func() {
819+
BeforeEach(func() {
820+
objects = newNodes(1, 2, false, true)
821+
objects = append(objects, newNodeHealthCheck())
822+
node := objects[0].(*v1.Node)
823+
node.GetLabels()[commonLabels.ExcludeFromRemediation] = "true"
824+
825+
})
826+
It("remediation shouldn't be created", func() {
827+
Expect(underTest.Status.UnhealthyNodes).To(HaveLen(1))
828+
Expect(underTest.Status.UnhealthyNodes[0].Remediations).To(HaveLen(0))
829+
})
830+
})
831+
818832
Context("with a single escalating remediation", func() {
819833

820834
BeforeEach(func() {

0 commit comments

Comments
 (0)