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 <rothberg@redhat.com>
This commit is contained in:
Valentin Rothberg
2020-01-16 15:46:39 +01:00
parent db00ee97e9
commit 9d3667c2f0
3 changed files with 5 additions and 5 deletions

View File

@ -96,8 +96,8 @@ Restart={{.RestartPolicy}}
{{- if .New}} {{- if .New}}
ExecStartPre=/usr/bin/rm -f /%t/%n-pid /%t/%n-cid ExecStartPre=/usr/bin/rm -f /%t/%n-pid /%t/%n-cid
ExecStart={{.RunCommand}} ExecStart={{.RunCommand}}
ExecStop={{.Executable}} stop --cidfile /%t/%n-cid {{if (ge .StopTimeout 0)}}-t {{.StopTimeout}}{{end}} ExecStop={{.Executable}} stop --ignore --cidfile /%t/%n-cid {{if (ge .StopTimeout 0)}}-t {{.StopTimeout}}{{end}}
ExecStopPost={{.Executable}} rm -f --cidfile /%t/%n-cid ExecStopPost={{.Executable}} rm --ignore -f --cidfile /%t/%n-cid
PIDFile=/%t/%n-pid PIDFile=/%t/%n-pid
{{- else}} {{- else}}
ExecStart={{.Executable}} start {{.ContainerName}} ExecStart={{.Executable}} start {{.ContainerName}}

View File

@ -123,8 +123,8 @@ Documentation=man:podman-generate-systemd(1)
Restart=always Restart=always
ExecStartPre=/usr/bin/rm -f /%t/%n-pid /%t/%n-cid 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 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 ExecStop=/usr/bin/podman stop --ignore --cidfile /%t/%n-cid -t 42
ExecStopPost=/usr/bin/podman rm -f --cidfile /%t/%n-cid ExecStopPost=/usr/bin/podman rm --ignore -f --cidfile /%t/%n-cid
PIDFile=/%t/%n-pid PIDFile=/%t/%n-pid
KillMode=none KillMode=none
Type=forking Type=forking

View File

@ -191,7 +191,7 @@ var _ = Describe("Podman generate systemd", func() {
found, _ := session.GrepString("# container-foo.service") found, _ := session.GrepString("# container-foo.service")
Expect(found).To(BeTrue()) 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()) Expect(found).To(BeTrue())
}) })