From 42b2fe65f298b390ac5c31acd5eea59e572c6a77 Mon Sep 17 00:00:00 2001 From: xixi Date: Wed, 30 Aug 2023 15:51:58 +0800 Subject: [PATCH] quota: override volume attributes by PV.Spec.Capacity (#733) * quota: override volume attributes by PV.Spec.Capacity Signed-off-by: xixi --- pkg/driver/node.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkg/driver/node.go b/pkg/driver/node.go index 12641e6818..e17ec4d230 100644 --- a/pkg/driver/node.go +++ b/pkg/driver/node.go @@ -26,6 +26,7 @@ import ( "github.com/container-storage-interface/spec/lib/go/csi" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + k8serrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/klog" k8sexec "k8s.io/utils/exec" "k8s.io/utils/mount" @@ -138,6 +139,15 @@ func (d *nodeService) NodePublishVolume(ctx context.Context, req *csi.NodePublis if err != nil { return nil, status.Errorf(codes.Internal, "invalid capacity %s: %v", cap, err) } + if d.k8sClient != nil { + pv, err := d.k8sClient.GetPersistentVolume(ctx, volumeID) + if err != nil && !k8serrors.IsNotFound(err) { + return nil, status.Errorf(codes.Internal, "get pv %s: %v", volumeID, err) + } + if err == nil && pv != nil { + capacity = pv.Spec.Capacity.Storage().Value() + } + } settings, err := d.juicefs.Settings(ctx, volumeID, secrets, volCtx, options) if err != nil { return nil, status.Errorf(codes.Internal, "get settings: %v", err)