in pkg/node/node.go [647:672]
func (n Node) fetchKubernetesNode(nodeName string) (*corev1.Node, error) {
node := &corev1.Node{
ObjectMeta: metav1.ObjectMeta{Name: nodeName},
Spec: corev1.NodeSpec{},
}
if n.nthConfig.DryRun {
return node, nil
}
shortNodeName := strings.Split(nodeName, ".")[0]
labelSelector := metav1.LabelSelector{
MatchExpressions: []metav1.LabelSelectorRequirement{
{
Key: "kubernetes.io/hostname",
Operator: metav1.LabelSelectorOpIn,
Values: []string{nodeName, shortNodeName},
},
},
}
listOptions := metav1.ListOptions{LabelSelector: metav1.FormatLabelSelector(&labelSelector)}
matchingNodes, err := n.drainHelper.Client.CoreV1().Nodes().List(context.TODO(), listOptions)
if err != nil || len(matchingNodes.Items) == 0 {
log.Warn().Msgf("Unable to list Nodes w/ label, falling back to direct Get lookup of node")
return n.drainHelper.Client.CoreV1().Nodes().Get(context.TODO(), nodeName, metav1.GetOptions{})
}
return &matchingNodes.Items[0], nil
}