From 9d3667c2f025e1e36f3fdbd7348e0e14d00e336d Mon Sep 17 00:00:00 2001 From: Valentin Rothberg Date: Thu, 16 Jan 2020 15:46:39 +0100 Subject: systemdgen: add --ignore flag to generic services The --ignore flag lets Podman ignore errors when a specified container does not exist (anymore). That's a nice addition to generic services generated via the --new flag. Those services create new containers and can hence allows user to manually remove a container; may it only be by accident. The important part of using the --ignore flag is that Podman will exit 0 which plays nicer with most restart policies; a non-zero exit may yield systemd to restart the entire service which is arguably wrong if the user manually deletes the container. If desired, users can still alter the generated files. Signed-off-by: Valentin Rothberg --- pkg/systemdgen/systemdgen.go | 4 ++-- pkg/systemdgen/systemdgen_test.go | 4 ++-- test/e2e/generate_systemd_test.go | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/systemdgen/systemdgen.go b/pkg/systemdgen/systemdgen.go index b6167a23e..745b708e4 100644 --- a/pkg/systemdgen/systemdgen.go +++ b/pkg/systemdgen/systemdgen.go @@ -96,8 +96,8 @@ Restart={{.RestartPolicy}} {{- if .New}} ExecStartPre=/usr/bin/rm -f /%t/%n-pid /%t/%n-cid ExecStart={{.RunCommand}} -ExecStop={{.Executable}} stop --cidfile /%t/%n-cid {{if (ge .StopTimeout 0)}}-t {{.StopTimeout}}{{end}} -ExecStopPost={{.Executable}} rm -f --cidfile /%t/%n-cid +ExecStop={{.Executable}} stop --ignore --cidfile /%t/%n-cid {{if (ge .StopTimeout 0)}}-t {{.StopTimeout}}{{end}} +ExecStopPost={{.Executable}} rm --ignore -f --cidfile /%t/%n-cid PIDFile=/%t/%n-pid {{- else}} ExecStart={{.Executable}} start {{.ContainerName}} diff --git a/pkg/systemdgen/systemdgen_test.go b/pkg/systemdgen/systemdgen_test.go index 3894a0205..9c6933d17 100644 --- a/pkg/systemdgen/systemdgen_test.go +++ b/pkg/systemdgen/systemdgen_test.go @@ -123,8 +123,8 @@ Documentation=man:podman-generate-systemd(1) Restart=always ExecStartPre=/usr/bin/rm -f /%t/%n-pid /%t/%n-cid ExecStart=/usr/bin/podman run --conmon-pidfile /%t/%n-pid --cidfile /%t/%n-cid --name jadda-jadda --hostname hello-world awesome-image:latest command arg1 ... argN -ExecStop=/usr/bin/podman stop --cidfile /%t/%n-cid -t 42 -ExecStopPost=/usr/bin/podman rm -f --cidfile /%t/%n-cid +ExecStop=/usr/bin/podman stop --ignore --cidfile /%t/%n-cid -t 42 +ExecStopPost=/usr/bin/podman rm --ignore -f --cidfile /%t/%n-cid PIDFile=/%t/%n-pid KillMode=none Type=forking diff --git a/test/e2e/generate_systemd_test.go b/test/e2e/generate_systemd_test.go index f0fef41a4..d0dadd09d 100644 --- a/test/e2e/generate_systemd_test.go +++ b/test/e2e/generate_systemd_test.go @@ -191,7 +191,7 @@ var _ = Describe("Podman generate systemd", func() { found, _ := session.GrepString("# container-foo.service") Expect(found).To(BeTrue()) - found, _ = session.GrepString("stop --cidfile /%t/%n-cid -t 42") + found, _ = session.GrepString("stop --ignore --cidfile /%t/%n-cid -t 42") Expect(found).To(BeTrue()) }) -- cgit v1.2.3-54-g00ecf