diff options
author | Qi Wang <qiwan@redhat.com> | 2020-08-12 19:10:16 -0400 |
---|---|---|
committer | Qi Wang <qiwan@redhat.com> | 2020-08-18 14:42:49 -0400 |
commit | 5b02b69ea81deb06d5dc0acf2005cb3dbb496d4a (patch) | |
tree | e858d97cd35474214764a9936e249272bd8933b2 /cmd/podman/system/service_abi.go | |
parent | c1fef2af3ec84b2d9cb27bf3cad9f8414552a3a9 (diff) | |
download | podman-5b02b69ea81deb06d5dc0acf2005cb3dbb496d4a.tar.gz podman-5b02b69ea81deb06d5dc0acf2005cb3dbb496d4a.tar.bz2 podman-5b02b69ea81deb06d5dc0acf2005cb3dbb496d4a.zip |
Support sighup reload configuration files
Support podman service sighup reload configuration files(containers.conf, registries.conf, storage.conf).
Signed-off-by: Qi Wang <qiwan@redhat.com>
Diffstat (limited to 'cmd/podman/system/service_abi.go')
-rw-r--r-- | cmd/podman/system/service_abi.go | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/cmd/podman/system/service_abi.go b/cmd/podman/system/service_abi.go index 6c6dd42a4..95cbd19d9 100644 --- a/cmd/podman/system/service_abi.go +++ b/cmd/podman/system/service_abi.go @@ -5,8 +5,12 @@ package system import ( "context" "net" + "os" + "os/signal" "strings" + "github.com/containers/podman/v2/cmd/podman/utils" + "github.com/containers/podman/v2/libpod" api "github.com/containers/podman/v2/pkg/api/server" "github.com/containers/podman/v2/pkg/domain/entities" "github.com/containers/podman/v2/pkg/domain/infra" @@ -39,6 +43,7 @@ func restService(opts entities.ServiceOptions, flags *pflag.FlagSet, cfg *entiti return err } + startWatcher(rt) server, err := api.NewServerWithSettings(rt, opts.Timeout, listener) if err != nil { return err @@ -55,3 +60,24 @@ func restService(opts entities.ServiceOptions, flags *pflag.FlagSet, cfg *entiti } return err } + +// startWatcher starts a new SIGHUP go routine for the current config. +func startWatcher(rt *libpod.Runtime) { + // Setup the signal notifier + ch := make(chan os.Signal, 1) + signal.Notify(ch, utils.SIGHUP) + + go func() { + for { + // Block until the signal is received + logrus.Debugf("waiting for SIGHUP to reload configuration") + <-ch + if err := rt.Reload(); err != nil { + logrus.Errorf("unable to reload configuration: %v", err) + continue + } + } + }() + + logrus.Debugf("registered SIGHUP watcher for config") +} |