1
0
mirror of https://github.com/rancher/norman.git synced 2025-06-30 09:12:19 +00:00
norman/signal/sigterm.go
Darren Shepherd 27061e7808 Add signal
2017-11-28 17:33:13 -07:00

29 lines
433 B
Go

package signal
import (
"context"
"os"
"os/signal"
"syscall"
"github.com/sirupsen/logrus"
)
func SigTermCancelContext(ctx context.Context) context.Context {
term := make(chan os.Signal)
signal.Notify(term, os.Interrupt, syscall.SIGTERM)
ctx, cancel := context.WithCancel(ctx)
go func() {
select {
case <-term:
logrus.Infof("Received SIGTERM, cancelling")
cancel()
case <-ctx.Done():
}
}()
return ctx
}