diff --git a/virtcontainers/api.go b/virtcontainers/api.go index c564b9461..55ccf6ddf 100644 --- a/virtcontainers/api.go +++ b/virtcontainers/api.go @@ -784,17 +784,11 @@ func togglePauseContainer(ctx context.Context, sandboxID, containerID string, pa } defer s.releaseStatelessSandbox() - // Fetch the container. - c, err := s.findContainer(containerID) - if err != nil { - return err - } - if pause { - return c.pause() + return s.PauseContainer(containerID) } - return c.resume() + return s.ResumeContainer(containerID) } // PauseContainer is the virtcontainers container pause entry point. diff --git a/virtcontainers/interfaces.go b/virtcontainers/interfaces.go index 82e753c35..10d03cdc0 100644 --- a/virtcontainers/interfaces.go +++ b/virtcontainers/interfaces.go @@ -81,6 +81,8 @@ type VCSandbox interface { KillContainer(containerID string, signal syscall.Signal, all bool) error StatusContainer(containerID string) (ContainerStatus, error) StatsContainer(containerID string) (ContainerStats, error) + PauseContainer(containerID string) error + ResumeContainer(containerID string) error EnterContainer(containerID string, cmd Cmd) (VCContainer, *Process, error) UpdateContainer(containerID string, resources specs.LinuxResources) error ProcessListContainer(containerID string, options ProcessListOptions) (ProcessList, error) diff --git a/virtcontainers/pkg/vcmock/sandbox.go b/virtcontainers/pkg/vcmock/sandbox.go index 2d3dfb14f..938248b78 100644 --- a/virtcontainers/pkg/vcmock/sandbox.go +++ b/virtcontainers/pkg/vcmock/sandbox.go @@ -127,6 +127,16 @@ func (s *Sandbox) StatsContainer(contID string) (vc.ContainerStats, error) { return vc.ContainerStats{}, nil } +// PauseContainer implements the VCSandbox function of the same name. +func (s *Sandbox) PauseContainer(contID string) error { + return nil +} + +// ResumeContainer implements the VCSandbox function of the same name. +func (s *Sandbox) ResumeContainer(contID string) error { + return nil +} + // Status implements the VCSandbox function of the same name. func (s *Sandbox) Status() vc.SandboxStatus { return vc.SandboxStatus{} diff --git a/virtcontainers/sandbox.go b/virtcontainers/sandbox.go index d8fa76dfe..c6cf59699 100644 --- a/virtcontainers/sandbox.go +++ b/virtcontainers/sandbox.go @@ -1463,6 +1463,30 @@ func (s *Sandbox) StatsContainer(containerID string) (ContainerStats, error) { return *stats, nil } +// PauseContainer pauses a running container. +func (s *Sandbox) PauseContainer(containerID string) error { + // Fetch the container. + c, err := s.findContainer(containerID) + if err != nil { + return err + } + + // Pause the container. + return c.pause() +} + +// ResumeContainer resumes a paused container. +func (s *Sandbox) ResumeContainer(containerID string) error { + // Fetch the container. + c, err := s.findContainer(containerID) + if err != nil { + return err + } + + // Resume the container. + return c.resume() +} + // createContainers registers all containers to the proxy, create the // containers in the guest and starts one shim per container. func (s *Sandbox) createContainers() error {