Skip to content

Commit f80fb41

Browse files
committed
Update QP Scheduled Change event drain time, README, taint type
1 parent d9c3935 commit f80fb41

File tree

2 files changed

+14
-21
lines changed

2 files changed

+14
-21
lines changed

pkg/monitor/sqsevent/scheduled-event.go renamed to pkg/monitor/sqsevent/scheduled-change-event.go

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ package sqsevent
1616
import (
1717
"encoding/json"
1818
"fmt"
19-
"strings"
2019
"time"
2120

2221
"github.com/aws/aws-node-termination-handler/pkg/monitor"
@@ -61,49 +60,45 @@ type AffectedEntity struct {
6160
EntityValue string `json:"entityValue"`
6261
}
6362

64-
// ScheduledEventDetail holds the event details for AWS Health scheduled EC2 change events from Amazon EventBridge
65-
type ScheduledEventDetail struct {
63+
// ScheduledChangeEventDetail holds the event details for AWS Health scheduled EC2 change events from Amazon EventBridge
64+
type ScheduledChangeEventDetail struct {
6665
EventTypeCategory string `json:"eventTypeCategory"`
6766
Service string `json:"service"`
6867
AffectedEntities []AffectedEntity `json:"affectedEntities"`
6968
}
7069

71-
const supportedEventCategoryTypes = "scheduledChange"
72-
7370
func (m SQSMonitor) scheduledEventToInterruptionEvents(event EventBridgeEvent, message *sqs.Message) ([]InterruptionEventWrapper, error) {
74-
scheduledEventDetail := &ScheduledEventDetail{}
71+
scheduledChangeEventDetail := &ScheduledChangeEventDetail{}
7572

76-
if err := json.Unmarshal(event.Detail, scheduledEventDetail); err != nil {
73+
if err := json.Unmarshal(event.Detail, scheduledChangeEventDetail); err != nil {
7774
return nil, err
7875
}
7976

80-
if scheduledEventDetail.Service != "EC2" {
81-
return nil, fmt.Errorf("events from Amazon EventBridge for service (%s) are not supported", scheduledEventDetail.Service)
77+
if scheduledChangeEventDetail.Service != "EC2" {
78+
return nil, fmt.Errorf("events from Amazon EventBridge for service (%s) are not supported", scheduledChangeEventDetail.Service)
8279
}
8380

84-
if !strings.Contains(supportedEventCategoryTypes, scheduledEventDetail.EventTypeCategory) {
85-
return nil, fmt.Errorf("events from Amazon EventBridge with EventTypeCategory (%s) are not supported", scheduledEventDetail.EventTypeCategory)
81+
if scheduledChangeEventDetail.EventTypeCategory != "scheduledChange" {
82+
return nil, fmt.Errorf("events from Amazon EventBridge with EventTypeCategory (%s) are not supported", scheduledChangeEventDetail.EventTypeCategory)
8683
}
8784

88-
// interruptionEventWrappers := make([]InterruptionEventWrapper, len(event.Resources))
8985
interruptionEventWrappers := []InterruptionEventWrapper{}
9086

91-
for _, affectedEntity := range scheduledEventDetail.AffectedEntities {
87+
for _, affectedEntity := range scheduledChangeEventDetail.AffectedEntities {
9288
nodeName, err := m.retrieveNodeName(affectedEntity.EntityValue)
9389
if err != nil {
94-
// interruptionEventWrappers[i] = InterruptionEventWrapper{nil, err}
9590
interruptionEventWrappers = append(interruptionEventWrappers, InterruptionEventWrapper{nil, err})
9691
continue
9792
}
9893
asgName, _ := m.retrieveAutoScalingGroupName(affectedEntity.EntityValue)
9994
interruptionEvent := monitor.InterruptionEvent{
100-
EventID: fmt.Sprintf("aws-health-maintenance-event-%x", event.ID),
95+
EventID: fmt.Sprintf("aws-health-scheduled-change-event-%x", event.ID),
10196
Kind: SQSTerminateKind,
10297
AutoScalingGroupName: asgName,
10398
StartTime: time.Now(),
10499
NodeName: nodeName,
105100
InstanceID: affectedEntity.EntityValue,
106-
Description: fmt.Sprintf("AWS Health maintenance event received. Instance %s will be interrupted at %s \n", affectedEntity.EntityValue, event.getTime()),
101+
Description: fmt.Sprintf("AWS Health scheduled change event received. Instance %s will be interrupted at %s \n", affectedEntity.EntityValue, event.getTime()),
107102
}
108103
interruptionEvent.PostDrainTask = func(interruptionEvent monitor.InterruptionEvent, n node.Node) error {
109104
errs := m.deleteMessages([]*sqs.Message{message})
@@ -120,9 +115,7 @@ func (m SQSMonitor) scheduledEventToInterruptionEvents(event EventBridgeEvent, m
120115
return nil
121116
}
122117

123-
// interruptionEventWrappers[i] = InterruptionEventWrapper{&interruptionEvent, nil}
124118
interruptionEventWrappers = append(interruptionEventWrappers, InterruptionEventWrapper{&interruptionEvent, nil})
125-
126119
}
127120

128121
return interruptionEventWrappers, nil

pkg/monitor/sqsevent/sqs-monitor.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ func (m SQSMonitor) Monitor() error {
8585
log.Warn().Err(eventWrapper.Err).Msg("dropping interruption event for an already terminated node")
8686
if (i == len(interruptionEventWrappers)-1) && (failedInterruptionEventsCount == len(interruptionEventWrappers)-1) {
8787
// Log that all events failed, and delete the message from the queue
88-
log.Warn().Err(eventWrapper.Err).Msg("all interruption events failed, moving to delete message from queue")
88+
log.Warn().Err(eventWrapper.Err).Msg("all interruption events erred during processing, moving to delete message from queue")
8989
deletionErrs := m.deleteMessages([]*sqs.Message{message})
9090
if len(deletionErrs) > 0 {
9191
log.Err(deletionErrs[0]).Msg("error deleting queue event for already terminated node(s)")
@@ -95,7 +95,7 @@ func (m SQSMonitor) Monitor() error {
9595

9696
case eventWrapper.Err != nil:
9797
// Log errors and record as failed events
98-
log.Warn().Err(eventWrapper.Err).Msg("ignoring interruption event due to error") // is this what I want? Or break out specific unsupported error state?
98+
log.Warn().Err(eventWrapper.Err).Msg("ignoring interruption event due to an error")
9999
failedInterruptionEventsCount++
100100

101101
case eventWrapper.Err == nil && eventWrapper.InterruptionEvent != nil && eventWrapper.InterruptionEvent.Kind == SQSTerminateKind:
@@ -266,7 +266,7 @@ func (m SQSMonitor) retrieveNodeName(instanceID string) (string, error) {
266266
// isInstanceManaged returns whether the instance specified should be managed by node termination handler
267267
func (m SQSMonitor) isInstanceManaged(instanceID string) (bool, error) {
268268
if instanceID == "" {
269-
return false, fmt.Errorf("Instance ID was empty when calling isInstanceManaged")
269+
return false, fmt.Errorf("instance ID was empty when calling isInstanceManaged")
270270
}
271271
asgName, err := m.retrieveAutoScalingGroupName(instanceID)
272272
if asgName == "" {

0 commit comments

Comments
 (0)