mirror of
https://github.com/containers/podman.git
synced 2025-10-26 02:35:43 +08:00
Merge pull request #16273 from vrothberg/cidfile
container/pod id file: truncate instead of throwing an error
This commit is contained in:
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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:
|
||||||
|
|||||||
@ -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 \
|
||||||
|
|||||||
@ -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}}}}")
|
||||||
|
|||||||
@ -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 \
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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"))
|
||||||
|
|||||||
@ -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" {
|
||||||
|
|||||||
Reference in New Issue
Block a user