code: func getPVCFromCacheExtractPV(namespace string, name string, pvcLister corelisters.PersistentVolumeClaimLister) (string, types.UID, error) {
  	pvc, err := pvcLister.PersistentVolumeClaims(namespace).Get(name)
  	if err != nil {
  		return "", "", fmt.Errorf("failed to find PVC %s/%s in PVCInformer cache: %v", namespace, name, err)
  	}
  
  	if pvc.Status.Phase != v1.ClaimBound || pvc.Spec.VolumeName == "" {
  		return "", "", fmt.Errorf(
  			"PVC %s/%s has non-bound phase (%q) or empty pvc.Spec.VolumeName (%q)",
  			namespace,
  			name,
  			pvc.Status.Phase,
  			pvc.Spec.VolumeName)
  	}
  
  	return pvc.Spec.VolumeName, pvc.UID, nil
  }
docs: // getPVCFromCacheExtractPV fetches the PVC object with the given namespace and
  // name from the shared internal PVC store extracts the name of the PV it is
  // pointing to and returns it.
  // This method returns an error if a PVC object does not exist in the cache
  // with the given namespace/name.
  // This method returns an error if the PVC object's phase is not "Bound".