code: func ProbeAttachableVolumePlugins() []volume.VolumePlugin {
  	allPlugins := []volume.VolumePlugin{}
  
  	allPlugins = append(allPlugins, awsebs.ProbeVolumePlugins()...)
  	allPlugins = append(allPlugins, gcepd.ProbeVolumePlugins()...)
  	allPlugins = append(allPlugins, cinder.ProbeVolumePlugins()...)
  	allPlugins = append(allPlugins, portworx.ProbeVolumePlugins()...)
  	allPlugins = append(allPlugins, vsphere_volume.ProbeVolumePlugins()...)
  	allPlugins = append(allPlugins, azure_dd.ProbeVolumePlugins()...)
  	allPlugins = append(allPlugins, photon_pd.ProbeVolumePlugins()...)
  	allPlugins = append(allPlugins, scaleio.ProbeVolumePlugins()...)
  	allPlugins = append(allPlugins, storageos.ProbeVolumePlugins()...)
  	allPlugins = append(allPlugins, fc.ProbeVolumePlugins()...)
  	allPlugins = append(allPlugins, iscsi.ProbeVolumePlugins()...)
  	allPlugins = append(allPlugins, rbd.ProbeVolumePlugins()...)
  	if utilfeature.DefaultFeatureGate.Enabled(features.CSIPersistentVolume) {
  		allPlugins = append(allPlugins, csi.ProbeVolumePlugins()...)
  	}
  	return allPlugins
  }
docs: // ProbeAttachableVolumePlugins collects all volume plugins for the attach/
  // detach controller.
  // The list of plugins is manually compiled. This code and the plugin
  // initialization code for kubelet really, really need a through refactor.