From 24515b509fb2f20d9bdfbb280f7c2274738d1056 Mon Sep 17 00:00:00 2001 From: Rakshith R Date: Tue, 10 May 2022 14:56:22 +0530 Subject: [PATCH] nfs: add support for create & delete snapshot This commits adds support for creation and deletion of nfs snapshots based on cephfs. Signed-off-by: Rakshith R --- internal/nfs/controller/controllerserver.go | 17 +++++++++++++++++ internal/nfs/driver/driver.go | 1 + 2 files changed, 18 insertions(+) diff --git a/internal/nfs/controller/controllerserver.go b/internal/nfs/controller/controllerserver.go index 0a46e9a53..3c70305ac 100644 --- a/internal/nfs/controller/controllerserver.go +++ b/internal/nfs/controller/controllerserver.go @@ -46,6 +46,7 @@ type Server struct { func NewControllerServer(d *csicommon.CSIDriver) *Server { // global instance of the volume journal, yuck store.VolJournal = journal.NewCSIVolumeJournalWithNamespace(cephfs.CSIInstanceID, fsutil.RadosNamespace) + store.SnapJournal = journal.NewCSISnapshotJournalWithNamespace(cephfs.CSIInstanceID, fsutil.RadosNamespace) return &Server{ backendServer: cephfs.NewControllerServer(d), @@ -159,3 +160,19 @@ func (cs *Server) ControllerExpandVolume( req *csi.ControllerExpandVolumeRequest) (*csi.ControllerExpandVolumeResponse, error) { return cs.backendServer.ControllerExpandVolume(ctx, req) } + +// CreateSnapshot calls the backend (CephFS) procedure to create snapshot. +// There is no interaction with the NFS-server needed for snapshot creation. +func (cs *Server) CreateSnapshot( + ctx context.Context, + req *csi.CreateSnapshotRequest) (*csi.CreateSnapshotResponse, error) { + return cs.backendServer.CreateSnapshot(ctx, req) +} + +// DeleteSnapshot calls the backend (CephFS) procedure to delete snapshot. +// There is no interaction with the NFS-server needed for snapshot creation. +func (cs *Server) DeleteSnapshot( + ctx context.Context, + req *csi.DeleteSnapshotRequest) (*csi.DeleteSnapshotResponse, error) { + return cs.backendServer.DeleteSnapshot(ctx, req) +} diff --git a/internal/nfs/driver/driver.go b/internal/nfs/driver/driver.go index 7004b8b12..088e83b16 100644 --- a/internal/nfs/driver/driver.go +++ b/internal/nfs/driver/driver.go @@ -47,6 +47,7 @@ func (fs *Driver) Run(conf *util.Config) { csi.ControllerServiceCapability_RPC_CREATE_DELETE_VOLUME, csi.ControllerServiceCapability_RPC_SINGLE_NODE_MULTI_WRITER, csi.ControllerServiceCapability_RPC_EXPAND_VOLUME, + csi.ControllerServiceCapability_RPC_CREATE_DELETE_SNAPSHOT, }) // VolumeCapabilities are validated by the CephFS Controller cd.AddVolumeCapabilityAccessModes([]csi.VolumeCapability_AccessMode_Mode{