in pkg/monitor/sqsevent/sqs-monitor.go [108:136]
func (m SQSMonitor) processEventBridgeEvent(eventBridgeEvent *EventBridgeEvent, message *sqs.Message) []InterruptionEventWrapper {
interruptionEventWrappers := []InterruptionEventWrapper{}
interruptionEvent := &monitor.InterruptionEvent{}
var err error
switch eventBridgeEvent.Source {
case "aws.autoscaling":
interruptionEvent, err = m.asgTerminationToInterruptionEvent(eventBridgeEvent, message)
return append(interruptionEventWrappers, InterruptionEventWrapper{interruptionEvent, err})
case "aws.ec2":
if eventBridgeEvent.DetailType == "EC2 Instance State-change Notification" {
interruptionEvent, err = m.ec2StateChangeToInterruptionEvent(eventBridgeEvent, message)
} else if eventBridgeEvent.DetailType == "EC2 Spot Instance Interruption Warning" {
interruptionEvent, err = m.spotITNTerminationToInterruptionEvent(eventBridgeEvent, message)
} else if eventBridgeEvent.DetailType == "EC2 Instance Rebalance Recommendation" {
interruptionEvent, err = m.rebalanceRecommendationToInterruptionEvent(eventBridgeEvent, message)
}
return append(interruptionEventWrappers, InterruptionEventWrapper{interruptionEvent, err})
case "aws.health":
if eventBridgeEvent.DetailType == "AWS Health Event" {
return m.scheduledEventToInterruptionEvents(eventBridgeEvent, message)
}
}
err = fmt.Errorf("event source (%s) is not supported", eventBridgeEvent.Source)
return append(interruptionEventWrappers, InterruptionEventWrapper{nil, err})
}