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:
parent
7dbf26ecf6
commit
171759a233
@ -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)
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user