@@ -74,44 +74,39 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
7474
7575 reqCapacity := req .GetCapacityRange ().GetRequiredBytes ()
7676 parameters := req .GetParameters ()
77+ // Validate parameters (case-insensitive).
78+ for k := range parameters {
79+ switch strings .ToLower (k ) {
80+ case paramSource :
81+ // no op
82+ default :
83+ return nil , fmt .Errorf ("invalid parameter %s in storage class" , k )
84+ }
85+ }
86+
7787 smbVol , err := d .newSMBVolume (name , reqCapacity , parameters )
7888 if err != nil {
7989 return nil , status .Error (codes .InvalidArgument , err .Error ())
8090 }
8191
82- // check if create SubDir is enable in storage class parameters
83- createSubDir := true
84- for k , v := range parameters {
85- switch strings .ToLower (k ) {
86- case createSubDirField :
87- if v == "false" {
88- createSubDir = false
89- }
90- }
91- }
92-
9392 secrets := req .GetSecrets ()
94- if createSubDir {
95- if len (secrets ) > 0 {
96- // Mount smb base share so we can create a subdirectory
97- if err := d .internalMount (ctx , smbVol , volCap , secrets ); err != nil {
98- return nil , status .Errorf (codes .Internal , "failed to mount smb server: %v" , err .Error ())
99- }
100- defer func () {
101- if err = d .internalUnmount (ctx , smbVol ); err != nil {
102- klog .Warningf ("failed to unmount smb server: %v" , err .Error ())
103- }
104- }()
105- // Create subdirectory under base-dir
106- // TODO: revisit permissions
107- internalVolumePath := d .getInternalVolumePath (smbVol )
108- if err = os .Mkdir (internalVolumePath , 0777 ); err != nil && ! os .IsExist (err ) {
109- return nil , status .Errorf (codes .Internal , "failed to make subdirectory: %v" , err .Error ())
93+ if len (secrets ) > 0 {
94+ // Mount smb base share so we can create a subdirectory
95+ if err := d .internalMount (ctx , smbVol , volCap , secrets ); err != nil {
96+ return nil , status .Errorf (codes .Internal , "failed to mount smb server: %v" , err .Error ())
97+ }
98+ defer func () {
99+ if err = d .internalUnmount (ctx , smbVol ); err != nil {
100+ klog .Warningf ("failed to unmount smb server: %v" , err .Error ())
110101 }
111- parameters [sourceField ] = parameters [sourceField ] + "/" + smbVol .subDir
112- } else {
113- klog .Warningf ("CreateVolume: Volume secrets should be provided when createSubDir is true" )
102+ }()
103+ // Create subdirectory under base-dir
104+ // TODO: revisit permissions
105+ internalVolumePath := d .getInternalVolumePath (smbVol )
106+ if err = os .Mkdir (internalVolumePath , 0777 ); err != nil && ! os .IsExist (err ) {
107+ return nil , status .Errorf (codes .Internal , "failed to make subdirectory: %v" , err .Error ())
114108 }
109+ parameters [sourceField ] = parameters [sourceField ] + "/" + smbVol .subDir
115110 }
116111 return & csi.CreateVolumeResponse {Volume : d .smbVolToCSI (smbVol , parameters )}, nil
117112}
@@ -147,8 +142,6 @@ func (d *Driver) DeleteVolume(ctx context.Context, req *csi.DeleteVolumeRequest)
147142 if err = os .RemoveAll (internalVolumePath ); err != nil {
148143 return nil , status .Errorf (codes .Internal , "failed to delete subdirectory: %v" , err .Error ())
149144 }
150- } else {
151- klog .Warningf ("DeleteVolume: Volume secrets should be provided" )
152145 }
153146
154147 return & csi.DeleteVolumeResponse {}, nil
0 commit comments