in pkg/interruptionevent/asg/launch/handler.go [57:85]
func (h *Handler) HandleEvent(drainEvent *monitor.InterruptionEvent) error {
if drainEvent == nil {
return fmt.Errorf("drainEvent is nil")
}
if !common.IsAllowedKind(drainEvent.Kind, monitor.ASGLaunchLifecycleKind) {
return nil
}
isNodeReady, err := h.isNodeReady(drainEvent.InstanceID)
if err != nil {
h.commonHandler.InterruptionEventStore.CancelInterruptionEvent(drainEvent.EventID)
return fmt.Errorf("check if node (instanceID=%s) is present and ready: %w", drainEvent.InstanceID, err)
}
if !isNodeReady {
h.commonHandler.InterruptionEventStore.CancelInterruptionEvent(drainEvent.EventID)
return nil
}
nodeName, err := h.commonHandler.GetNodeName(drainEvent)
if err != nil {
return fmt.Errorf("get node name for instanceID=%s: %w", drainEvent.InstanceID, err)
}
if drainEvent.PostDrainTask != nil {
h.commonHandler.RunPostDrainTask(nodeName, drainEvent)
}
return nil
}