package util import ( "github.com/container-storage-interface/spec/lib/go/csi" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) // ValidateNodeStageVolumeRequest validates the node stage request. func ValidateNodeStageVolumeRequest(req *csi.NodeStageVolumeRequest) error { if req.GetVolumeCapability() == nil { return status.Error(codes.InvalidArgument, "volume capability missing in request") } if req.GetVolumeId() == "" { return status.Error(codes.InvalidArgument, "volume ID missing in request") } if req.GetStagingTargetPath() == "" { return status.Error(codes.InvalidArgument, "staging target path missing in request") } if req.GetSecrets() == nil || len(req.GetSecrets()) == 0 { return status.Error(codes.InvalidArgument, "stage secrets cannot be nil or empty") } // validate stagingpath exists ok := checkDirExists(req.GetStagingTargetPath()) if !ok { return status.Error(codes.InvalidArgument, "staging path does not exists on node") } return nil } // ValidateNodeUnstageVolumeRequest validates the node unstage request. func ValidateNodeUnstageVolumeRequest(req *csi.NodeUnstageVolumeRequest) error { if req.GetVolumeId() == "" { return status.Error(codes.InvalidArgument, "volume ID missing in request") } if req.GetStagingTargetPath() == "" { return status.Error(codes.InvalidArgument, "staging target path missing in request") } return nil } // ValidateNodePublishVolumeRequest validates the node publish request. func ValidateNodePublishVolumeRequest(req *csi.NodePublishVolumeRequest) error { if req.GetVolumeCapability() == nil { return status.Error(codes.InvalidArgument, "volume capability missing in request") } if req.GetVolumeId() == "" { return status.Error(codes.InvalidArgument, "volume ID missing in request") } if req.GetTargetPath() == "" { return status.Error(codes.InvalidArgument, "target path missing in request") } if req.GetStagingTargetPath() == "" { return status.Error(codes.InvalidArgument, "staging target path missing in request") } return nil } // ValidateNodeUnpublishVolumeRequest validates the node unpublish request. func ValidateNodeUnpublishVolumeRequest(req *csi.NodeUnpublishVolumeRequest) error { if req.GetVolumeId() == "" { return status.Error(codes.InvalidArgument, "volume ID missing in request") } if req.GetTargetPath() == "" { return status.Error(codes.InvalidArgument, "target path missing in request") } return nil }