diff --git a/virtcontainers/api.go b/virtcontainers/api.go index 59070d30ab..a43c13c113 100644 --- a/virtcontainers/api.go +++ b/virtcontainers/api.go @@ -502,19 +502,7 @@ func StopContainer(ctx context.Context, sandboxID, containerID string) (VCContai } defer s.releaseStatelessSandbox() - // Fetch the container. - c, err := s.findContainer(containerID) - if err != nil { - return nil, err - } - - // Stop it. - err = c.stop() - if err != nil { - return nil, err - } - - return c, nil + return s.StopContainer(containerID) } // EnterContainer is the virtcontainers container command execution entry point. diff --git a/virtcontainers/interfaces.go b/virtcontainers/interfaces.go index 5b132a4765..73d2d8a5bf 100644 --- a/virtcontainers/interfaces.go +++ b/virtcontainers/interfaces.go @@ -77,6 +77,7 @@ type VCSandbox interface { CreateContainer(contConfig ContainerConfig) (VCContainer, error) DeleteContainer(contID string) (VCContainer, error) StartContainer(containerID string) (VCContainer, error) + StopContainer(containerID string) (VCContainer, error) StatusContainer(containerID string) (ContainerStatus, error) StatsContainer(containerID string) (ContainerStats, error) EnterContainer(containerID string, cmd Cmd) (VCContainer, *Process, error) diff --git a/virtcontainers/pkg/vcmock/sandbox.go b/virtcontainers/pkg/vcmock/sandbox.go index d0fd57f0e1..a6799c1129 100644 --- a/virtcontainers/pkg/vcmock/sandbox.go +++ b/virtcontainers/pkg/vcmock/sandbox.go @@ -107,6 +107,11 @@ func (s *Sandbox) StartContainer(contID string) (vc.VCContainer, error) { return &Container{}, nil } +// StopContainer implements the VCSandbox function of the same name. +func (s *Sandbox) StopContainer(contID string) (vc.VCContainer, error) { + return &Container{}, nil +} + // StatusContainer implements the VCSandbox function of the same name. func (s *Sandbox) StatusContainer(contID string) (vc.ContainerStatus, error) { return vc.ContainerStatus{}, nil diff --git a/virtcontainers/sandbox.go b/virtcontainers/sandbox.go index e099d8e3a5..20f43820e7 100644 --- a/virtcontainers/sandbox.go +++ b/virtcontainers/sandbox.go @@ -1320,6 +1320,22 @@ func (s *Sandbox) StartContainer(containerID string) (VCContainer, error) { return c, nil } +// StopContainer stops a container in the sandbox +func (s *Sandbox) StopContainer(containerID string) (VCContainer, error) { + // Fetch the container. + c, err := s.findContainer(containerID) + if err != nil { + return nil, err + } + + // Stop it. + if err := c.stop(); err != nil { + return nil, err + } + + return c, nil +} + // DeleteContainer deletes a container from the sandbox func (s *Sandbox) DeleteContainer(containerID string) (VCContainer, error) { if containerID == "" {