centralize harded-code message

Signed-off-by: Fahed Dorgaa <fahed.dorgaa@gmail.com>
This commit is contained in:
Fahed Dorgaa 2019-07-13 15:07:23 +02:00
parent f2b6c31d0f
commit db95af43f3
6 changed files with 37 additions and 24 deletions

View File

@ -137,7 +137,7 @@ func New(address string, opts ...ClientOpt) (*Client, error) {
c.conn, c.connector = conn, connector
}
if copts.services == nil && c.conn == nil {
return nil, errors.New("no grpc connection or services is available")
return nil, errdefs.ErrNoGRPCAndService
}
// check namespace labels for default runtime
@ -196,7 +196,7 @@ type Client struct {
// Reconnect re-establishes the GRPC connection to the containerd daemon
func (c *Client) Reconnect() error {
if c.connector == nil {
return errors.New("unable to reconnect to containerd, no connector available")
return errdefs.ErrReconnectFailed
}
c.connMu.Lock()
defer c.connMu.Unlock()
@ -219,7 +219,7 @@ func (c *Client) IsServing(ctx context.Context) (bool, error) {
c.connMu.Lock()
if c.conn == nil {
c.connMu.Unlock()
return false, errors.New("no grpc connection available")
return false, errdefs.ErrNoGRPC
}
c.connMu.Unlock()
r, err := c.HealthService().Check(ctx, &grpc_health_v1.HealthCheckRequest{}, grpc.WaitForReady(true))
@ -350,7 +350,7 @@ func (c *Client) Fetch(ctx context.Context, ref string, opts ...RemoteOpt) (imag
}
if fetchCtx.Unpack {
return images.Image{}, errors.New("unpack on fetch not supported, try pull")
return images.Image{}, errdefs.ErrUnpackNotSupported
}
if fetchCtx.PlatformMatcher == nil {
@ -656,7 +656,7 @@ func (c *Client) Version(ctx context.Context) (Version, error) {
c.connMu.Lock()
if c.conn == nil {
c.connMu.Unlock()
return Version{}, errors.New("no grpc connection available")
return Version{}, errdefs.ErrNoGRPC
}
c.connMu.Unlock()
response, err := c.VersionService().Version(ctx, &ptypes.Empty{})

View File

@ -27,6 +27,7 @@ import (
"runtime"
"time"
"github.com/containerd/containerd/errdefs"
"github.com/containerd/containerd/log"
"github.com/containerd/containerd/mount"
"github.com/containerd/containerd/services/server"
@ -152,7 +153,7 @@ func App() *cli.App {
ttrpcAddress = fmt.Sprintf("%s.ttrpc", config.GRPC.Address)
)
if address == "" {
return errors.New("grpc address cannot be empty")
return errdefs.ErrEmptyGRCPAddress
}
log.G(ctx).WithFields(logrus.Fields{
"version": version.Version,

View File

@ -51,7 +51,7 @@ var publishCommand = cli.Command{
ctx := namespaces.WithNamespace(gocontext.Background(), context.String("namespace"))
topic := context.String("topic")
if topic == "" {
return errors.New("topic required to publish event")
return errdefs.ErrEmptyTopic
}
payload, err := getEventPayload(os.Stdin)
if err != nil {

View File

@ -18,7 +18,6 @@ package command
import (
"bytes"
"errors"
"fmt"
"io/ioutil"
"log"
@ -28,6 +27,7 @@ import (
"time"
"unsafe"
"github.com/containerd/containerd/errdefs"
"github.com/containerd/containerd/services/server"
"github.com/sirupsen/logrus"
"github.com/urfave/cli"
@ -162,7 +162,7 @@ func (h *etwHook) Fire(e *logrus.Entry) error {
etype = windows.EVENTLOG_INFORMATION_TYPE
eid = eventDebug
default:
return errors.New("unknown level")
return errdefs.ErrUnknownLevel
}
// If there is additional data, include it as a second string.
@ -311,7 +311,7 @@ func registerUnregisterService(root string) (bool, error) {
if unregisterServiceFlag {
if registerServiceFlag {
return true, errors.New("--register-service and --unregister-service cannot be used together")
return true, errdefs.ErrRegisterAndUnregisterService
}
return true, unregisterService()
}

View File

@ -28,9 +28,9 @@ import (
"github.com/containerd/containerd/cmd/ctr/commands"
"github.com/containerd/containerd/cmd/ctr/commands/run"
"github.com/containerd/containerd/containers"
"github.com/containerd/containerd/errdefs"
"github.com/containerd/containerd/log"
"github.com/containerd/typeurl"
"github.com/pkg/errors"
"github.com/urfave/cli"
)
@ -65,17 +65,17 @@ var createCommand = cli.Command{
if config {
id = context.Args().First()
if context.NArg() > 1 {
return errors.New("with spec config file, only container id should be provided")
return errdefs.ErrArgConfigFile
}
} else {
id = context.Args().Get(1)
ref = context.Args().First()
if ref == "" {
return errors.New("image ref must be provided")
return errdefs.ErrUnprovidedImageRef
}
}
if id == "" {
return errors.New("container id must be provided")
return errdefs.ErrEmptyContainerId
}
client, ctx, cancel, err := commands.NewClient(context)
if err != nil {
@ -168,7 +168,7 @@ var deleteCommand = cli.Command{
}
if context.NArg() == 0 {
return errors.New("must specify at least one container to delete")
return errdefs.ErrDeleteNoneContainer
}
for _, arg := range context.Args() {
if err := deleteContainer(ctx, client, arg, deleteOpts...); err != nil {
@ -214,7 +214,7 @@ var setLabelsCommand = cli.Command{
Action: func(context *cli.Context) error {
containerID, labels := commands.ObjectWithLabelArgs(context)
if containerID == "" {
return errors.New("container id must be provided")
return errdefs.ErrEmptyContainerId
}
client, ctx, cancel, err := commands.NewClient(context)
if err != nil {
@ -250,7 +250,7 @@ var infoCommand = cli.Command{
Action: func(context *cli.Context) error {
id := context.Args().First()
if id == "" {
return errors.New("container id must be provided")
return errdefs.ErrEmptyContainerId
}
client, ctx, cancel, err := commands.NewClient(context)
if err != nil {

View File

@ -47,6 +47,18 @@ var (
ErrFailedPrecondition = errors.New("failed precondition")
ErrUnavailable = errors.New("unavailable")
ErrNotImplemented = errors.New("not implemented") // represents not supported and unimplemented
ErrNoGRPCAndService = errors.New("no grpc connection and services is available")
ErrNoGRPC = errors.New("no grpc connection available")
ErrReconnectFailed = errors.New("unable to reconnect to containerd, no connector available")
ErrUnpackNotSupported = errors.New("unpack on fetch not supported, try pull")
ErrEmptyGRCPAddress = errors.New("grpc address cannot be empty")
ErrEmptyTopic = errors.New("topic required to publish event")
ErrUnknownLevel = errors.New("unknown level")
ErrRegisterAndUnregisterService = errors.New("--register-service and --unregister-service cannot be used together")
ErrArgConfigFile = errors.New("with spec config file, only container id should be provided")
ErrUnprovidedImageRef = errors.New("image ref must be provided")
ErrEmptyContainerId = errors.New("container id must be provided")
ErrDeleteNoneContainer = errors.New("must specify at least one container to delete")
)
// IsInvalidArgument returns true if the error is due to an invalid argument