cleanup: added helper func isNotMountPoint

Added helper func isNotMountPoint to check mountPoint,
validate error and reduce complexity of NodeStageVolume.

Signed-off-by: Rakshith R <rar@redhat.com>
This commit is contained in:
Rakshith R 2021-06-15 17:55:29 +05:30 committed by mergify[bot]
parent 82a204bfd3
commit 404e011ae9
2 changed files with 14 additions and 6 deletions

View File

@ -154,14 +154,11 @@ func (ns *NodeServer) NodeStageVolume(ctx context.Context, req *csi.NodeStageVol
} }
} }
var isNotMnt bool
// check if stagingPath is already mounted // check if stagingPath is already mounted
isNotMnt, err = mount.IsNotMountPoint(ns.mounter, stagingTargetPath) isNotMnt, err := isNotMountPoint(ns.mounter, stagingTargetPath)
if err != nil && !os.IsNotExist(err) { if err != nil {
return nil, status.Error(codes.Internal, err.Error()) return nil, status.Error(codes.Internal, err.Error())
} } else if !isNotMnt {
if !isNotMnt {
util.DebugLog(ctx, "rbd: volume %s is already mounted to %s, skipping", volID, stagingTargetPath) util.DebugLog(ctx, "rbd: volume %s is already mounted to %s, skipping", volID, stagingTargetPath)
return &csi.NodeStageVolumeResponse{}, nil return &csi.NodeStageVolumeResponse{}, nil
} }

View File

@ -38,6 +38,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/sets"
"k8s.io/cloud-provider/volume/helpers" "k8s.io/cloud-provider/volume/helpers"
mount "k8s.io/mount-utils"
) )
const ( const (
@ -455,6 +456,16 @@ func checkImageFeatures(imageFeatures string, ok, static bool) bool {
return static && (!ok || imageFeatures == "") return static && (!ok || imageFeatures == "")
} }
// isNotMountPoint checks whether MountPoint does not exists and
// also discards error indicating mountPoint exists.
func isNotMountPoint(mounter mount.Interface, stagingTargetPath string) (bool, error) {
isNotMnt, err := mount.IsNotMountPoint(mounter, stagingTargetPath)
if os.IsNotExist(err) {
err = nil
}
return isNotMnt, err
}
// addRbdManagerTask adds a ceph manager task to execute command // addRbdManagerTask adds a ceph manager task to execute command
// asynchronously. If command is not found returns a bool set to false // asynchronously. If command is not found returns a bool set to false
// example arg ["trash", "remove","pool/image"]. // example arg ["trash", "remove","pool/image"].