func (plugin *hostPathPlugin) NewBuilder(spec *volume.Spec, pod *api.Pod, _ volume.VolumeOptions) (volume.Builder, error) { if spec.Volume != nil && spec.Volume.HostPath != nil { path := spec.Volume.HostPath.Path return &hostPathBuilder{ hostPath: &hostPath{path: path, MetricsProvider: volume.NewMetricsDu(path)}, readOnly: false, }, nil } else { path := spec.PersistentVolume.Spec.HostPath.Path return &hostPathBuilder{ hostPath: &hostPath{path: path, MetricsProvider: volume.NewMetricsDu(path)}, readOnly: spec.ReadOnly, }, nil } }
func newDeleter(spec *volume.Spec, host volume.VolumeHost) (volume.Deleter, error) { if spec.PersistentVolume != nil && spec.PersistentVolume.Spec.HostPath == nil { return nil, fmt.Errorf("spec.PersistentVolumeSource.HostPath is nil") } path := spec.PersistentVolume.Spec.HostPath.Path return &hostPathDeleter{spec.Name(), path, host, volume.NewMetricsDu(path)}, nil }
func (plugin *emptyDirPlugin) newCleanerInternal(volName string, podUID types.UID, mounter mount.Interface, mountDetector mountDetector) (volume.Cleaner, error) { ed := &emptyDir{ pod: &api.Pod{ObjectMeta: api.ObjectMeta{UID: podUID}}, volName: volName, medium: api.StorageMediumDefault, // might be changed later mounter: mounter, mountDetector: mountDetector, plugin: plugin, MetricsProvider: volume.NewMetricsDu(GetPath(podUID, volName, plugin.host)), } return ed, nil }
func (plugin *secretPlugin) NewUnmounter(volName string, podUID types.UID) (volume.Unmounter, error) { return &secretVolumeUnmounter{ &secretVolume{ volName, podUID, plugin, plugin.host.GetMounter(), plugin.host.GetWriter(), volume.NewCachedMetrics(volume.NewMetricsDu(getPath(podUID, volName, plugin.host))), }, }, nil }
func newRecycler(spec *volume.Spec, host volume.VolumeHost, config volume.VolumeConfig) (volume.Recycler, error) { if spec.PersistentVolume == nil || spec.PersistentVolume.Spec.HostPath == nil { return nil, fmt.Errorf("spec.PersistentVolumeSource.HostPath is nil") } path := spec.PersistentVolume.Spec.HostPath.Path return &hostPathRecycler{ name: spec.Name(), path: path, host: host, config: config, timeout: volume.CalculateTimeoutForVolume(config.RecyclerMinimumTimeout, config.RecyclerTimeoutIncrement, spec.PersistentVolume), MetricsProvider: volume.NewMetricsDu(path), }, nil }
func (plugin *emptyDirPlugin) newMounterInternal(spec *volume.Spec, pod *api.Pod, mounter mount.Interface, mountDetector mountDetector, opts volume.VolumeOptions) (volume.Mounter, error) { medium := api.StorageMediumDefault if spec.Volume.EmptyDir != nil { // Support a non-specified source as EmptyDir. medium = spec.Volume.EmptyDir.Medium } return &emptyDir{ pod: pod, volName: spec.Name(), medium: medium, mounter: mounter, mountDetector: mountDetector, plugin: plugin, MetricsProvider: volume.NewMetricsDu(getPath(pod.UID, spec.Name(), plugin.host)), }, nil }
func (plugin *secretPlugin) NewMounter(spec *volume.Spec, pod *api.Pod, opts volume.VolumeOptions) (volume.Mounter, error) { return &secretVolumeMounter{ secretVolume: &secretVolume{ spec.Name(), pod.UID, plugin, plugin.host.GetMounter(), plugin.host.GetWriter(), volume.NewCachedMetrics(volume.NewMetricsDu(getPath(pod.UID, spec.Name(), plugin.host))), }, source: *spec.Volume.Secret, pod: *pod, opts: &opts, }, nil }
func (plugin *secretPlugin) NewBuilder(spec *volume.Spec, pod *api.Pod, opts volume.VolumeOptions) (volume.Builder, error) { return &secretVolumeBuilder{ secretVolume: &secretVolume{ spec.Name(), pod.UID, plugin, plugin.host.GetMounter(), plugin.host.GetWriter(), volume.NewCachedMetrics(volume.NewMetricsDu(getPathFromHost(plugin.host, pod.UID, spec.Name()))), }, secretName: spec.Volume.Secret.SecretName, pod: *pod, opts: &opts, }, nil }
func (plugin *hostPathPlugin) NewCleaner(volName string, podUID types.UID) (volume.Cleaner, error) { return &hostPathCleaner{&hostPath{ path: "", MetricsProvider: volume.NewMetricsDu(""), }}, nil }