From cb330e63c4f27f5a18e2681a71861597058d312c Mon Sep 17 00:00:00 2001 From: Jan Wozniak Date: Mon, 5 Jun 2023 14:05:28 +0200 Subject: [PATCH] bugfix: correct snapshot path when using share parameter --- pkg/nfs/controllerserver.go | 16 ++++------------ pkg/nfs/controllerserver_test.go | 4 ++-- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/pkg/nfs/controllerserver.go b/pkg/nfs/controllerserver.go index a1911ac04..90f5706a1 100644 --- a/pkg/nfs/controllerserver.go +++ b/pkg/nfs/controllerserver.go @@ -78,18 +78,10 @@ type nfsSnapshot struct { src string } -func (snap nfsSnapshot) archiveSubPath() string { - return snap.uuid -} - func (snap nfsSnapshot) archiveName() string { return fmt.Sprintf("%v.tar.gz", snap.src) } -func (snap nfsSnapshot) archivePath() string { - return filepath.Join(snap.archiveSubPath(), snap.archiveName()) -} - // Ordering of elements in the CSI volume id. // ID is of the form {server}/{baseDir}/{subDir}. // TODO: This volume id format limits baseDir and @@ -331,7 +323,7 @@ func (cs *ControllerServer) CreateSnapshot(ctx context.Context, req *csi.CreateS klog.Warningf("failed to unmount snapshot nfs server: %v", err) } }() - snapInternalVolPath := filepath.Join(getInternalVolumePath(cs.Driver.workingMountDir, snapVol), snapshot.archiveSubPath()) + snapInternalVolPath := getInternalVolumePath(cs.Driver.workingMountDir, snapVol) if err = os.MkdirAll(snapInternalVolPath, 0777); err != nil { return nil, status.Errorf(codes.Internal, "failed to make subdirectory: %v", err) } @@ -409,7 +401,7 @@ func (cs *ControllerServer) DeleteSnapshot(ctx context.Context, req *csi.DeleteS }() // delete snapshot archive - internalVolumePath := filepath.Join(getInternalVolumePath(cs.Driver.workingMountDir, vol), snap.archiveSubPath()) + internalVolumePath := getInternalVolumePath(cs.Driver.workingMountDir, vol) klog.V(2).Infof("Removing snapshot archive at %v", internalVolumePath) if err = os.RemoveAll(internalVolumePath); err != nil { return nil, status.Errorf(codes.Internal, "failed to delete subdirectory: %v", err.Error()) @@ -503,7 +495,7 @@ func (cs *ControllerServer) copyFromSnapshot(ctx context.Context, req *csi.Creat }() // untar snapshot archive to dst path - snapPath := filepath.Join(getInternalVolumePath(cs.Driver.workingMountDir, snapVol), snap.archivePath()) + snapPath := filepath.Join(getInternalVolumePath(cs.Driver.workingMountDir, snapVol), snap.archiveName()) dstPath := getInternalVolumePath(cs.Driver.workingMountDir, dstVol) klog.V(2).Infof("copy volume from snapshot %v -> %v", snapPath, dstPath) out, err := exec.Command("tar", "-xzvf", snapPath, "-C", dstPath).CombinedOutput() @@ -803,7 +795,7 @@ func volumeFromSnapshot(snap *nfsSnapshot) *nfsVolume { id: snap.id, server: snap.server, baseDir: snap.baseDir, - subDir: snap.baseDir, + subDir: snap.uuid, uuid: snap.uuid, } } diff --git a/pkg/nfs/controllerserver_test.go b/pkg/nfs/controllerserver_test.go index 8e5d43331..6c2c789da 100644 --- a/pkg/nfs/controllerserver_test.go +++ b/pkg/nfs/controllerserver_test.go @@ -742,10 +742,10 @@ func TestCopyVolume(t *testing.T) { uuid: "dst-pv-name", }, prepare: func() error { - if err := os.MkdirAll("/tmp/snapshot-name/share/snapshot-name/", 0777); err != nil { + if err := os.MkdirAll("/tmp/snapshot-name/snapshot-name", 0777); err != nil { return err } - file, err := os.Create("/tmp/snapshot-name/share/snapshot-name/src-pv-name.tar.gz") + file, err := os.Create("/tmp/snapshot-name/snapshot-name/src-pv-name.tar.gz") if err != nil { return err }