From 9b3e1cd1746a85ba257404446372f2d32c72ffa3 Mon Sep 17 00:00:00 2001 From: andyzhangx Date: Fri, 7 Jan 2022 03:57:31 +0000 Subject: [PATCH] fix: ValidateVolumeCapabilities --- .github/workflows/static.yaml | 2 +- pkg/nfs/controllerserver.go | 8 +++-- pkg/nfs/controllerserver_test.go | 50 ++++++++++++++------------------ 3 files changed, 28 insertions(+), 32 deletions(-) diff --git a/.github/workflows/static.yaml b/.github/workflows/static.yaml index 1d887fb2..9efaaa44 100644 --- a/.github/workflows/static.yaml +++ b/.github/workflows/static.yaml @@ -12,7 +12,7 @@ jobs: - name: Run linter uses: golangci/golangci-lint-action@v2 with: - version: v1.29 + version: v1.31 args: -E=gofmt,deadcode,unused,varcheck,ineffassign,golint,misspell --timeout=30m0s verify-helm: name: Verify Helm diff --git a/pkg/nfs/controllerserver.go b/pkg/nfs/controllerserver.go index b14af9f0..446033b3 100644 --- a/pkg/nfs/controllerserver.go +++ b/pkg/nfs/controllerserver.go @@ -178,8 +178,12 @@ func (cs *ControllerServer) ValidateVolumeCapabilities(ctx context.Context, req return nil, status.Error(codes.InvalidArgument, "Volume capabilities missing in request") } - // supports all AccessModes, no need to check capabilities here - return &csi.ValidateVolumeCapabilitiesResponse{Message: ""}, nil + return &csi.ValidateVolumeCapabilitiesResponse{ + Confirmed: &csi.ValidateVolumeCapabilitiesResponse_Confirmed{ + VolumeCapabilities: req.GetVolumeCapabilities(), + }, + Message: "", + }, nil } func (cs *ControllerServer) ListVolumes(ctx context.Context, req *csi.ListVolumesRequest) (*csi.ListVolumesResponse, error) { diff --git a/pkg/nfs/controllerserver_test.go b/pkg/nfs/controllerserver_test.go index 664529bc..d7fb6309 100644 --- a/pkg/nfs/controllerserver_test.go +++ b/pkg/nfs/controllerserver_test.go @@ -294,6 +294,17 @@ func TestDeleteVolume(t *testing.T) { } func TestValidateVolumeCapabilities(t *testing.T) { + capabilities := []*csi.VolumeCapability{ + { + AccessType: &csi.VolumeCapability_Mount{ + Mount: &csi.VolumeCapability_MountVolume{}, + }, + AccessMode: &csi.VolumeCapability_AccessMode{ + Mode: csi.VolumeCapability_AccessMode_MULTI_NODE_MULTI_WRITER, + }, + }, + } + cases := []struct { desc string req *csi.ValidateVolumeCapabilitiesRequest @@ -315,37 +326,23 @@ func TestValidateVolumeCapabilities(t *testing.T) { { desc: "valid request", req: &csi.ValidateVolumeCapabilitiesRequest{ - VolumeId: testVolumeID, - VolumeCapabilities: []*csi.VolumeCapability{ - { - AccessType: &csi.VolumeCapability_Mount{ - Mount: &csi.VolumeCapability_MountVolume{}, - }, - AccessMode: &csi.VolumeCapability_AccessMode{ - Mode: csi.VolumeCapability_AccessMode_MULTI_NODE_MULTI_WRITER, - }, - }, - }, + VolumeId: testVolumeID, + VolumeCapabilities: capabilities, + }, + resp: &csi.ValidateVolumeCapabilitiesResponse{ + Confirmed: &csi.ValidateVolumeCapabilitiesResponse_Confirmed{VolumeCapabilities: capabilities}, }, - resp: &csi.ValidateVolumeCapabilitiesResponse{Message: ""}, expectedErr: nil, }, { desc: "valid request with newTestVolumeID", req: &csi.ValidateVolumeCapabilitiesRequest{ - VolumeId: newTestVolumeID, - VolumeCapabilities: []*csi.VolumeCapability{ - { - AccessType: &csi.VolumeCapability_Mount{ - Mount: &csi.VolumeCapability_MountVolume{}, - }, - AccessMode: &csi.VolumeCapability_AccessMode{ - Mode: csi.VolumeCapability_AccessMode_MULTI_NODE_MULTI_WRITER, - }, - }, - }, + VolumeId: newTestVolumeID, + VolumeCapabilities: capabilities, + }, + resp: &csi.ValidateVolumeCapabilitiesResponse{ + Confirmed: &csi.ValidateVolumeCapabilitiesResponse_Confirmed{VolumeCapabilities: capabilities}, }, - resp: &csi.ValidateVolumeCapabilitiesResponse{Message: ""}, expectedErr: nil, }, } @@ -353,13 +350,8 @@ func TestValidateVolumeCapabilities(t *testing.T) { for _, test := range cases { test := test //pin t.Run(test.desc, func(t *testing.T) { - // Setup cs := initTestController(t) - - // Run resp, err := cs.ValidateVolumeCapabilities(context.TODO(), test.req) - - // Verify if test.expectedErr == nil && err != nil { t.Errorf("test %q failed: %v", test.desc, err) }