From d816df4f4226d88651cf14e0d8dbe2065437e7b3 Mon Sep 17 00:00:00 2001 From: Madhu Rajanna Date: Wed, 9 Sep 2020 21:19:01 +0530 Subject: [PATCH] util: add helper to validate ROX request added a helper function to validate is create request for ROX is for volume from source. Signed-off-by: Madhu Rajanna --- internal/util/validate.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/internal/util/validate.go b/internal/util/validate.go index 0a21390e8..81404249b 100644 --- a/internal/util/validate.go +++ b/internal/util/validate.go @@ -78,3 +78,16 @@ func ValidateNodeUnpublishVolumeRequest(req *csi.NodeUnpublishVolumeRequest) err return nil } + +// CheckReadOnlyManyIsSupported checks the request is to create ReadOnlyMany +// volume is from source as empty ReadOnlyMany is not supported. +func CheckReadOnlyManyIsSupported(req *csi.CreateVolumeRequest) error { + for _, cap := range req.GetVolumeCapabilities() { + if m := cap.GetAccessMode().Mode; m == csi.VolumeCapability_AccessMode_MULTI_NODE_READER_ONLY || m == csi.VolumeCapability_AccessMode_SINGLE_NODE_READER_ONLY { + if req.GetVolumeContentSource() == nil { + return status.Error(codes.InvalidArgument, "readOnly accessMode is supported only with content source") + } + } + } + return nil +}