add option for default handling, use 'delete' as default
This commit is contained in:
parent
9607c61390
commit
164f97734b
@ -26,11 +26,12 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
endpoint = flag.String("endpoint", "unix://tmp/csi.sock", "CSI endpoint")
|
endpoint = flag.String("endpoint", "unix://tmp/csi.sock", "CSI endpoint")
|
||||||
nodeID = flag.String("nodeid", "", "node id")
|
nodeID = flag.String("nodeid", "", "node id")
|
||||||
mountPermissions = flag.Uint64("mount-permissions", 0, "mounted folder permissions")
|
mountPermissions = flag.Uint64("mount-permissions", 0, "mounted folder permissions")
|
||||||
driverName = flag.String("drivername", nfs.DefaultDriverName, "name of the driver")
|
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")
|
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() {
|
func init() {
|
||||||
@ -50,11 +51,12 @@ func main() {
|
|||||||
|
|
||||||
func handle() {
|
func handle() {
|
||||||
driverOptions := nfs.DriverOptions{
|
driverOptions := nfs.DriverOptions{
|
||||||
NodeID: *nodeID,
|
NodeID: *nodeID,
|
||||||
DriverName: *driverName,
|
DriverName: *driverName,
|
||||||
Endpoint: *endpoint,
|
Endpoint: *endpoint,
|
||||||
MountPermissions: *mountPermissions,
|
MountPermissions: *mountPermissions,
|
||||||
WorkingMountDir: *workingMountDir,
|
WorkingMountDir: *workingMountDir,
|
||||||
|
DefaultOnDeletePolicy: *defaultOnDeletePolicy,
|
||||||
}
|
}
|
||||||
d := nfs.NewDriver(&driverOptions)
|
d := nfs.NewDriver(&driverOptions)
|
||||||
d.Run(false)
|
d.Run(false)
|
||||||
|
|||||||
@ -99,6 +99,7 @@ func (cs *ControllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol
|
|||||||
case paramServer:
|
case paramServer:
|
||||||
case paramShare:
|
case paramShare:
|
||||||
case paramSubDir:
|
case paramSubDir:
|
||||||
|
case paramOnDelete:
|
||||||
case pvcNamespaceKey:
|
case pvcNamespaceKey:
|
||||||
case pvcNameKey:
|
case pvcNameKey:
|
||||||
case pvNameKey:
|
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 {
|
if err != nil {
|
||||||
return nil, status.Error(codes.InvalidArgument, err.Error())
|
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"
|
deleteSubdirOnVolumeDelete := nfsVol.onDelete != "retain"
|
||||||
|
|
||||||
if deleteSubdirOnVolumeDelete {
|
if deleteSubdirOnVolumeDelete {
|
||||||
@ -377,7 +382,7 @@ func (cs *ControllerServer) copyVolume(ctx context.Context, req *csi.CreateVolum
|
|||||||
}
|
}
|
||||||
|
|
||||||
// newNFSVolume Convert VolumeCreate parameters to an nfsVolume
|
// 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
|
var server, baseDir, subDir, onDelete string
|
||||||
subDirReplaceMap := map[string]string{}
|
subDirReplaceMap := map[string]string{}
|
||||||
|
|
||||||
@ -421,7 +426,11 @@ func newNFSVolume(name string, size int64, params map[string]string) (*nfsVolume
|
|||||||
}
|
}
|
||||||
|
|
||||||
if onDelete == "" {
|
if onDelete == "" {
|
||||||
vol.onDelete = "delete"
|
if defaultOnDeletePolicy == "" {
|
||||||
|
vol.onDelete = "delete"
|
||||||
|
} else {
|
||||||
|
vol.onDelete = defaultOnDeletePolicy
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (onDelete != "retain") && (onDelete != "delete") {
|
if (onDelete != "retain") && (onDelete != "delete") {
|
||||||
return nil, fmt.Errorf("%v is not a valid value for %v", onDelete, paramOnDelete)
|
return nil, fmt.Errorf("%v is not a valid value for %v", onDelete, paramOnDelete)
|
||||||
|
|||||||
@ -661,7 +661,7 @@ func TestNewNFSVolume(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range cases {
|
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) {
|
if !reflect.DeepEqual(err, test.expectErr) {
|
||||||
t.Errorf("[test: %s] Unexpected error: %v, expected error: %v", test.desc, err, test.expectErr)
|
t.Errorf("[test: %s] Unexpected error: %v, expected error: %v", test.desc, err, test.expectErr)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,20 +27,22 @@ import (
|
|||||||
|
|
||||||
// DriverOptions defines driver parameters specified in driver deployment
|
// DriverOptions defines driver parameters specified in driver deployment
|
||||||
type DriverOptions struct {
|
type DriverOptions struct {
|
||||||
NodeID string
|
NodeID string
|
||||||
DriverName string
|
DriverName string
|
||||||
Endpoint string
|
Endpoint string
|
||||||
MountPermissions uint64
|
MountPermissions uint64
|
||||||
WorkingMountDir string
|
WorkingMountDir string
|
||||||
|
DefaultOnDeletePolicy string
|
||||||
}
|
}
|
||||||
|
|
||||||
type Driver struct {
|
type Driver struct {
|
||||||
name string
|
name string
|
||||||
nodeID string
|
nodeID string
|
||||||
version string
|
version string
|
||||||
endpoint string
|
endpoint string
|
||||||
mountPermissions uint64
|
mountPermissions uint64
|
||||||
workingMountDir string
|
workingMountDir string
|
||||||
|
defaultOnDeletePolicy string
|
||||||
|
|
||||||
//ids *identityServer
|
//ids *identityServer
|
||||||
ns *NodeServer
|
ns *NodeServer
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user