From f3197c463d8d57433f3a595fe1c0b1dc71229df2 Mon Sep 17 00:00:00 2001 From: Andrew Martinez Date: Tue, 23 Mar 2021 14:57:30 -0400 Subject: [PATCH] move controller signal handler to cmd --- ziti-controller/subcmd/run.go | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/ziti-controller/subcmd/run.go b/ziti-controller/subcmd/run.go index 806cc084f..52deb5cbb 100644 --- a/ziti-controller/subcmd/run.go +++ b/ziti-controller/subcmd/run.go @@ -25,6 +25,9 @@ import ( "github.com/openziti/ziti/common/version" "github.com/sirupsen/logrus" "github.com/spf13/cobra" + "os" + "os/signal" + "syscall" ) func init() { @@ -54,28 +57,39 @@ func run(cmd *cobra.Command, args []string) { } } - var c *controller.Controller - if c, err = controller.NewController(config, version.GetCmdBuildInfo()); err != nil { + var fabricController *controller.Controller + if fabricController, err = controller.NewController(config, version.GetCmdBuildInfo()); err != nil { fmt.Printf("unable to create fabric controller %+v\n", err) panic(err) } - ec, err := server.NewController(config) + edgeController, err := server.NewController(config) if err != nil { panic(err) } - ec.SetHostController(c) - ec.Initialize() - - go ec.RunAndWait() - - if err = c.Run(); err != nil { + edgeController.SetHostController(fabricController) + edgeController.Initialize() + go waitForShutdown(fabricController, edgeController) + go edgeController.Run() + if err := fabricController.Run(); err != nil { panic(err) } + } else { panic(err) } } + +func waitForShutdown(fabricController *controller.Controller, edgeController *server.Controller) { + ch := make(chan os.Signal, 1) + signal.Notify(ch, os.Interrupt, syscall.SIGTERM) + + <-ch + + pfxlog.Logger().Info("shutting down ziti-controller") + edgeController.Shutdown() + fabricController.Shutdown() +}