mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-30 15:05:27 +00:00
Merge pull request #35629 from hpcloud/bug/33128-unused-waitfordetach
Automatic merge from submit-queue Remove unused WaitForDetach from Detacher interface and plugins See issue #33128 and PR #33270 We can't rely on the device name provided by OpenStack Cinder, and thus must perform detection based on the drive serial number (aka It's cinder ID) on the kubelet itself. This needs to be removed now, as part of #33128, as the code can't be updated to attempt device detection and fallback through to the Cinder provided deviceName, as detection "fails" when the device is gone, and if cinder has reported a deviceName that another volume has used in relaity, then this will block forever (or until the other, unreleated, volume has been detached)
This commit is contained in:
commit
33dab1d555
@ -245,27 +245,6 @@ func (detacher *awsElasticBlockStoreDetacher) Detach(deviceMountPath string, nod
|
||||
return nil
|
||||
}
|
||||
|
||||
func (detacher *awsElasticBlockStoreDetacher) WaitForDetach(devicePath string, timeout time.Duration) error {
|
||||
ticker := time.NewTicker(checkSleepDuration)
|
||||
defer ticker.Stop()
|
||||
timer := time.NewTimer(timeout)
|
||||
defer timer.Stop()
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-ticker.C:
|
||||
glog.V(5).Infof("Checking device %q is detached.", devicePath)
|
||||
if pathExists, err := volumeutil.PathExists(devicePath); err != nil {
|
||||
return fmt.Errorf("Error checking if device path exists: %v", err)
|
||||
} else if !pathExists {
|
||||
return nil
|
||||
}
|
||||
case <-timer.C:
|
||||
return fmt.Errorf("Timeout reached; PD Device %v is still attached", devicePath)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (detacher *awsElasticBlockStoreDetacher) UnmountDevice(deviceMountPath string) error {
|
||||
return volumeutil.UnmountPath(deviceMountPath, detacher.mounter)
|
||||
}
|
||||
|
@ -270,20 +270,6 @@ func (detacher *azureDiskDetacher) Detach(diskName string, nodeName types.NodeNa
|
||||
return err
|
||||
}
|
||||
|
||||
// WaitForDetach detects if the disk is detached on the node
|
||||
func (detacher *azureDiskDetacher) WaitForDetach(devicePath string, timeout time.Duration) error {
|
||||
return wait.Poll(checkSleepDuration, timeout, func() (bool, error) {
|
||||
glog.V(4).Infof("Checking device %q is detached.", devicePath)
|
||||
if pathExists, err := util.PathExists(devicePath); err != nil {
|
||||
return false, fmt.Errorf("Error checking if device path exists: %v", err)
|
||||
} else if !pathExists {
|
||||
return true, nil
|
||||
} else {
|
||||
return false, nil
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// UnmountDevice unmounts the volume on the node
|
||||
func (detacher *azureDiskDetacher) UnmountDevice(deviceMountPath string) error {
|
||||
volume := path.Base(deviceMountPath)
|
||||
|
@ -281,27 +281,6 @@ func (detacher *cinderDiskDetacher) Detach(deviceMountPath string, nodeName type
|
||||
return nil
|
||||
}
|
||||
|
||||
func (detacher *cinderDiskDetacher) WaitForDetach(devicePath string, timeout time.Duration) error {
|
||||
ticker := time.NewTicker(checkSleepDuration)
|
||||
defer ticker.Stop()
|
||||
timer := time.NewTimer(timeout)
|
||||
defer timer.Stop()
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-ticker.C:
|
||||
glog.V(5).Infof("Checking device %q is detached.", devicePath)
|
||||
if pathExists, err := volumeutil.PathExists(devicePath); err != nil {
|
||||
return fmt.Errorf("Error checking if device path exists: %v", err)
|
||||
} else if !pathExists {
|
||||
return nil
|
||||
}
|
||||
case <-timer.C:
|
||||
return fmt.Errorf("Timeout reached; PD Device %v is still attached", devicePath)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (detacher *cinderDiskDetacher) UnmountDevice(deviceMountPath string) error {
|
||||
return volumeutil.UnmountPath(deviceMountPath, detacher.mounter)
|
||||
}
|
||||
|
@ -270,27 +270,6 @@ func (detacher *gcePersistentDiskDetacher) Detach(deviceMountPath string, nodeNa
|
||||
return nil
|
||||
}
|
||||
|
||||
func (detacher *gcePersistentDiskDetacher) WaitForDetach(devicePath string, timeout time.Duration) error {
|
||||
ticker := time.NewTicker(checkSleepDuration)
|
||||
defer ticker.Stop()
|
||||
timer := time.NewTimer(timeout)
|
||||
defer timer.Stop()
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-ticker.C:
|
||||
glog.V(5).Infof("Checking device %q is detached.", devicePath)
|
||||
if pathExists, err := volumeutil.PathExists(devicePath); err != nil {
|
||||
return fmt.Errorf("Error checking if device path exists: %v", err)
|
||||
} else if !pathExists {
|
||||
return nil
|
||||
}
|
||||
case <-timer.C:
|
||||
return fmt.Errorf("Timeout reached; PD Device %v is still attached", devicePath)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (detacher *gcePersistentDiskDetacher) UnmountDevice(deviceMountPath string) error {
|
||||
return volumeutil.UnmountPath(deviceMountPath, detacher.host.GetMounter())
|
||||
}
|
||||
|
@ -307,7 +307,6 @@ type FakeVolume struct {
|
||||
AttachCallCount int
|
||||
DetachCallCount int
|
||||
WaitForAttachCallCount int
|
||||
WaitForDetachCallCount int
|
||||
MountDeviceCallCount int
|
||||
UnmountDeviceCallCount int
|
||||
GetDeviceMountPathCallCount int
|
||||
@ -430,13 +429,6 @@ func (fv *FakeVolume) GetDetachCallCount() int {
|
||||
return fv.DetachCallCount
|
||||
}
|
||||
|
||||
func (fv *FakeVolume) WaitForDetach(devicePath string, timeout time.Duration) error {
|
||||
fv.Lock()
|
||||
defer fv.Unlock()
|
||||
fv.WaitForDetachCallCount++
|
||||
return nil
|
||||
}
|
||||
|
||||
func (fv *FakeVolume) UnmountDevice(globalMountPath string) error {
|
||||
fv.Lock()
|
||||
defer fv.Unlock()
|
||||
|
@ -189,11 +189,6 @@ type Detacher interface {
|
||||
// Detach the given device from the node with the given Name.
|
||||
Detach(deviceName string, nodeName types.NodeName) error
|
||||
|
||||
// WaitForDetach blocks until the device is detached from this
|
||||
// node. If the device does not detach within the given timeout
|
||||
// period an error is returned.
|
||||
WaitForDetach(devicePath string, timeout time.Duration) error
|
||||
|
||||
// UnmountDevice unmounts the global mount of the disk. This
|
||||
// should only be called once all bind mounts have been
|
||||
// unmounted.
|
||||
|
@ -251,27 +251,6 @@ func (detacher *vsphereVMDKDetacher) Detach(deviceMountPath string, nodeName typ
|
||||
return nil
|
||||
}
|
||||
|
||||
func (detacher *vsphereVMDKDetacher) WaitForDetach(devicePath string, timeout time.Duration) error {
|
||||
ticker := time.NewTicker(checkSleepDuration)
|
||||
defer ticker.Stop()
|
||||
timer := time.NewTimer(timeout)
|
||||
defer timer.Stop()
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-ticker.C:
|
||||
glog.V(5).Infof("Checking device %q is detached.", devicePath)
|
||||
if pathExists, err := volumeutil.PathExists(devicePath); err != nil {
|
||||
return fmt.Errorf("Error checking if device path exists: %v", err)
|
||||
} else if !pathExists {
|
||||
return nil
|
||||
}
|
||||
case <-timer.C:
|
||||
return fmt.Errorf("Timeout reached; Device %v is still attached", devicePath)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (detacher *vsphereVMDKDetacher) UnmountDevice(deviceMountPath string) error {
|
||||
return volumeutil.UnmountPath(deviceMountPath, detacher.mounter)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user