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