@@ -22,10 +22,11 @@ import (
22
22
"fmt"
23
23
"os"
24
24
"path/filepath"
25
+ "strconv"
25
26
"strings"
26
27
27
- diskapi "github.com/kubernetes-csi/csi-proxy/client/api/disk/v1beta1 "
28
- diskclient "github.com/kubernetes-csi/csi-proxy/client/groups/disk/v1beta1 "
28
+ diskapi "github.com/kubernetes-csi/csi-proxy/client/api/disk/v1beta2 "
29
+ diskclient "github.com/kubernetes-csi/csi-proxy/client/groups/disk/v1beta2 "
29
30
30
31
fsapi "github.com/kubernetes-csi/csi-proxy/client/api/filesystem/v1beta1"
31
32
fsclient "github.com/kubernetes-csi/csi-proxy/client/groups/filesystem/v1beta1"
@@ -159,6 +160,25 @@ func (mounter *CSIProxyMounter) UnmountDevice(target string) error {
159
160
if err != nil {
160
161
return err
161
162
}
163
+
164
+ // Set disk to offline mode to have a clean state
165
+ getDiskNumberRequest := & volumeapi.VolumeDiskNumberRequest {
166
+ VolumeId : volumeId ,
167
+ }
168
+ id , err := mounter .VolumeClient .GetVolumeDiskNumber (context .Background (), getDiskNumberRequest )
169
+ if err != nil {
170
+ return err
171
+ }
172
+ diskId := id .GetDiskNumber ()
173
+ klog .V (4 ).Infof ("get disk number %d from volume %s" , diskId , volumeId )
174
+ setDiskRequest := & diskapi.SetAttachStateRequest {
175
+ DiskID : strconv .FormatInt (diskId , 10 ),
176
+ IsOnline : false ,
177
+ }
178
+ if _ , err = mounter .DiskClient .SetAttachState (context .Background (), setDiskRequest ); err != nil {
179
+ return err
180
+ }
181
+
162
182
return nil
163
183
}
164
184
@@ -203,6 +223,17 @@ func (mounter *CSIProxyMounter) FormatAndMount(source string, target string, fst
203
223
if err != nil {
204
224
return err
205
225
}
226
+
227
+ // make sure disk is online. if disk is already online, this call should also succeed.
228
+ setDiskRequest := & diskapi.SetAttachStateRequest {
229
+ DiskID : source ,
230
+ IsOnline : true ,
231
+ }
232
+ _ , err = mounter .DiskClient .SetAttachState (context .Background (), setDiskRequest )
233
+ if err != nil {
234
+ return err
235
+ }
236
+
206
237
volumeIDsRequest := & volumeapi.ListVolumesOnDiskRequest {
207
238
DiskId : source ,
208
239
}
0 commit comments