aboutsummaryrefslogtreecommitdiff
path: root/pkg/driver/driver.go
diff options
context:
space:
mode:
authorViktor Kuzmin <kvaster@gmail.com>2023-08-06 23:23:54 +0300
committerChris Lu <chrislusf@users.noreply.github.com>2023-08-07 10:22:05 -0700
commit251eb9b4b8dc52ca55f3903b64f4f7027343fd5b (patch)
treeeb92e65f3dcea999d094bf5e446d57d0d407ec30 /pkg/driver/driver.go
parentd84db4bbebec5d8c0d0e20dbf9deffdd24ba1151 (diff)
downloadseaweedfs-csi-driver-251eb9b4b8dc52ca55f3903b64f4f7027343fd5b.tar.xz
seaweedfs-csi-driver-251eb9b4b8dc52ca55f3903b64f4f7027343fd5b.zip
Graceful stop with mounts cleanup
Diffstat (limited to 'pkg/driver/driver.go')
-rw-r--r--pkg/driver/driver.go25
1 files changed, 23 insertions, 2 deletions
diff --git a/pkg/driver/driver.go b/pkg/driver/driver.go
index fcef08a..12954e9 100644
--- a/pkg/driver/driver.go
+++ b/pkg/driver/driver.go
@@ -3,6 +3,8 @@ package driver
import (
"fmt"
"os"
+ "os/signal"
+ "syscall"
"github.com/container-storage-interface/spec/lib/go/csi"
"github.com/seaweedfs/seaweedfs-csi-driver/pkg/datalocality"
@@ -90,12 +92,31 @@ func (n *SeaweedFsDriver) initClient() error {
}
func (n *SeaweedFsDriver) Run() {
+ glog.Info("starting")
+
+ controller := NewControllerServer(n)
+ node := NewNodeServer(n)
+
s := NewNonBlockingGRPCServer()
s.Start(n.endpoint,
NewIdentityServer(n),
- NewControllerServer(n),
- NewNodeServer(n))
+ controller,
+ node)
+ s.Wait()
+
+ stopChan := make(chan os.Signal)
+ signal.Notify(stopChan, os.Interrupt, syscall.SIGTERM, syscall.SIGHUP)
+ <-stopChan
+
+ glog.Infof("stopping")
+
+ s.Stop()
s.Wait()
+
+ glog.Infof("node cleanup")
+ node.NodeCleanup()
+
+ glog.Infof("stopped")
}
func (n *SeaweedFsDriver) AddVolumeCapabilityAccessModes(vc []csi.VolumeCapability_AccessMode_Mode) []*csi.VolumeCapability_AccessMode {