type fcAttacher … var _ … var _ … var _ … var _ … func (plugin *fcPlugin) NewAttacher() (volume.Attacher, error) { … } func (plugin *fcPlugin) NewDeviceMounter() (volume.DeviceMounter, error) { … } func (plugin *fcPlugin) GetDeviceMountRefs(deviceMountPath string) ([]string, error) { … } func (attacher *fcAttacher) Attach(spec *volume.Spec, nodeName types.NodeName) (string, error) { … } func (attacher *fcAttacher) VolumesAreAttached(specs []*volume.Spec, nodeName types.NodeName) (map[*volume.Spec]bool, error) { … } func (attacher *fcAttacher) WaitForAttach(spec *volume.Spec, devicePath string, _ *v1.Pod, timeout time.Duration) (string, error) { … } func (attacher *fcAttacher) GetDeviceMountPath( spec *volume.Spec) (string, error) { … } func (attacher *fcAttacher) MountDevice(spec *volume.Spec, devicePath string, deviceMountPath string, mountArgs volume.DeviceMounterArgs) error { … } type fcDetacher … var _ … var _ … func (plugin *fcPlugin) NewDetacher() (volume.Detacher, error) { … } func (plugin *fcPlugin) NewDeviceUnmounter() (volume.DeviceUnmounter, error) { … } func (detacher *fcDetacher) Detach(volumeName string, nodeName types.NodeName) error { … } func (detacher *fcDetacher) UnmountDevice(deviceMountPath string) error { … } func (plugin *fcPlugin) CanAttach(spec *volume.Spec) (bool, error) { … } func (plugin *fcPlugin) CanDeviceMount(spec *volume.Spec) (bool, error) { … } func volumeSpecToMounter(spec *volume.Spec, host volume.VolumeHost) (*fcDiskMounter, error) { … } func volumeSpecToUnmounter(mounter mount.Interface, host volume.VolumeHost) *fcDiskUnmounter { … }