aboutsummaryrefslogtreecommitdiff
path: root/pkg/driver/driver.go
diff options
context:
space:
mode:
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 {