Skip to content

Commit 7b9ba9f

Browse files
committed
fix: skip MarkDrain and sent Event when --skip-drain
1 parent 9d39b53 commit 7b9ba9f

File tree

3 files changed

+22
-2
lines changed

3 files changed

+22
-2
lines changed

cmd/draino/draino.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,8 @@ func main() {
169169
kubernetes.NewEventRecorder(cs),
170170
kubernetes.WithLogger(log),
171171
kubernetes.WithDrainBuffer(*drainBuffer),
172-
kubernetes.WithConditionsFilter(*conditions))
172+
kubernetes.WithConditionsFilter(*conditions),
173+
kubernetes.WithSkipDrainEvent(*skipDrain))
173174

174175
if *dryRun {
175176
h = cache.FilteringResourceEventHandler{
@@ -179,7 +180,8 @@ func main() {
179180
kubernetes.NewEventRecorder(cs),
180181
kubernetes.WithLogger(log),
181182
kubernetes.WithDrainBuffer(*drainBuffer),
182-
kubernetes.WithConditionsFilter(*conditions)),
183+
kubernetes.WithConditionsFilter(*conditions),
184+
kubernetes.WithSkipDrainEvent(*skipDrain)),
183185
}
184186
}
185187

internal/kubernetes/drainer.go

+6
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,12 @@ func (d *APICordonDrainer) Uncordon(n *core.Node, mutators ...nodeMutatorFn) err
224224

225225
// MarkDrain set a condition on the node to mark that that drain is scheduled.
226226
func (d *APICordonDrainer) MarkDrain(n *core.Node, when, finish time.Time, failed bool) error {
227+
// Do nothing if draining is not enabled.
228+
if d.skipDrain {
229+
d.l.Debug("Skipping drain because draining is disabled")
230+
return nil
231+
}
232+
227233
nodeName := n.Name
228234
// Refresh the node object
229235
freshNode, err := d.c.CoreV1().Nodes().Get(nodeName, meta.GetOptions{})

internal/kubernetes/eventhandler.go

+12
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,19 @@ type DrainingResourceEventHandler struct {
8080
buffer time.Duration
8181

8282
conditions []SuppliedCondition
83+
skipDrain bool
8384
}
8485

8586
// DrainingResourceEventHandlerOption configures an DrainingResourceEventHandler.
8687
type DrainingResourceEventHandlerOption func(d *DrainingResourceEventHandler)
8788

89+
// WithLogger configures if should skip drain in handler
90+
func WithSkipDrainEvent(skipDrain bool) DrainingResourceEventHandlerOption {
91+
return func(h *DrainingResourceEventHandler) {
92+
h.skipDrain = skipDrain
93+
}
94+
}
95+
8896
// WithLogger configures a DrainingResourceEventHandler to use the supplied
8997
// logger.
9098
func WithLogger(l *zap.Logger) DrainingResourceEventHandlerOption {
@@ -167,6 +175,10 @@ func (h *DrainingResourceEventHandler) HandleNode(n *core.Node) {
167175
h.cordon(n, badConditions)
168176
}
169177

178+
if h.skipDrain {
179+
return
180+
}
181+
170182
// Let's ensure that a drain is scheduled
171183
hasSChedule, failedDrain := h.drainScheduler.HasSchedule(n.GetName())
172184
if !hasSChedule {

0 commit comments

Comments
 (0)