func()

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
}