Merge pull request #16273 from vrothberg/cidfile

container/pod id file: truncate instead of throwing an error
This commit is contained in:
OpenShift Merge Robot
2022-10-25 07:32:55 -04:00
committed by GitHub
11 changed files with 20 additions and 99 deletions

View File

@ -169,7 +169,7 @@ func create(cmd *cobra.Command, args []string) error {
} }
if cliVals.CIDFile != "" { if cliVals.CIDFile != "" {
if err := util.CreateCidFile(cliVals.CIDFile, report.Id); err != nil { if err := util.CreateIDFile(cliVals.CIDFile, report.Id); err != nil {
return err return err
} }
} }

View File

@ -19,7 +19,6 @@ import (
"github.com/containers/podman/v4/cmd/podman/utils" "github.com/containers/podman/v4/cmd/podman/utils"
"github.com/containers/podman/v4/libpod/define" "github.com/containers/podman/v4/libpod/define"
"github.com/containers/podman/v4/pkg/domain/entities" "github.com/containers/podman/v4/pkg/domain/entities"
"github.com/containers/podman/v4/pkg/errorhandling"
"github.com/containers/podman/v4/pkg/specgen" "github.com/containers/podman/v4/pkg/specgen"
"github.com/containers/podman/v4/pkg/specgenutil" "github.com/containers/podman/v4/pkg/specgenutil"
"github.com/containers/podman/v4/pkg/util" "github.com/containers/podman/v4/pkg/util"
@ -104,7 +103,6 @@ func init() {
func create(cmd *cobra.Command, args []string) error { func create(cmd *cobra.Command, args []string) error {
var ( var (
err error err error
podIDFD *os.File
imageName string imageName string
rawImageName string rawImageName string
podName string podName string
@ -188,18 +186,6 @@ func create(cmd *cobra.Command, args []string) error {
createOptions.Name = podName createOptions.Name = podName
} }
if cmd.Flag("pod-id-file").Changed {
podIDFD, err = util.OpenExclusiveFile(podIDFile)
if err != nil && os.IsExist(err) {
return fmt.Errorf("pod id file exists. Ensure another pod is not using it or delete %s", podIDFile)
}
if err != nil {
return fmt.Errorf("opening pod-id-file %s", podIDFile)
}
defer errorhandling.CloseQuiet(podIDFD)
defer errorhandling.SyncQuiet(podIDFD)
}
if len(createOptions.Net.PublishPorts) > 0 { if len(createOptions.Net.PublishPorts) > 0 {
if !createOptions.Infra { if !createOptions.Infra {
return fmt.Errorf("you must have an infra container to publish port bindings to the host") return fmt.Errorf("you must have an infra container to publish port bindings to the host")
@ -299,7 +285,7 @@ func create(cmd *cobra.Command, args []string) error {
} }
if len(podIDFile) > 0 { if len(podIDFile) > 0 {
if err = os.WriteFile(podIDFile, []byte(response.Id), 0644); err != nil { if err := util.CreateIDFile(podIDFile, response.Id); err != nil {
return fmt.Errorf("failed to write pod ID to file: %w", err) return fmt.Errorf("failed to write pod ID to file: %w", err)
} }
} }

View File

@ -1120,7 +1120,7 @@ func (ic *ContainerEngine) ContainerRun(ctx context.Context, opts entities.Conta
} }
if opts.CIDFile != "" { if opts.CIDFile != "" {
if err := util.CreateCidFile(opts.CIDFile, ctr.ID()); err != nil { if err := util.CreateIDFile(opts.CIDFile, ctr.ID()); err != nil {
// If you fail to create CIDFile then remove the container // If you fail to create CIDFile then remove the container
_ = removeContainer(ctr, true) _ = removeContainer(ctr, true)
return nil, err return nil, err

View File

@ -804,7 +804,7 @@ func (ic *ContainerEngine) ContainerRun(ctx context.Context, opts entities.Conta
} }
if opts.CIDFile != "" { if opts.CIDFile != "" {
if err := util.CreateCidFile(opts.CIDFile, con.ID); err != nil { if err := util.CreateIDFile(opts.CIDFile, con.ID); err != nil {
// If you fail to create CIDFile then remove the container // If you fail to create CIDFile then remove the container
_ = removeContainer(con.ID, true) _ = removeContainer(con.ID, true)
return nil, err return nil, err

View File

@ -42,10 +42,10 @@ type containerInfo struct {
ExtraEnvs []string ExtraEnvs []string
EnvVariable string EnvVariable string
AdditionalEnvVariables []string AdditionalEnvVariables []string
ExecStartPre string
ExecStart string ExecStart string
TimeoutStartSec uint TimeoutStartSec uint
TimeoutStopSec uint TimeoutStopSec uint
ExecStartPre string
ExecStop string ExecStop string
ExecStopPost string ExecStopPost string
GenerateNoHeader bool GenerateNoHeader bool
@ -94,9 +94,6 @@ StartLimitBurst={{{{.StartLimitBurst}}}}
TimeoutStartSec={{{{.TimeoutStartSec}}}} TimeoutStartSec={{{{.TimeoutStartSec}}}}
{{{{- end}}}} {{{{- end}}}}
TimeoutStopSec={{{{.TimeoutStopSec}}}} TimeoutStopSec={{{{.TimeoutStopSec}}}}
{{{{- if .ExecStartPre}}}}
ExecStartPre={{{{.ExecStartPre}}}}
{{{{- end}}}}
ExecStart={{{{.ExecStart}}}} ExecStart={{{{.ExecStart}}}}
{{{{- if .ExecStop}}}} {{{{- if .ExecStop}}}}
ExecStop={{{{.ExecStop}}}} ExecStop={{{{.ExecStop}}}}
@ -316,7 +313,6 @@ func executeContainerTemplate(info *containerInfo, options entities.GenerateSyst
info.NotifyAccess = "all" info.NotifyAccess = "all"
info.PIDFile = "" info.PIDFile = ""
info.ContainerIDFile = "%t/%n.ctr-id" info.ContainerIDFile = "%t/%n.ctr-id"
info.ExecStartPre = formatOptionsString("/bin/rm -f {{{{.ContainerIDFile}}}}")
info.ExecStop = formatOptionsString("{{{{.Executable}}}} stop --ignore {{{{if (ge .StopTimeout 0)}}}}-t {{{{.StopTimeout}}}}{{{{end}}}} --cidfile={{{{.ContainerIDFile}}}}") info.ExecStop = formatOptionsString("{{{{.Executable}}}} stop --ignore {{{{if (ge .StopTimeout 0)}}}}-t {{{{.StopTimeout}}}}{{{{end}}}} --cidfile={{{{.ContainerIDFile}}}}")
info.ExecStopPost = formatOptionsString("{{{{.Executable}}}} rm -f --ignore {{{{if (ge .StopTimeout 0)}}}}-t {{{{.StopTimeout}}}}{{{{end}}}} --cidfile={{{{.ContainerIDFile}}}}") info.ExecStopPost = formatOptionsString("{{{{.Executable}}}} rm -f --ignore {{{{if (ge .StopTimeout 0)}}}}-t {{{{.StopTimeout}}}}{{{{end}}}} --cidfile={{{{.ContainerIDFile}}}}")
// The create command must at least have three arguments: // The create command must at least have three arguments:

View File

@ -282,8 +282,6 @@ RequiresMountsFor=/var/run/containers/storage
Environment=PODMAN_SYSTEMD_UNIT=%n Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure Restart=on-failure
TimeoutStopSec=70 TimeoutStopSec=70
ExecStartPre=/bin/rm \
-f %t/%n.ctr-id
ExecStart=/usr/bin/podman container run \ ExecStart=/usr/bin/podman container run \
--cidfile=%t/%n.ctr-id \ --cidfile=%t/%n.ctr-id \
--cgroups=no-conmon \ --cgroups=no-conmon \
@ -321,8 +319,6 @@ RequiresMountsFor=/var/run/containers/storage
Environment=PODMAN_SYSTEMD_UNIT=%n Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure Restart=on-failure
TimeoutStopSec=70 TimeoutStopSec=70
ExecStartPre=/bin/rm \
-f %t/%n.ctr-id
ExecStart=/usr/bin/podman container run \ ExecStart=/usr/bin/podman container run \
--cidfile=%t/%n.ctr-id \ --cidfile=%t/%n.ctr-id \
--cgroups=no-conmon \ --cgroups=no-conmon \
@ -360,8 +356,6 @@ RequiresMountsFor=/var/run/containers/storage
Environment=PODMAN_SYSTEMD_UNIT=%n Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure Restart=on-failure
TimeoutStopSec=70 TimeoutStopSec=70
ExecStartPre=/bin/rm \
-f %t/%n.ctr-id
ExecStart=/usr/bin/podman container run \ ExecStart=/usr/bin/podman container run \
--cidfile=%t/%n.ctr-id \ --cidfile=%t/%n.ctr-id \
--cgroups=no-conmon \ --cgroups=no-conmon \
@ -399,8 +393,6 @@ RequiresMountsFor=/var/run/containers/storage
Environment=PODMAN_SYSTEMD_UNIT=%n Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure Restart=on-failure
TimeoutStopSec=70 TimeoutStopSec=70
ExecStartPre=/bin/rm \
-f %t/%n.ctr-id
ExecStart=/usr/bin/podman run \ ExecStart=/usr/bin/podman run \
--cidfile=%t/%n.ctr-id \ --cidfile=%t/%n.ctr-id \
--cgroups=no-conmon \ --cgroups=no-conmon \
@ -438,8 +430,6 @@ RequiresMountsFor=/var/run/containers/storage
Environment=PODMAN_SYSTEMD_UNIT=%n Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure Restart=on-failure
TimeoutStopSec=70 TimeoutStopSec=70
ExecStartPre=/bin/rm \
-f %t/%n.ctr-id
ExecStart=/usr/bin/podman run \ ExecStart=/usr/bin/podman run \
--cidfile=%t/%n.ctr-id \ --cidfile=%t/%n.ctr-id \
--cgroups=no-conmon \ --cgroups=no-conmon \
@ -478,8 +468,6 @@ RequiresMountsFor=/var/run/containers/storage
Environment=PODMAN_SYSTEMD_UNIT=%n Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure Restart=on-failure
TimeoutStopSec=70 TimeoutStopSec=70
ExecStartPre=/bin/rm \
-f %t/%n.ctr-id
ExecStart=/usr/bin/podman run \ ExecStart=/usr/bin/podman run \
--cidfile=%t/%n.ctr-id \ --cidfile=%t/%n.ctr-id \
--cgroups=no-conmon \ --cgroups=no-conmon \
@ -517,8 +505,6 @@ RequiresMountsFor=/var/run/containers/storage
Environment=PODMAN_SYSTEMD_UNIT=%n Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure Restart=on-failure
TimeoutStopSec=70 TimeoutStopSec=70
ExecStartPre=/bin/rm \
-f %t/%n.ctr-id
ExecStart=/usr/bin/podman run \ ExecStart=/usr/bin/podman run \
--cidfile=%t/%n.ctr-id \ --cidfile=%t/%n.ctr-id \
--cgroups=no-conmon \ --cgroups=no-conmon \
@ -554,8 +540,6 @@ RequiresMountsFor=/var/run/containers/storage
Environment=PODMAN_SYSTEMD_UNIT=%n Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure Restart=on-failure
TimeoutStopSec=102 TimeoutStopSec=102
ExecStartPre=/bin/rm \
-f %t/%n.ctr-id
ExecStart=/usr/bin/podman run \ ExecStart=/usr/bin/podman run \
--cidfile=%t/%n.ctr-id \ --cidfile=%t/%n.ctr-id \
--cgroups=no-conmon \ --cgroups=no-conmon \
@ -594,8 +578,6 @@ RequiresMountsFor=/var/run/containers/storage
Environment=PODMAN_SYSTEMD_UNIT=%n Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure Restart=on-failure
TimeoutStopSec=102 TimeoutStopSec=102
ExecStartPre=/bin/rm \
-f %t/%n.ctr-id
ExecStart=/usr/bin/podman run \ ExecStart=/usr/bin/podman run \
--cidfile=%t/%n.ctr-id \ --cidfile=%t/%n.ctr-id \
--cgroups=no-conmon \ --cgroups=no-conmon \
@ -634,8 +616,6 @@ RequiresMountsFor=/var/run/containers/storage
Environment=PODMAN_SYSTEMD_UNIT=%n Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure Restart=on-failure
TimeoutStopSec=102 TimeoutStopSec=102
ExecStartPre=/bin/rm \
-f %t/%n.ctr-id
ExecStart=/usr/bin/podman \ ExecStart=/usr/bin/podman \
--events-backend none \ --events-backend none \
--runroot /root run \ --runroot /root run \
@ -672,8 +652,6 @@ RequiresMountsFor=/var/run/containers/storage
Environment=PODMAN_SYSTEMD_UNIT=%n Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure Restart=on-failure
TimeoutStopSec=70 TimeoutStopSec=70
ExecStartPre=/bin/rm \
-f %t/%n.ctr-id
ExecStart=/usr/bin/podman container run \ ExecStart=/usr/bin/podman container run \
--cidfile=%t/%n.ctr-id \ --cidfile=%t/%n.ctr-id \
--cgroups=no-conmon \ --cgroups=no-conmon \
@ -708,8 +686,6 @@ RequiresMountsFor=/var/run/containers/storage
Environment=PODMAN_SYSTEMD_UNIT=%n Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure Restart=on-failure
TimeoutStopSec=70 TimeoutStopSec=70
ExecStartPre=/bin/rm \
-f %t/%n.ctr-id
ExecStart=/usr/bin/podman run \ ExecStart=/usr/bin/podman run \
--cidfile=%t/%n.ctr-id \ --cidfile=%t/%n.ctr-id \
--cgroups=no-conmon \ --cgroups=no-conmon \
@ -748,8 +724,6 @@ RequiresMountsFor=/var/run/containers/storage
Environment=PODMAN_SYSTEMD_UNIT=%n Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure Restart=on-failure
TimeoutStopSec=70 TimeoutStopSec=70
ExecStartPre=/bin/rm \
-f %t/%n.ctr-id
ExecStart=/usr/bin/podman run \ ExecStart=/usr/bin/podman run \
--cidfile=%t/%n.ctr-id \ --cidfile=%t/%n.ctr-id \
--cgroups=no-conmon \ --cgroups=no-conmon \
@ -787,8 +761,6 @@ RequiresMountsFor=/var/run/containers/storage
Environment=PODMAN_SYSTEMD_UNIT=%n Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure Restart=on-failure
TimeoutStopSec=70 TimeoutStopSec=70
ExecStartPre=/bin/rm \
-f %t/%n.ctr-id
ExecStart=/usr/bin/podman run \ ExecStart=/usr/bin/podman run \
--cidfile=%t/%n.ctr-id \ --cidfile=%t/%n.ctr-id \
--cgroups=no-conmon \ --cgroups=no-conmon \
@ -827,8 +799,6 @@ RequiresMountsFor=/var/run/containers/storage
Environment=PODMAN_SYSTEMD_UNIT=%n Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure Restart=on-failure
TimeoutStopSec=70 TimeoutStopSec=70
ExecStartPre=/bin/rm \
-f %t/%n.ctr-id
ExecStart=/usr/bin/podman run \ ExecStart=/usr/bin/podman run \
--cidfile=%t/%n.ctr-id \ --cidfile=%t/%n.ctr-id \
--cgroups=no-conmon \ --cgroups=no-conmon \
@ -870,8 +840,6 @@ Environment=PODMAN_SYSTEMD_UNIT=%n
Environment=FOO=abc "BAR=my test" USER=%%a Environment=FOO=abc "BAR=my test" USER=%%a
Restart=on-failure Restart=on-failure
TimeoutStopSec=70 TimeoutStopSec=70
ExecStartPre=/bin/rm \
-f %t/%n.ctr-id
ExecStart=/usr/bin/podman run \ ExecStart=/usr/bin/podman run \
--cidfile=%t/%n.ctr-id \ --cidfile=%t/%n.ctr-id \
--cgroups=no-conmon \ --cgroups=no-conmon \
@ -940,8 +908,6 @@ Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure Restart=on-failure
StartLimitBurst=42 StartLimitBurst=42
TimeoutStopSec=70 TimeoutStopSec=70
ExecStartPre=/bin/rm \
-f %t/%n.ctr-id
ExecStart=/usr/bin/podman run \ ExecStart=/usr/bin/podman run \
--cidfile=%t/%n.ctr-id \ --cidfile=%t/%n.ctr-id \
--cgroups=no-conmon \ --cgroups=no-conmon \
@ -976,8 +942,6 @@ RequiresMountsFor=/var/run/containers/storage
Environment=PODMAN_SYSTEMD_UNIT=%n Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure Restart=on-failure
TimeoutStopSec=70 TimeoutStopSec=70
ExecStartPre=/bin/rm \
-f %t/%n.ctr-id
ExecStart=/usr/bin/podman run \ ExecStart=/usr/bin/podman run \
--cidfile=%t/%n.ctr-id \ --cidfile=%t/%n.ctr-id \
--cgroups=no-conmon \ --cgroups=no-conmon \
@ -1014,8 +978,6 @@ Environment=PODMAN_SYSTEMD_UNIT=%n-%i
Restart=on-failure Restart=on-failure
StartLimitBurst=42 StartLimitBurst=42
TimeoutStopSec=70 TimeoutStopSec=70
ExecStartPre=/bin/rm \
-f %t/%n.ctr-id
ExecStart=/usr/bin/podman run \ ExecStart=/usr/bin/podman run \
--name=container-foo-%i \ --name=container-foo-%i \
--cidfile=%t/%n.ctr-id \ --cidfile=%t/%n.ctr-id \

View File

@ -61,10 +61,8 @@ type podInfo struct {
PodCreateCommand string PodCreateCommand string
// EnvVariable is generate.EnvVariable and must not be set. // EnvVariable is generate.EnvVariable and must not be set.
EnvVariable string EnvVariable string
// ExecStartPre1 of the unit. // ExecStartPre of the unit.
ExecStartPre1 string ExecStartPre string
// ExecStartPre2 of the unit.
ExecStartPre2 string
// ExecStart of the unit. // ExecStart of the unit.
ExecStart string ExecStart string
// TimeoutStopSec of the unit. // TimeoutStopSec of the unit.
@ -115,11 +113,8 @@ Restart={{{{.RestartPolicy}}}}
RestartSec={{{{.RestartSec}}}} RestartSec={{{{.RestartSec}}}}
{{{{- end}}}} {{{{- end}}}}
TimeoutStopSec={{{{.TimeoutStopSec}}}} TimeoutStopSec={{{{.TimeoutStopSec}}}}
{{{{- if .ExecStartPre1}}}} {{{{- if .ExecStartPre}}}}
ExecStartPre={{{{.ExecStartPre1}}}} ExecStartPre={{{{.ExecStartPre}}}}
{{{{- end}}}}
{{{{- if .ExecStartPre2}}}}
ExecStartPre={{{{.ExecStartPre2}}}}
{{{{- end}}}} {{{{- end}}}}
ExecStart={{{{.ExecStart}}}} ExecStart={{{{.ExecStart}}}}
ExecStop={{{{.ExecStop}}}} ExecStop={{{{.ExecStop}}}}
@ -371,8 +366,7 @@ func executePodTemplate(info *podInfo, options entities.GenerateSystemdOptions)
startCommand = append(startCommand, podCreateArgs...) startCommand = append(startCommand, podCreateArgs...)
startCommand = escapeSystemdArguments(startCommand) startCommand = escapeSystemdArguments(startCommand)
info.ExecStartPre1 = formatOptionsString("/bin/rm -f {{{{.PIDFile}}}} {{{{.PodIDFile}}}}") info.ExecStartPre = formatOptions(startCommand)
info.ExecStartPre2 = formatOptions(startCommand)
info.ExecStart = formatOptionsString("{{{{.Executable}}}} {{{{if .RootFlags}}}}{{{{ .RootFlags}}}} {{{{end}}}}pod start --pod-id-file {{{{.PodIDFile}}}}") info.ExecStart = formatOptionsString("{{{{.Executable}}}} {{{{if .RootFlags}}}}{{{{ .RootFlags}}}} {{{{end}}}}pod start --pod-id-file {{{{.PodIDFile}}}}")
info.ExecStop = formatOptionsString("{{{{.Executable}}}} {{{{if .RootFlags}}}}{{{{ .RootFlags}}}} {{{{end}}}}pod stop --ignore --pod-id-file {{{{.PodIDFile}}}} {{{{if (ge .StopTimeout 0)}}}} -t {{{{.StopTimeout}}}}{{{{end}}}}") info.ExecStop = formatOptionsString("{{{{.Executable}}}} {{{{if .RootFlags}}}}{{{{ .RootFlags}}}} {{{{end}}}}pod stop --ignore --pod-id-file {{{{.PodIDFile}}}} {{{{if (ge .StopTimeout 0)}}}} -t {{{{.StopTimeout}}}}{{{{end}}}}")
info.ExecStopPost = formatOptionsString("{{{{.Executable}}}} {{{{if .RootFlags}}}}{{{{ .RootFlags}}}} {{{{end}}}}pod rm --ignore -f --pod-id-file {{{{.PodIDFile}}}}") info.ExecStopPost = formatOptionsString("{{{{.Executable}}}} {{{{if .RootFlags}}}}{{{{ .RootFlags}}}} {{{{end}}}}pod rm --ignore -f --pod-id-file {{{{.PodIDFile}}}}")

View File

@ -258,8 +258,6 @@ Before=
Environment=PODMAN_SYSTEMD_UNIT=%n Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure Restart=on-failure
TimeoutStopSec=70 TimeoutStopSec=70
ExecStartPre=/bin/rm \
-f %t/pod-123abc.pid %t/pod-123abc.pod-id
ExecStartPre=/usr/bin/podman pod create \ ExecStartPre=/usr/bin/podman pod create \
--infra-conmon-pidfile %t/pod-123abc.pid \ --infra-conmon-pidfile %t/pod-123abc.pid \
--pod-id-file %t/pod-123abc.pod-id \ --pod-id-file %t/pod-123abc.pod-id \
@ -326,8 +324,6 @@ Before=container-1.service container-2.service
Environment=PODMAN_SYSTEMD_UNIT=%n Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure Restart=on-failure
TimeoutStopSec=70 TimeoutStopSec=70
ExecStartPre=/bin/rm \
-f %t/pod-123abc.pid %t/pod-123abc.pod-id
ExecStartPre=/usr/bin/podman pod create \ ExecStartPre=/usr/bin/podman pod create \
--infra-conmon-pidfile %t/pod-123abc.pid \ --infra-conmon-pidfile %t/pod-123abc.pid \
--pod-id-file %t/pod-123abc.pod-id \ --pod-id-file %t/pod-123abc.pod-id \
@ -367,8 +363,6 @@ Before=container-1.service container-2.service
Environment=PODMAN_SYSTEMD_UNIT=%n Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure Restart=on-failure
TimeoutStopSec=70 TimeoutStopSec=70
ExecStartPre=/bin/rm \
-f %t/pod-123abc.pid %t/pod-123abc.pod-id
ExecStartPre=/usr/bin/podman \ ExecStartPre=/usr/bin/podman \
--events-backend none \ --events-backend none \
--runroot /root pod create \ --runroot /root pod create \
@ -410,8 +404,6 @@ Before=container-1.service container-2.service
Environment=PODMAN_SYSTEMD_UNIT=%n Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure Restart=on-failure
TimeoutStopSec=70 TimeoutStopSec=70
ExecStartPre=/bin/rm \
-f %t/pod-123abc.pid %t/pod-123abc.pod-id
ExecStartPre=/usr/bin/podman pod create \ ExecStartPre=/usr/bin/podman pod create \
--infra-conmon-pidfile %t/pod-123abc.pid \ --infra-conmon-pidfile %t/pod-123abc.pid \
--pod-id-file %t/pod-123abc.pod-id \ --pod-id-file %t/pod-123abc.pod-id \
@ -451,8 +443,6 @@ Before=container-1.service container-2.service
Environment=PODMAN_SYSTEMD_UNIT=%n Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure Restart=on-failure
TimeoutStopSec=70 TimeoutStopSec=70
ExecStartPre=/bin/rm \
-f %t/pod-123abc.pid %t/pod-123abc.pod-id
ExecStartPre=/usr/bin/podman pod create \ ExecStartPre=/usr/bin/podman pod create \
--infra-conmon-pidfile %t/pod-123abc.pid \ --infra-conmon-pidfile %t/pod-123abc.pid \
--pod-id-file %t/pod-123abc.pod-id \ --pod-id-file %t/pod-123abc.pod-id \

View File

@ -682,18 +682,15 @@ func DefaultContainerConfig() *config.Config {
return containerConfig return containerConfig
} }
func CreateCidFile(cidfile string, id string) error { func CreateIDFile(path string, id string) error {
cidFile, err := OpenExclusiveFile(cidfile) idFile, err := os.Create(path)
if err != nil { if err != nil {
if os.IsExist(err) { return fmt.Errorf("creating idfile: %w", err)
return fmt.Errorf("container id file exists. Ensure another container is not using it or delete %s", cidfile)
} }
return fmt.Errorf("opening cidfile %s", cidfile) defer idFile.Close()
if _, err = idFile.WriteString(id); err != nil {
return fmt.Errorf("writing idfile: %w", err)
} }
if _, err = cidFile.WriteString(id); err != nil {
logrus.Error(err)
}
cidFile.Close()
return nil return nil
} }

View File

@ -570,8 +570,6 @@ var _ = Describe("Podman generate systemd", func() {
Expect(session.OutputToString()).To(ContainSubstring("--pod-id-file %t/pod-foo.pod-id")) Expect(session.OutputToString()).To(ContainSubstring("--pod-id-file %t/pod-foo.pod-id"))
Expect(session.OutputToString()).To(ContainSubstring("--exit-policy=stop")) Expect(session.OutputToString()).To(ContainSubstring("--exit-policy=stop"))
Expect(session.OutputToString()).To(ContainSubstring("--name foo")) Expect(session.OutputToString()).To(ContainSubstring("--name foo"))
Expect(session.OutputToString()).To(ContainSubstring("ExecStartPre=/bin/rm"))
Expect(session.OutputToString()).To(ContainSubstring("-f %t/pod-foo.pid %t/pod-foo.pod-id"))
Expect(session.OutputToString()).To(ContainSubstring("pod stop")) Expect(session.OutputToString()).To(ContainSubstring("pod stop"))
Expect(session.OutputToString()).To(ContainSubstring("--ignore")) Expect(session.OutputToString()).To(ContainSubstring("--ignore"))
Expect(session.OutputToString()).To(ContainSubstring("--pod-id-file %t/pod-foo.pod-id")) Expect(session.OutputToString()).To(ContainSubstring("--pod-id-file %t/pod-foo.pod-id"))

View File

@ -192,6 +192,10 @@ echo $rand | 0 | $rand
pidfile=${PODMAN_TMPDIR}/pidfile pidfile=${PODMAN_TMPDIR}/pidfile
cidfile=${PODMAN_TMPDIR}/cidfile cidfile=${PODMAN_TMPDIR}/cidfile
# Write random content to the cidfile to make sure its content is truncated
# on write.
echo "$(random_string 120)" > $cidfile
cname=$(random_string) cname=$(random_string)
run_podman run --name $cname \ run_podman run --name $cname \
--conmon-pidfile=$pidfile \ --conmon-pidfile=$pidfile \
@ -218,12 +222,6 @@ echo $rand | 0 | $rand
# All OK. Kill container. # All OK. Kill container.
run_podman rm -f $cid run_podman rm -f $cid
# Podman must not overwrite existing cid file.
# (overwriting conmon-pidfile is OK, so don't test that)
run_podman 125 run --cidfile=$cidfile $IMAGE true
is "$output" "Error: container id file exists. .* delete $cidfile" \
"podman will not overwrite existing cidfile"
} }
@test "podman run docker-archive" { @test "podman run docker-archive" {