linux: Return grpc error description only

This avoid having "rpc error: code = Unknown" in the final output.

Signed-off-by: Kenfe-Mickael Laventure <mickael.laventure@gmail.com>
This commit is contained in:
Kenfe-Mickael Laventure 2017-06-14 08:46:53 -07:00
parent 7dbf26ecf6
commit 171759a233
No known key found for this signature in database
GPG Key ID: 40CF16616B361216
2 changed files with 36 additions and 8 deletions

View File

@ -5,7 +5,6 @@ package linux
import ( import (
"bytes" "bytes"
"context" "context"
"errors"
"fmt" "fmt"
"io" "io"
"io/ioutil" "io/ioutil"
@ -15,6 +14,8 @@ import (
"sync" "sync"
"time" "time"
"google.golang.org/grpc"
"github.com/containerd/containerd/api/services/shim" "github.com/containerd/containerd/api/services/shim"
"github.com/containerd/containerd/api/types/mount" "github.com/containerd/containerd/api/types/mount"
"github.com/containerd/containerd/api/types/task" "github.com/containerd/containerd/api/types/task"
@ -23,6 +24,7 @@ import (
"github.com/containerd/containerd/namespaces" "github.com/containerd/containerd/namespaces"
"github.com/containerd/containerd/plugin" "github.com/containerd/containerd/plugin"
runc "github.com/containerd/go-runc" runc "github.com/containerd/go-runc"
"github.com/pkg/errors"
"golang.org/x/sys/unix" "golang.org/x/sys/unix"
) )
@ -215,7 +217,7 @@ func (r *Runtime) Create(ctx context.Context, id string, opts plugin.CreateOpts)
} }
if _, err = s.Create(ctx, sopts); err != nil { if _, err = s.Create(ctx, sopts); err != nil {
os.RemoveAll(path) os.RemoveAll(path)
return nil, err return nil, errors.New(grpc.ErrorDesc(err))
} }
c := newTask(id, namespace, opts.Spec, s) c := newTask(id, namespace, opts.Spec, s)
if err := r.tasks.add(ctx, c); err != nil { if err := r.tasks.add(ctx, c); err != nil {
@ -244,7 +246,7 @@ func (r *Runtime) Delete(ctx context.Context, c plugin.Task) (*plugin.Exit, erro
} }
rsp, err := lc.shim.Delete(ctx, &shim.DeleteRequest{}) rsp, err := lc.shim.Delete(ctx, &shim.DeleteRequest{})
if err != nil { if err != nil {
return nil, err return nil, errors.New(grpc.ErrorDesc(err))
} }
lc.shim.Exit(ctx, &shim.ExitRequest{}) lc.shim.Exit(ctx, &shim.ExitRequest{})
r.tasks.delete(ctx, lc) r.tasks.delete(ctx, lc)

View File

@ -5,11 +5,14 @@ package linux
import ( import (
"context" "context"
"google.golang.org/grpc"
"github.com/containerd/containerd/api/services/shim" "github.com/containerd/containerd/api/services/shim"
"github.com/containerd/containerd/api/types/task" "github.com/containerd/containerd/api/types/task"
"github.com/containerd/containerd/plugin" "github.com/containerd/containerd/plugin"
protobuf "github.com/gogo/protobuf/types" protobuf "github.com/gogo/protobuf/types"
specs "github.com/opencontainers/runtime-spec/specs-go" specs "github.com/opencontainers/runtime-spec/specs-go"
"github.com/pkg/errors"
) )
type Task struct { type Task struct {
@ -40,13 +43,16 @@ func (c *Task) Info() plugin.TaskInfo {
func (c *Task) Start(ctx context.Context) error { func (c *Task) Start(ctx context.Context) error {
_, err := c.shim.Start(ctx, &shim.StartRequest{}) _, err := c.shim.Start(ctx, &shim.StartRequest{})
if err != nil {
err = errors.New(grpc.ErrorDesc(err))
}
return err return err
} }
func (c *Task) State(ctx context.Context) (plugin.State, error) { func (c *Task) State(ctx context.Context) (plugin.State, error) {
response, err := c.shim.State(ctx, &shim.StateRequest{}) response, err := c.shim.State(ctx, &shim.StateRequest{})
if err != nil { if err != nil {
return plugin.State{}, err return plugin.State{}, errors.New(grpc.ErrorDesc(err))
} }
var status plugin.Status var status plugin.Status
switch response.Status { switch response.Status {
@ -72,11 +78,17 @@ func (c *Task) State(ctx context.Context) (plugin.State, error) {
func (c *Task) Pause(ctx context.Context) error { func (c *Task) Pause(ctx context.Context) error {
_, err := c.shim.Pause(ctx, &shim.PauseRequest{}) _, err := c.shim.Pause(ctx, &shim.PauseRequest{})
if err != nil {
err = errors.New(grpc.ErrorDesc(err))
}
return err return err
} }
func (c *Task) Resume(ctx context.Context) error { func (c *Task) Resume(ctx context.Context) error {
_, err := c.shim.Resume(ctx, &shim.ResumeRequest{}) _, err := c.shim.Resume(ctx, &shim.ResumeRequest{})
if err != nil {
err = errors.New(grpc.ErrorDesc(err))
}
return err return err
} }
@ -86,6 +98,9 @@ func (c *Task) Kill(ctx context.Context, signal uint32, pid uint32, all bool) er
Pid: pid, Pid: pid,
All: all, All: all,
}) })
if err != nil {
err = errors.New(grpc.ErrorDesc(err))
}
return err return err
} }
@ -102,7 +117,7 @@ func (c *Task) Exec(ctx context.Context, opts plugin.ExecOpts) (plugin.Process,
} }
resp, err := c.shim.Exec(ctx, request) resp, err := c.shim.Exec(ctx, request)
if err != nil { if err != nil {
return nil, err return nil, errors.New(grpc.ErrorDesc(err))
} }
return &Process{ return &Process{
@ -115,9 +130,8 @@ func (c *Task) Processes(ctx context.Context) ([]uint32, error) {
resp, err := c.shim.Processes(ctx, &shim.ProcessesRequest{ resp, err := c.shim.Processes(ctx, &shim.ProcessesRequest{
ID: c.containerID, ID: c.containerID,
}) })
if err != nil { if err != nil {
return nil, err return nil, errors.New(grpc.ErrorDesc(err))
} }
pids := make([]uint32, 0, len(resp.Processes)) pids := make([]uint32, 0, len(resp.Processes))
@ -135,6 +149,9 @@ func (c *Task) Pty(ctx context.Context, pid uint32, size plugin.ConsoleSize) err
Width: size.Width, Width: size.Width,
Height: size.Height, Height: size.Height,
}) })
if err != nil {
err = errors.New(grpc.ErrorDesc(err))
}
return err return err
} }
@ -142,6 +159,9 @@ func (c *Task) CloseStdin(ctx context.Context, pid uint32) error {
_, err := c.shim.CloseStdin(ctx, &shim.CloseStdinRequest{ _, err := c.shim.CloseStdin(ctx, &shim.CloseStdinRequest{
Pid: pid, Pid: pid,
}) })
if err != nil {
err = errors.New(grpc.ErrorDesc(err))
}
return err return err
} }
@ -155,6 +175,9 @@ func (c *Task) Checkpoint(ctx context.Context, opts plugin.CheckpointOpts) error
EmptyNamespaces: opts.EmptyNamespaces, EmptyNamespaces: opts.EmptyNamespaces,
CheckpointPath: opts.Path, CheckpointPath: opts.Path,
}) })
if err != nil {
err = errors.New(grpc.ErrorDesc(err))
}
return err return err
} }
@ -163,7 +186,7 @@ func (c *Task) DeleteProcess(ctx context.Context, pid uint32) (*plugin.Exit, err
Pid: pid, Pid: pid,
}) })
if err != nil { if err != nil {
return nil, err return nil, errors.New(grpc.ErrorDesc(err))
} }
return &plugin.Exit{ return &plugin.Exit{
Status: r.ExitStatus, Status: r.ExitStatus,
@ -181,6 +204,9 @@ func (p *Process) Kill(ctx context.Context, signal uint32, _ bool) error {
Signal: signal, Signal: signal,
Pid: uint32(p.pid), Pid: uint32(p.pid),
}) })
if err != nil {
err = errors.New(grpc.ErrorDesc(err))
}
return err return err
} }