mirror of
https://github.com/containers/podman.git
synced 2025-06-06 15:00:40 +08:00
Merge pull request #16513 from vrothberg/fix-16502
remove pod if creation has failed
This commit is contained in:
@ -18,7 +18,15 @@ import (
|
|||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
func MakePod(p *entities.PodSpec, rt *libpod.Runtime) (*libpod.Pod, error) {
|
func MakePod(p *entities.PodSpec, rt *libpod.Runtime) (_ *libpod.Pod, finalErr error) {
|
||||||
|
var createdPod *libpod.Pod
|
||||||
|
defer func() {
|
||||||
|
if finalErr != nil && createdPod != nil {
|
||||||
|
if err := rt.RemovePod(context.Background(), createdPod, true, true, nil); err != nil {
|
||||||
|
logrus.Errorf("Removing pod: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
if err := p.PodSpecGen.Validate(); err != nil {
|
if err := p.PodSpecGen.Validate(); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -69,6 +77,8 @@ func MakePod(p *entities.PodSpec, rt *libpod.Runtime) (*libpod.Pod, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
createdPod = pod
|
||||||
|
|
||||||
if !p.PodSpecGen.NoInfra && p.PodSpecGen.InfraContainerSpec != nil {
|
if !p.PodSpecGen.NoInfra && p.PodSpecGen.InfraContainerSpec != nil {
|
||||||
if p.PodSpecGen.InfraContainerSpec.Name == "" {
|
if p.PodSpecGen.InfraContainerSpec.Name == "" {
|
||||||
p.PodSpecGen.InfraContainerSpec.Name = pod.ID()[:12] + "-infra"
|
p.PodSpecGen.InfraContainerSpec.Name = pod.ID()[:12] + "-infra"
|
||||||
|
@ -554,4 +554,17 @@ io.max | $lomajmin rbps=1048576 wbps=1048576 riops=max wiops=max
|
|||||||
is "$output" "" "Should print no output"
|
is "$output" "" "Should print no output"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@test "podman pod create on failure" {
|
||||||
|
podname=pod$(random_string)
|
||||||
|
nwname=pod$(random_string)
|
||||||
|
|
||||||
|
run_podman 125 pod create --network $nwname --name $podname
|
||||||
|
# FIXME: podman and podman-remote do not return the same error message
|
||||||
|
# but consistency would be nice
|
||||||
|
is "$output" "Error: .*unable to find network with name or ID $nwname: network not found"
|
||||||
|
|
||||||
|
# Make sure the pod doesn't get created on failure
|
||||||
|
run_podman 1 pod exists $podname
|
||||||
|
}
|
||||||
|
|
||||||
# vim: filetype=sh
|
# vim: filetype=sh
|
||||||
|
Reference in New Issue
Block a user