@@ -61,6 +61,10 @@ type (
61
61
GetNode (context.Context , string ) (* v1.Node , error )
62
62
}
63
63
64
+ NodeGetterBuilder interface {
65
+ NewNodeGetter (* v1alpha1.Terminator ) NodeGetter
66
+ }
67
+
64
68
NodeNameGetter interface {
65
69
GetNodeName (context.Context , string ) (string , error )
66
70
}
79
83
}
80
84
81
85
Reconciler struct {
82
- NodeGetter
86
+ NodeGetterBuilder
83
87
NodeNameGetter
84
88
SQSClientBuilder
85
89
SQSMessageParser
@@ -102,6 +106,8 @@ func (r Reconciler) Reconcile(ctx context.Context, req reconcile.Request) (recon
102
106
return reconcile.Result {}, nil
103
107
}
104
108
109
+ nodeGetter := r .NewNodeGetter (terminator )
110
+
105
111
cordondrainer , err := r .NewCordonDrainer (terminator )
106
112
if err != nil {
107
113
return reconcile.Result {}, err
@@ -126,6 +132,7 @@ func (r Reconciler) Reconcile(ctx context.Context, req reconcile.Request) (recon
126
132
evt := r .Parse (ctx , msg )
127
133
ctx = logging .WithLogger (ctx , logging .FromContext (ctx ).With ("event" , evt ))
128
134
135
+ allInstancesHandled := true
129
136
savedCtx := ctx
130
137
for _ , ec2InstanceID := range evt .EC2InstanceIDs () {
131
138
ctx = logging .WithLogger (savedCtx , logging .FromContext (savedCtx ).
@@ -135,14 +142,20 @@ func (r Reconciler) Reconcile(ctx context.Context, req reconcile.Request) (recon
135
142
nodeName , e := r .GetNodeName (ctx , ec2InstanceID )
136
143
if e != nil {
137
144
err = multierr .Append (err , e )
145
+ allInstancesHandled = false
138
146
continue
139
147
}
140
148
141
149
ctx = logging .WithLogger (ctx , logging .FromContext (ctx ).With ("node" , nodeName ))
142
150
143
- node , e := r .GetNode (ctx , nodeName )
144
- if e != nil {
145
- err = multierr .Append (err , e )
151
+ node , e := nodeGetter .GetNode (ctx , nodeName )
152
+ if node == nil {
153
+ logger := logging .FromContext (ctx )
154
+ if e != nil {
155
+ logger = logger .With ("error" , e )
156
+ }
157
+ logger .Warn ("no matching node found" )
158
+ allInstancesHandled = false
146
159
continue
147
160
}
148
161
@@ -163,7 +176,7 @@ func (r Reconciler) Reconcile(ctx context.Context, req reconcile.Request) (recon
163
176
err = multierr .Append (err , e )
164
177
}
165
178
166
- if tryAgain {
179
+ if tryAgain || ! allInstancesHandled {
167
180
continue
168
181
}
169
182
0 commit comments