// Recycle recycles/scrubs clean a HostPath volume. // Recycle blocks until the pod has completed or any error occurs. // HostPath recycling only works in single node clusters and is meant for testing purposes only. func (r *hostPathRecycler) Recycle() error { pod := r.config.RecyclerPodTemplate // overrides pod.Spec.ActiveDeadlineSeconds = &r.timeout pod.Spec.Volumes[0].VolumeSource = api.VolumeSource{ HostPath: &api.HostPathVolumeSource{ Path: r.path, }, } return volume.RecycleVolumeByWatchingPodUntilCompletion(r.pvName, pod, r.host.GetKubeClient()) }
// Recycle recycles/scrubs clean an NFS volume. // Recycle blocks until the pod has completed or any error occurs. func (r *nfsRecycler) Recycle() error { pod := r.config.RecyclerPodTemplate // overrides pod.Spec.ActiveDeadlineSeconds = &r.timeout pod.GenerateName = "pv-recycler-nfs-" pod.Spec.Volumes[0].VolumeSource = api.VolumeSource{ NFS: &api.NFSVolumeSource{ Server: r.server, Path: r.path, }, } return volume.RecycleVolumeByWatchingPodUntilCompletion(pod, r.host.GetKubeClient()) }
// Recycle recycles/scrubs clean a HostPath volume. // Recycle blocks until the pod has completed or any error occurs. // HostPath recycling only works in single node clusters and is meant for testing purposes only. func (r *hostPathRecycler) Recycle() error { templateClone, err := api.Scheme.DeepCopy(r.config.RecyclerPodTemplate) if err != nil { return err } pod := templateClone.(*v1.Pod) // overrides pod.Spec.ActiveDeadlineSeconds = &r.timeout pod.Spec.Volumes[0].VolumeSource = v1.VolumeSource{ HostPath: &v1.HostPathVolumeSource{ Path: r.path, }, } return volume.RecycleVolumeByWatchingPodUntilCompletion(r.pvName, pod, r.host.GetKubeClient(), r.eventRecorder) }
// Recycle recycles/scrubs clean an NFS volume. // Recycle blocks until the pod has completed or any error occurs. func (r *nfsRecycler) Recycle() error { templateClone, err := conversion.NewCloner().DeepCopy(r.config.RecyclerPodTemplate) if err != nil { return err } pod := templateClone.(*api.Pod) // overrides pod.Spec.ActiveDeadlineSeconds = &r.timeout pod.GenerateName = "pv-recycler-nfs-" pod.Spec.Volumes[0].VolumeSource = api.VolumeSource{ NFS: &api.NFSVolumeSource{ Server: r.server, Path: r.path, }, } return volume.RecycleVolumeByWatchingPodUntilCompletion(r.pvName, pod, r.host.GetKubeClient(), r.eventRecorder) }