code: func (d *Deleter) DeletePVs() {
  	for _, pv := range d.Cache.ListPVs() {
  		if pv.Status.Phase != v1.VolumeReleased {
  			continue
  		}
  		name := pv.Name
  		switch pv.Spec.PersistentVolumeReclaimPolicy {
  		case v1.PersistentVolumeReclaimRetain:
  			glog.V(4).Infof("reclaimVolume[%s]: policy is Retain, nothing to do", name)
  		case v1.PersistentVolumeReclaimRecycle:
  			glog.V(4).Infof("reclaimVolume[%s]: policy is Recycle which is not supported", name)
  			d.RuntimeConfig.Recorder.Eventf(pv, v1.EventTypeWarning, "VolumeUnsupportedReclaimPolicy", "Volume has unsupported PersistentVolumeReclaimPolicy: Recycle")
  		case v1.PersistentVolumeReclaimDelete:
  			glog.V(4).Infof("reclaimVolume[%s]: policy is Delete", name)
  			// Cleanup volume
  			err := d.deletePV(pv)
  			if err != nil {
  				mode, modeErr := d.getVolMode(pv)
  				if modeErr != nil {
  					mode = "unknown"
  				}
  				deleteType := metrics.DeleteTypeProcess
  				if d.shouldRunJob(mode) {
  					deleteType = metrics.DeleteTypeJob
  				}
  				metrics.PersistentVolumeDeleteFailedTotal.WithLabelValues(string(mode), deleteType).Inc()
  				cleaningLocalPVErr := fmt.Errorf("Error cleaning PV %q: %v", name, err.Error())
  				d.RuntimeConfig.Recorder.Eventf(pv, v1.EventTypeWarning, common.EventVolumeFailedDelete, cleaningLocalPVErr.Error())
  				glog.Error(err)
  				continue
  			}
  		default:
  			// Unknown PersistentVolumeReclaimPolicy
  			d.RuntimeConfig.Recorder.Eventf(pv, v1.EventTypeWarning, "VolumeUnknownReclaimPolicy", "Volume has unrecognized PersistentVolumeReclaimPolicy")
  		}
  	}
  }
docs: // DeletePVs will scan through all the existing PVs that are released, and cleanup and
  // delete them