Skip to content

Commit 988f3af

Browse files
authored
Merge pull request #661 from jingxu97/nov/diskonline
Add disk online/offline into Stage/Unstage volumes
2 parents bc7e306 + c988802 commit 988f3af

File tree

8 files changed

+1261
-4
lines changed

8 files changed

+1261
-4
lines changed

deploy/kubernetes/base/node_windows/node.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -83,3 +83,5 @@ spec:
8383
hostPath:
8484
path: \var\lib\kubelet\plugins\pd.csi.storage.gke.io
8585
type: DirectoryOrCreate
86+
tolerations:
87+
- operator: Exists

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ require (
99
github.com/golang/protobuf v1.4.2
1010
github.com/google/uuid v1.1.1
1111
github.com/hashicorp/go-multierror v1.0.0 // indirect
12-
github.com/kubernetes-csi/csi-proxy/client v0.2.1
12+
github.com/kubernetes-csi/csi-proxy/client v0.2.2
1313
github.com/kubernetes-csi/csi-test/v3 v3.0.0
1414
github.com/onsi/ginkgo v1.11.0
1515
github.com/onsi/gomega v1.7.1

go.sum

+3
Original file line numberDiff line numberDiff line change
@@ -476,8 +476,11 @@ github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
476476
github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=
477477
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
478478
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
479+
github.com/kubernetes-csi/csi-proxy v0.2.2 h1:LqablYFEGw7FYBjwoh5TeXFzlcx8C+YQjKfGy6fFWJs=
479480
github.com/kubernetes-csi/csi-proxy/client v0.2.1 h1:n21d2U9HvgQ6jfJayafRv8kXXtLvnRNEqoD0mQNucKc=
480481
github.com/kubernetes-csi/csi-proxy/client v0.2.1/go.mod h1:6ptQQmti5QHwBxSsh8Cy00oGdogj0JXewFnu8FFjgOs=
482+
github.com/kubernetes-csi/csi-proxy/client v0.2.2 h1:VpMddHnbYA1oBeU5nrisdyrpOAAT0HqME7fsTi6BG2w=
483+
github.com/kubernetes-csi/csi-proxy/client v0.2.2/go.mod h1:6ptQQmti5QHwBxSsh8Cy00oGdogj0JXewFnu8FFjgOs=
481484
github.com/kubernetes-csi/csi-test/v3 v3.0.0 h1:mVsfA4J67uNm8fdF/Pr84oMqL92qjIhjWbEUH8zv1fU=
482485
github.com/kubernetes-csi/csi-test/v3 v3.0.0/go.mod h1:VdIKGnDZHOjg4M5yd0OZICtsoEzdn64d0K33N6dm35Q=
483486
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=

pkg/mount-manager/safe-mounter_windows.go

+33-2
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,11 @@ import (
2222
"fmt"
2323
"os"
2424
"path/filepath"
25+
"strconv"
2526
"strings"
2627

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"
2930

3031
fsapi "github.com/kubernetes-csi/csi-proxy/client/api/filesystem/v1beta1"
3132
fsclient "github.com/kubernetes-csi/csi-proxy/client/groups/filesystem/v1beta1"
@@ -159,6 +160,25 @@ func (mounter *CSIProxyMounter) UnmountDevice(target string) error {
159160
if err != nil {
160161
return err
161162
}
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+
162182
return nil
163183
}
164184

@@ -203,6 +223,17 @@ func (mounter *CSIProxyMounter) FormatAndMount(source string, target string, fst
203223
if err != nil {
204224
return err
205225
}
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+
206237
volumeIDsRequest := &volumeapi.ListVolumesOnDiskRequest{
207238
DiskId: source,
208239
}

0 commit comments

Comments
 (0)