in pkg/cloud_provider/clientset/clientset.go [63:108]
func (c *Clientset) ConfigureNodeLister(nodeName string) {
trim := func(obj interface{}) (interface{}, error) {
if accessor, err := meta.Accessor(obj); err == nil {
if accessor.GetManagedFields() != nil {
accessor.SetManagedFields(nil)
}
}
// We are filtering only for relevant Node annotations to optimize memory usage.
// Relevant info is for NodePublishVolume calls:
// https://github.com/GoogleCloudPlatform/gcs-fuse-csi-driver/blob/547cab9a9aea4cdbda581885880020fb9266dc03/pkg/csi_driver/node.go#L85
nodeObj, ok := obj.(*corev1.Node)
if !ok {
return obj, nil
}
newLabels := map[string]string{}
isGkeMetaDataServerEnabled, ok := nodeObj.ObjectMeta.Labels[GkeMetaDataServerKey]
if ok {
newLabels[GkeMetaDataServerKey] = isGkeMetaDataServerEnabled
}
nodeObj.Spec = corev1.NodeSpec{}
nodeObj.Status = corev1.NodeStatus{}
nodeObj.ObjectMeta.Annotations = nil
nodeObj.ObjectMeta.Labels = newLabels
return obj, nil
}
informerFactory := informers.NewSharedInformerFactoryWithOptions(
c.k8sClients,
time.Duration(c.informerResyncDurationSec)*time.Second,
informers.WithTweakListOptions(func(options *metav1.ListOptions) {
options.FieldSelector = "metadata.name=" + nodeName
}),
informers.WithTransform(trim),
)
nodeLister := informerFactory.Core().V1().Nodes().Lister()
ctx := context.Background()
informerFactory.Start(ctx.Done())
informerFactory.WaitForCacheSync(ctx.Done())
c.nodeLister = nodeLister
}