in pkg/monitor/scheduledevent/scheduled-event-monitor.go [117:143]
func uncordonAfterRebootPreDrain(interruptionEvent monitor.InterruptionEvent, n node.Node) error {
nodeName := interruptionEvent.NodeName
err := n.MarkWithEventID(nodeName, interruptionEvent.EventID)
if err != nil {
return fmt.Errorf("Unable to mark node with event ID: %w", err)
}
err = n.TaintScheduledMaintenance(nodeName, interruptionEvent.EventID)
if err != nil {
return fmt.Errorf("Unable to taint node with taint %s:%s: %w", node.ScheduledMaintenanceTaint, interruptionEvent.EventID, err)
}
// if the node is already marked as unschedulable, then don't do anything
unschedulable, err := n.IsUnschedulable(nodeName)
if err == nil && unschedulable {
log.Debug().Msg("Node is already marked unschedulable, not taking any action to add uncordon label.")
return nil
} else if err != nil {
return fmt.Errorf("Encountered an error while checking if the node is unschedulable. Not setting an uncordon label: %w", err)
}
err = n.MarkForUncordonAfterReboot(nodeName)
if err != nil {
return fmt.Errorf("Unable to mark the node for uncordon: %w", err)
}
log.Info().Msg("Successfully applied uncordon after reboot action label to node.")
return nil
}