From 1de25c09e3c8c19b165434fe13766a8e9c266f51 Mon Sep 17 00:00:00 2001 From: Michael Crosby Date: Thu, 25 May 2017 10:15:35 -0700 Subject: [PATCH] Add pause resume to task Signed-off-by: Michael Crosby --- container.go | 6 ++++-- task.go | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/container.go b/container.go index 34c64c9c2..22ba64858 100644 --- a/container.go +++ b/container.go @@ -85,10 +85,12 @@ func (c *Container) NewTask(ctx context.Context, ioCreate IOCreation) (*Task, er if err != nil { return nil, err } - return &Task{ + t := &Task{ client: c.client, io: i, containerID: response.ContainerID, pid: response.Pid, - }, nil + } + c.task = t + return t, nil } diff --git a/task.go b/task.go index 53dd4f90c..132a58b46 100644 --- a/task.go +++ b/task.go @@ -189,6 +189,30 @@ func (t *Task) Kill(ctx context.Context, s syscall.Signal) error { return err } +func (t *Task) Pause(ctx context.Context) error { + _, err := t.client.tasks().Pause(ctx, &execution.PauseRequest{ + ContainerID: t.containerID, + }) + return err +} + +func (t *Task) Resume(ctx context.Context) error { + _, err := t.client.tasks().Resume(ctx, &execution.ResumeRequest{ + ContainerID: t.containerID, + }) + return err +} + +func (t *Task) Status(ctx context.Context) (string, error) { + r, err := t.client.tasks().Info(ctx, &execution.InfoRequest{ + ContainerID: t.containerID, + }) + if err != nil { + return "", err + } + return r.Task.Status.String(), nil +} + // Wait is a blocking call that will wait for the task to exit and return the exit status func (t *Task) Wait(ctx context.Context) (uint32, error) { events, err := t.client.tasks().Events(ctx, &execution.EventsRequest{})