add option for default handling, use 'delete' as default

This commit is contained in:
Lukas Wöhrl 2023-03-20 22:24:47 +01:00
parent 9607c61390
commit 164f97734b
4 changed files with 38 additions and 25 deletions

View File

@ -31,6 +31,7 @@ var (
mountPermissions = flag.Uint64("mount-permissions", 0, "mounted folder permissions")
driverName = flag.String("drivername", nfs.DefaultDriverName, "name of the driver")
workingMountDir = flag.String("working-mount-dir", "/tmp", "working directory for provisioner to mount nfs shares temporarily")
defaultOnDeletePolicy = flag.String("default-ondelete-policy", "delete", "default policy for deleting subdirectories when deleting a volume")
)
func init() {
@ -55,6 +56,7 @@ func handle() {
Endpoint: *endpoint,
MountPermissions: *mountPermissions,
WorkingMountDir: *workingMountDir,
DefaultOnDeletePolicy: *defaultOnDeletePolicy,
}
d := nfs.NewDriver(&driverOptions)
d.Run(false)

View File

@ -99,6 +99,7 @@ func (cs *ControllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol
case paramServer:
case paramShare:
case paramSubDir:
case paramOnDelete:
case pvcNamespaceKey:
case pvcNameKey:
case pvNameKey:
@ -115,7 +116,7 @@ func (cs *ControllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol
}
}
nfsVol, err := newNFSVolume(name, reqCapacity, parameters)
nfsVol, err := newNFSVolume(name, reqCapacity, parameters, cs.Driver.defaultOnDeletePolicy)
if err != nil {
return nil, status.Error(codes.InvalidArgument, err.Error())
}
@ -190,6 +191,10 @@ func (cs *ControllerServer) DeleteVolume(ctx context.Context, req *csi.DeleteVol
}
}
if nfsVol.onDelete == "" {
nfsVol.onDelete = cs.Driver.defaultOnDeletePolicy
}
deleteSubdirOnVolumeDelete := nfsVol.onDelete != "retain"
if deleteSubdirOnVolumeDelete {
@ -377,7 +382,7 @@ func (cs *ControllerServer) copyVolume(ctx context.Context, req *csi.CreateVolum
}
// newNFSVolume Convert VolumeCreate parameters to an nfsVolume
func newNFSVolume(name string, size int64, params map[string]string) (*nfsVolume, error) {
func newNFSVolume(name string, size int64, params map[string]string, defaultOnDeletePolicy string) (*nfsVolume, error) {
var server, baseDir, subDir, onDelete string
subDirReplaceMap := map[string]string{}
@ -421,7 +426,11 @@ func newNFSVolume(name string, size int64, params map[string]string) (*nfsVolume
}
if onDelete == "" {
if defaultOnDeletePolicy == "" {
vol.onDelete = "delete"
} else {
vol.onDelete = defaultOnDeletePolicy
}
} else {
if (onDelete != "retain") && (onDelete != "delete") {
return nil, fmt.Errorf("%v is not a valid value for %v", onDelete, paramOnDelete)

View File

@ -661,7 +661,7 @@ func TestNewNFSVolume(t *testing.T) {
}
for _, test := range cases {
vol, err := newNFSVolume(test.name, test.size, test.params)
vol, err := newNFSVolume(test.name, test.size, test.params, "delete")
if !reflect.DeepEqual(err, test.expectErr) {
t.Errorf("[test: %s] Unexpected error: %v, expected error: %v", test.desc, err, test.expectErr)
}

View File

@ -32,6 +32,7 @@ type DriverOptions struct {
Endpoint string
MountPermissions uint64
WorkingMountDir string
DefaultOnDeletePolicy string
}
type Driver struct {
@ -41,6 +42,7 @@ type Driver struct {
endpoint string
mountPermissions uint64
workingMountDir string
defaultOnDeletePolicy string
//ids *identityServer
ns *NodeServer