From 51ac7fe0c278d4eba127952ead7ca3e90ed7a705 Mon Sep 17 00:00:00 2001 From: fupan Date: Wed, 11 Jul 2018 16:15:15 +0800 Subject: [PATCH] provision: add the rollback function for createsandbox failed Signed-off-by: fupan --- daemon/pod/provision.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/daemon/pod/provision.go b/daemon/pod/provision.go index 229ac7f0..ac171c42 100644 --- a/daemon/pod/provision.go +++ b/daemon/pod/provision.go @@ -34,17 +34,22 @@ func CreateXPod(factory *PodFactory, spec *apitypes.UserPod) (*XPod, error) { p.releaseNames(spec.Containers) } }() - err = p.createSandbox(spec) //TODO: add defer for rollback - if err != nil { - return nil, err - } defer func() { if err != nil && p.sandbox != nil { + status := p.sandbox.Status() + if status.State.State == vc.StateRunning { + vc.StopSandbox(p.sandbox.ID()) + } p.sandbox.Delete() } }() + err = p.createSandbox(spec) + if err != nil { + return nil, err + } + err = p.initResources(spec, true) if err != nil { return nil, err