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

@ -26,11 +26,12 @@ import (
)
var (
endpoint = flag.String("endpoint", "unix://tmp/csi.sock", "CSI endpoint")
nodeID = flag.String("nodeid", "", "node id")
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")
endpoint = flag.String("endpoint", "unix://tmp/csi.sock", "CSI endpoint")
nodeID = flag.String("nodeid", "", "node id")
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() {
@ -50,11 +51,12 @@ func main() {
func handle() {
driverOptions := nfs.DriverOptions{
NodeID: *nodeID,
DriverName: *driverName,
Endpoint: *endpoint,
MountPermissions: *mountPermissions,
WorkingMountDir: *workingMountDir,
NodeID: *nodeID,
DriverName: *driverName,
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 == "" {
vol.onDelete = "delete"
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

@ -27,20 +27,22 @@ import (
// DriverOptions defines driver parameters specified in driver deployment
type DriverOptions struct {
NodeID string
DriverName string
Endpoint string
MountPermissions uint64
WorkingMountDir string
NodeID string
DriverName string
Endpoint string
MountPermissions uint64
WorkingMountDir string
DefaultOnDeletePolicy string
}
type Driver struct {
name string
nodeID string
version string
endpoint string
mountPermissions uint64
workingMountDir string
name string
nodeID string
version string
endpoint string
mountPermissions uint64
workingMountDir string
defaultOnDeletePolicy string
//ids *identityServer
ns *NodeServer