From 109e12aa56a6ed42ec79319122f7d6b14d5395a8 Mon Sep 17 00:00:00 2001 From: Sebastien Boeuf Date: Mon, 12 Nov 2018 13:44:29 -0800 Subject: [PATCH] sandbox: Export Stop() to the API level In order to support use cases such as containerd-shim-v2 where we would have a long running process holding the sandbox pointer, there would be no reason to call into the stateless function StopSandbox(), which would recreate a new sandbox pointer and the corresponding ones for containers. Fixes #903 Signed-off-by: Sebastien Boeuf --- virtcontainers/api.go | 7 +------ virtcontainers/interfaces.go | 1 + virtcontainers/pkg/vcmock/sandbox.go | 5 +++++ virtcontainers/sandbox.go | 11 ++++++++--- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/virtcontainers/api.go b/virtcontainers/api.go index 039dc2e0c8..59070d30ab 100644 --- a/virtcontainers/api.go +++ b/virtcontainers/api.go @@ -264,16 +264,11 @@ func StopSandbox(ctx context.Context, sandboxID string) (VCSandbox, error) { defer s.releaseStatelessSandbox() // Stop it. - err = s.stop() + err = s.Stop() if err != nil { return nil, err } - // Remove the network. - if err := s.removeNetwork(); err != nil { - return nil, err - } - return s, nil } diff --git a/virtcontainers/interfaces.go b/virtcontainers/interfaces.go index 083d23a14a..5b132a4765 100644 --- a/virtcontainers/interfaces.go +++ b/virtcontainers/interfaces.go @@ -67,6 +67,7 @@ type VCSandbox interface { SetAnnotations(annotations map[string]string) error Start() error + Stop() error Pause() error Resume() error Release() error diff --git a/virtcontainers/pkg/vcmock/sandbox.go b/virtcontainers/pkg/vcmock/sandbox.go index 2350207219..d0fd57f0e1 100644 --- a/virtcontainers/pkg/vcmock/sandbox.go +++ b/virtcontainers/pkg/vcmock/sandbox.go @@ -72,6 +72,11 @@ func (s *Sandbox) Start() error { return nil } +// Stop implements the VCSandbox function of the same name. +func (s *Sandbox) Stop() error { + return nil +} + // Pause implements the VCSandbox function of the same name. func (s *Sandbox) Pause() error { return nil diff --git a/virtcontainers/sandbox.go b/virtcontainers/sandbox.go index 2899418955..e099d8e3a5 100644 --- a/virtcontainers/sandbox.go +++ b/virtcontainers/sandbox.go @@ -1464,9 +1464,9 @@ func (s *Sandbox) Start() error { return nil } -// stop stops a sandbox. The containers that are making the sandbox +// Stop stops a sandbox. The containers that are making the sandbox // will be destroyed. -func (s *Sandbox) stop() error { +func (s *Sandbox) Stop() error { span, _ := s.trace("stop") defer span.Finish() @@ -1489,7 +1489,12 @@ func (s *Sandbox) stop() error { return err } - return s.setSandboxState(StateStopped) + if err := s.setSandboxState(StateStopped); err != nil { + return err + } + + // Remove the network. + return s.removeNetwork() } // Pause pauses the sandbox