diff options
Diffstat (limited to 'pkg/driver/driver.go')
| -rw-r--r-- | pkg/driver/driver.go | 25 |
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 { |
