mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-12-07 18:06:21 +00:00
Squashed commit of the following:
commit 1b3ae27e7af577372d5aaaf28ea401eb33d1c4df Author: weizhichen <weizhichen@microsoft.com> Date: Thu Mar 9 08:39:04 2023 +0000 fix commit 566e139308e3cec4c9d4765eb4ccc3a735346c2e Author: weizhichen <weizhichen@microsoft.com> Date: Thu Mar 9 08:36:32 2023 +0000 fix unit test commit 13a58ebd25b824dcf854a132e9ac474c8296f0bf Author: weizhichen <weizhichen@microsoft.com> Date: Thu Mar 2 03:32:39 2023 +0000 add unit test commit c984e36e37c41bbef8aec46fe3fe81ab1c6a2521 Author: weizhichen <weizhichen@microsoft.com> Date: Tue Feb 28 15:25:56 2023 +0000 fix imports commit 58ec617e0ff1fbd209ca0af3237017679c3c0ad7 Author: weizhichen <weizhichen@microsoft.com> Date: Tue Feb 28 15:24:21 2023 +0000 delete CheckVolumeExistenceOperation commit 0d8cf0caa78bdf1f1f84ce011c4cc0e0de0e8707 Author: weizhichen <weizhichen@microsoft.com> Date: Tue Feb 28 14:29:37 2023 +0000 fix 111933
This commit is contained in:
@@ -28,7 +28,6 @@ import (
|
||||
"github.com/go-logr/logr"
|
||||
|
||||
"k8s.io/klog/v2"
|
||||
"k8s.io/mount-utils"
|
||||
|
||||
v1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
@@ -38,7 +37,6 @@ import (
|
||||
"k8s.io/kubernetes/pkg/volume/util/hostutil"
|
||||
"k8s.io/kubernetes/pkg/volume/util/nestedpendingoperations"
|
||||
volumetypes "k8s.io/kubernetes/pkg/volume/util/types"
|
||||
"k8s.io/kubernetes/pkg/volume/util/volumepathhandler"
|
||||
)
|
||||
|
||||
// OperationExecutor defines a set of operations for attaching, detaching,
|
||||
@@ -151,8 +149,6 @@ type OperationExecutor interface {
|
||||
ExpandInUseVolume(volumeToMount VolumeToMount, actualStateOfWorld ActualStateOfWorldMounterUpdater, currentSize resource.Quantity) error
|
||||
// ReconstructVolumeOperation construct a new volumeSpec and returns it created by plugin
|
||||
ReconstructVolumeOperation(volumeMode v1.PersistentVolumeMode, plugin volume.VolumePlugin, mapperPlugin volume.BlockVolumePlugin, uid types.UID, podName volumetypes.UniquePodName, volumeSpecName string, volumePath string, pluginName string) (volume.ReconstructedVolume, error)
|
||||
// CheckVolumeExistenceOperation checks volume existence
|
||||
CheckVolumeExistenceOperation(volumeSpec *volume.Spec, mountPath, volumeName string, mounter mount.Interface, uniqueVolumeName v1.UniqueVolumeName, podName volumetypes.UniquePodName, podUID types.UID, attachable volume.AttachableVolumePlugin) (bool, error)
|
||||
}
|
||||
|
||||
// NewOperationExecutor returns a new instance of OperationExecutor.
|
||||
@@ -1089,61 +1085,3 @@ func (oe *operationExecutor) ReconstructVolumeOperation(
|
||||
Spec: volumeSpec,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// CheckVolumeExistenceOperation checks mount path directory if volume still exists
|
||||
func (oe *operationExecutor) CheckVolumeExistenceOperation(
|
||||
volumeSpec *volume.Spec,
|
||||
mountPath, volumeName string,
|
||||
mounter mount.Interface,
|
||||
uniqueVolumeName v1.UniqueVolumeName,
|
||||
podName volumetypes.UniquePodName,
|
||||
podUID types.UID,
|
||||
attachable volume.AttachableVolumePlugin) (bool, error) {
|
||||
fsVolume, err := util.CheckVolumeModeFilesystem(volumeSpec)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
// Filesystem Volume case
|
||||
// For attachable volume case, check mount path directory if volume is still existing and mounted.
|
||||
// Return true if volume is mounted.
|
||||
if fsVolume {
|
||||
if attachable != nil {
|
||||
var isNotMount bool
|
||||
var mountCheckErr error
|
||||
if mounter == nil {
|
||||
return false, fmt.Errorf("mounter was not set for a filesystem volume")
|
||||
}
|
||||
if isNotMount, mountCheckErr = mount.IsNotMountPoint(mounter, mountPath); mountCheckErr != nil {
|
||||
return false, fmt.Errorf("could not check whether the volume %q (spec.Name: %q) pod %q (UID: %q) is mounted with: %v",
|
||||
uniqueVolumeName,
|
||||
volumeName,
|
||||
podName,
|
||||
podUID,
|
||||
mountCheckErr)
|
||||
}
|
||||
return !isNotMount, nil
|
||||
}
|
||||
// For non-attachable volume case, skip check and return true without mount point check
|
||||
// since plugins may not have volume mount point.
|
||||
return true, nil
|
||||
}
|
||||
|
||||
// Block Volume case
|
||||
// Check mount path directory if volume still exists, then return true if volume
|
||||
// is there. Either plugin is attachable or non-attachable, the plugin should
|
||||
// have symbolic link associated to raw block device under pod device map
|
||||
// if volume exists.
|
||||
blkutil := volumepathhandler.NewBlockVolumePathHandler()
|
||||
var islinkExist bool
|
||||
var checkErr error
|
||||
if islinkExist, checkErr = blkutil.IsSymlinkExist(mountPath); checkErr != nil {
|
||||
return false, fmt.Errorf("could not check whether the block volume %q (spec.Name: %q) pod %q (UID: %q) is mapped to: %v",
|
||||
uniqueVolumeName,
|
||||
volumeName,
|
||||
podName,
|
||||
podUID,
|
||||
checkErr)
|
||||
}
|
||||
return islinkExist, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user