Skip to content

Commit 786ed1e

Browse files
vermaabhayAbhay Verma
and
Abhay Verma
authored
fixes #423: Populate pod list in webhook notification (#464)
* fixes #423: Populate pod list in webhook notification * fixes #423: stop PostDrainTask incase cordon/drain fails * fixes #423: initialize drainHelper.Client even if dry-run is set to true * fixes #423: Not fetching pod list if dry-run is set to true Co-authored-by: Abhay Verma <[email protected]>
1 parent 98d0c37 commit 786ed1e

File tree

2 files changed

+26
-18
lines changed

2 files changed

+26
-18
lines changed

cmd/node-termination-handler.go

+21-18
Original file line numberDiff line numberDiff line change
@@ -318,32 +318,35 @@ func drainOrCordonIfNecessary(interruptionEventStore *interruptioneventstore.Sto
318318
runPreDrainTask(node, nodeName, drainEvent, metrics, recorder)
319319
}
320320

321+
podNameList, err := node.FetchPodNameList(nodeName)
322+
if err != nil {
323+
log.Err(err).Msgf("Unable to fetch running pods for node '%s' ", nodeName)
324+
}
325+
drainEvent.Pods = podNameList
326+
err = node.LogPods(podNameList, nodeName)
327+
if err != nil {
328+
log.Err(err).Msg("There was a problem while trying to log all pod names on the node")
329+
}
330+
321331
if nthConfig.CordonOnly || (drainEvent.IsRebalanceRecommendation() && !nthConfig.EnableRebalanceDraining) {
322332
err = cordonNode(node, nodeName, drainEvent, metrics, recorder)
323333
} else {
324334
err = cordonAndDrainNode(node, nodeName, metrics, recorder, nthConfig.EnableSQSTerminationDraining)
325335
}
326-
327-
if err != nil {
328-
podNameList, err := node.FetchPodNameList(nodeName)
329-
drainEvent.Pods = podNameList
330-
if err != nil {
331-
log.Err(err).Msgf("Unable to fetch running pods for node '%s' ", nodeName)
332-
}
333-
err = node.LogPods(podNameList, nodeName)
334-
if err != nil {
335-
log.Err(err).Msg("There was a problem while trying to log all pod names on the node")
336-
}
337-
}
338-
339-
interruptionEventStore.MarkAllAsProcessed(nodeName)
336+
340337
if nthConfig.WebhookURL != "" {
341338
webhook.Post(nodeMetadata, drainEvent, nthConfig)
342339
}
343-
if drainEvent.PostDrainTask != nil {
344-
runPostDrainTask(node, nodeName, drainEvent, metrics, recorder)
345-
}
346-
<-interruptionEventStore.Workers
340+
341+
if err != nil {
342+
<-interruptionEventStore.Workers
343+
} else {
344+
interruptionEventStore.MarkAllAsProcessed(nodeName)
345+
if drainEvent.PostDrainTask != nil {
346+
runPostDrainTask(node, nodeName, drainEvent, metrics, recorder)
347+
}
348+
<-interruptionEventStore.Workers
349+
}
347350

348351
}
349352

pkg/node/node.go

+5
Original file line numberDiff line numberDiff line change
@@ -496,6 +496,10 @@ func (n Node) fetchKubernetesNode(nodeName string) (*corev1.Node, error) {
496496
}
497497

498498
func (n Node) fetchAllPods(nodeName string) (*corev1.PodList, error) {
499+
if n.nthConfig.DryRun {
500+
log.Info().Msgf("Would have retrieved running pod list on node %s, but dry-run flag was set", nodeName)
501+
return &corev1.PodList{}, nil
502+
}
499503
return n.drainHelper.Client.CoreV1().Pods("").List(context.TODO(), metav1.ListOptions{
500504
FieldSelector: "spec.nodeName=" + nodeName,
501505
})
@@ -513,6 +517,7 @@ func getDrainHelper(nthConfig config.Config) (*drain.Helper, error) {
513517
Out: log.Logger,
514518
ErrOut: log.Logger,
515519
}
520+
516521
if nthConfig.DryRun {
517522
return drainHelper, nil
518523
}

0 commit comments

Comments
 (0)