code: func (vs *volumeSnapshotter) getSnapshotDataFromSnapshotName(uniqueSnapshotName string) *crdv1.VolumeSnapshotData {
  	var snapshotDataList crdv1.VolumeSnapshotDataList
  	var snapshotDataObj crdv1.VolumeSnapshotData
  	var found bool
  
  	err := vs.restClient.Get().
  		Resource(crdv1.VolumeSnapshotDataResourcePlural).
  		Do().Into(&snapshotDataList)
  	if err != nil {
  		glog.Errorf("Error retrieving the VolumeSnapshotData objects from API server: %v", err)
  		return nil
  	}
  	if len(snapshotDataList.Items) == 0 {
  		glog.Infof("No VolumeSnapshotData objects found on the API server")
  		return nil
  	}
  	for _, snapData := range snapshotDataList.Items {
  		if snapData.Spec.VolumeSnapshotRef != nil {
  			name := snapData.Spec.VolumeSnapshotRef.Namespace + "/" + snapData.Spec.VolumeSnapshotRef.Name
  			if name == uniqueSnapshotName || snapData.Spec.VolumeSnapshotRef.Name == uniqueSnapshotName {
  				snapshotDataObj = snapData
  				found = true
  				break
  			}
  		}
  	}
  	if !found {
  		glog.V(4).Infof("Error: no VolumeSnapshotData for VolumeSnapshot %s found", uniqueSnapshotName)
  		return nil
  	}
  
  	return &snapshotDataObj
  }
docs: // TODO: cache the VolumeSnapshotData list since this is only needed when controller restarts, checks
  // whether there is existing VolumeSnapshotData refers to the snapshot already.
  // Helper function that looks up VolumeSnapshotData for a VolumeSnapshot named snapshotName