summaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
authorValentin Rothberg <vrothberg@redhat.com>2022-09-13 09:38:42 +0200
committerValentin Rothberg <vrothberg@redhat.com>2022-09-13 10:59:57 +0200
commit0ea5080c9156853b7806879226e23ab0405815d6 (patch)
tree1a706b88a6aee2740d21b85c0e1c9dc7ecc48f7c /pkg
parent4aeaeafde54eb223468ae3ea8425ab548e90e8e8 (diff)
downloadpodman-0ea5080c9156853b7806879226e23ab0405815d6.tar.gz
podman-0ea5080c9156853b7806879226e23ab0405815d6.tar.bz2
podman-0ea5080c9156853b7806879226e23ab0405815d6.zip
generate systemd: warn on --restart without --new
Emit a warning to the user when generating a unit with --new on a container that was created with a custom --restart policy. As shown in #15284, a custom --restart policy in that case can lead to issues on system shutdown where systemd attempts to nuke the unit but Podman keeps on restarting the container. Fixes: #15284 Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
Diffstat (limited to 'pkg')
-rw-r--r--pkg/systemd/generate/containers.go12
1 files changed, 12 insertions, 0 deletions
diff --git a/pkg/systemd/generate/containers.go b/pkg/systemd/generate/containers.go
index 0274dd7b7..8510cfd42 100644
--- a/pkg/systemd/generate/containers.go
+++ b/pkg/systemd/generate/containers.go
@@ -148,6 +148,18 @@ func generateContainerInfo(ctr *libpod.Container, options entities.GenerateSyste
return nil, errors.New("conmon PID file path is empty, try to recreate the container with --conmon-pidfile flag")
}
+ // #15284: old units generated without --new can lead to issues on
+ // shutdown when the containers are created with a custom restart
+ // policy.
+ if !options.New {
+ switch config.RestartPolicy {
+ case libpodDefine.RestartPolicyNo, libpodDefine.RestartPolicyNone:
+ // All good
+ default:
+ logrus.Warnf("Container %s has restart policy %q which can lead to issues on shutdown: consider recreating the container without a restart policy and use systemd's restart mechanism instead", ctr.ID(), config.RestartPolicy)
+ }
+ }
+
createCommand := []string{}
if config.CreateCommand != nil {
createCommand = config.CreateCommand