summaryrefslogtreecommitdiffhomepage
path: root/pkg/shim
diff options
context:
space:
mode:
authorTravis DePrato <travisdeprato@gmail.com>2021-01-10 22:52:15 -0800
committerTravis DePrato <travisdeprato@gmail.com>2021-01-13 13:06:15 -0800
commit37855aff121a7cf9deae0405910a62518e806a9e (patch)
tree3ffe56f23de2ead4014ca35473c1a8f55693392d /pkg/shim
parent64bff178b8a3091a79d7a3cc7c255542fdd3fd80 (diff)
Add support for pause/restore in containerd shim
Diffstat (limited to 'pkg/shim')
-rw-r--r--pkg/shim/runsc/runsc.go14
-rw-r--r--pkg/shim/service.go6
2 files changed, 18 insertions, 2 deletions
diff --git a/pkg/shim/runsc/runsc.go b/pkg/shim/runsc/runsc.go
index aedaf5ee5..e1d616d6f 100644
--- a/pkg/shim/runsc/runsc.go
+++ b/pkg/shim/runsc/runsc.go
@@ -167,6 +167,20 @@ func (r *Runsc) Create(context context.Context, id, bundle string, opts *CreateO
return err
}
+func (r *Runsc) Pause(context context.Context, id string) error {
+ if _, err := cmdOutput(r.command(context, "pause", id), true); err != nil {
+ return fmt.Errorf("unable to pause: %s", err)
+ }
+ return nil
+}
+
+func (r *Runsc) Resume(context context.Context, id string) error {
+ if _, err := cmdOutput(r.command(context, "pause", id), true); err != nil {
+ return fmt.Errorf("unable to resume: %s", err)
+ }
+ return nil
+}
+
// Start will start an already created container.
func (r *Runsc) Start(context context.Context, id string, cio runc.IO) error {
cmd := r.command(context, "start", id)
diff --git a/pkg/shim/service.go b/pkg/shim/service.go
index 9aba26ac7..844210abb 100644
--- a/pkg/shim/service.go
+++ b/pkg/shim/service.go
@@ -612,13 +612,15 @@ func (s *service) State(ctx context.Context, r *taskAPI.StateRequest) (*taskAPI.
// Pause the container.
func (s *service) Pause(ctx context.Context, r *taskAPI.PauseRequest) (*types.Empty, error) {
log.L.Debugf("Pause, id: %s", r.ID)
- return empty, errdefs.ToGRPC(errdefs.ErrNotImplemented)
+ err := s.task.Runtime().Pause(ctx, r.ID)
+ return empty, err
}
// Resume the container.
func (s *service) Resume(ctx context.Context, r *taskAPI.ResumeRequest) (*types.Empty, error) {
log.L.Debugf("Resume, id: %s", r.ID)
- return empty, errdefs.ToGRPC(errdefs.ErrNotImplemented)
+ err := s.task.Runtime().Resume(ctx, r.ID)
+ return empty, err
}
// Kill a process with the provided signal.