code: func VolumeLimits(volumePluginListFunc func() []volume.VolumePluginWithAttachLimits, // typically Kubelet.volumePluginMgr.ListVolumePluginWithLimits
  ) Setter {
  	return func(node *v1.Node) error {
  		if node.Status.Capacity == nil {
  			node.Status.Capacity = v1.ResourceList{}
  		}
  		if node.Status.Allocatable == nil {
  			node.Status.Allocatable = v1.ResourceList{}
  		}
  
  		pluginWithLimits := volumePluginListFunc()
  		for _, volumePlugin := range pluginWithLimits {
  			attachLimits, err := volumePlugin.GetVolumeLimits()
  			if err != nil {
  				klog.V(4).Infof("Error getting volume limit for plugin %s", volumePlugin.GetPluginName())
  				continue
  			}
  			for limitKey, value := range attachLimits {
  				node.Status.Capacity[v1.ResourceName(limitKey)] = *resource.NewQuantity(value, resource.DecimalSI)
  				node.Status.Allocatable[v1.ResourceName(limitKey)] = *resource.NewQuantity(value, resource.DecimalSI)
  			}
  		}
  		return nil
  	}
  }
docs: // VolumeLimits returns a Setter that updates the volume limits on the node.