Move specific errors to their respective packages
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
This commit is contained in:
parent
abc152d14c
commit
61d930ad5b
10
client.go
10
client.go
@ -137,7 +137,7 @@ func New(address string, opts ...ClientOpt) (*Client, error) {
|
|||||||
c.conn, c.connector = conn, connector
|
c.conn, c.connector = conn, connector
|
||||||
}
|
}
|
||||||
if copts.services == nil && c.conn == nil {
|
if copts.services == nil && c.conn == nil {
|
||||||
return nil, errdefs.ErrNoGRPCAndService
|
return nil, ErrNoGRPCAndService
|
||||||
}
|
}
|
||||||
|
|
||||||
// check namespace labels for default runtime
|
// check namespace labels for default runtime
|
||||||
@ -196,7 +196,7 @@ type Client struct {
|
|||||||
// Reconnect re-establishes the GRPC connection to the containerd daemon
|
// Reconnect re-establishes the GRPC connection to the containerd daemon
|
||||||
func (c *Client) Reconnect() error {
|
func (c *Client) Reconnect() error {
|
||||||
if c.connector == nil {
|
if c.connector == nil {
|
||||||
return errdefs.ErrReconnectFailed
|
return ErrReconnectFailed
|
||||||
}
|
}
|
||||||
c.connMu.Lock()
|
c.connMu.Lock()
|
||||||
defer c.connMu.Unlock()
|
defer c.connMu.Unlock()
|
||||||
@ -219,7 +219,7 @@ func (c *Client) IsServing(ctx context.Context) (bool, error) {
|
|||||||
c.connMu.Lock()
|
c.connMu.Lock()
|
||||||
if c.conn == nil {
|
if c.conn == nil {
|
||||||
c.connMu.Unlock()
|
c.connMu.Unlock()
|
||||||
return false, errdefs.ErrNoGRPC
|
return false, ErrNoGRPC
|
||||||
}
|
}
|
||||||
c.connMu.Unlock()
|
c.connMu.Unlock()
|
||||||
r, err := c.HealthService().Check(ctx, &grpc_health_v1.HealthCheckRequest{}, grpc.WaitForReady(true))
|
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 {
|
if fetchCtx.Unpack {
|
||||||
return images.Image{}, errdefs.ErrUnpackNotSupported
|
return images.Image{}, ErrUnpackNotSupported
|
||||||
}
|
}
|
||||||
|
|
||||||
if fetchCtx.PlatformMatcher == nil {
|
if fetchCtx.PlatformMatcher == nil {
|
||||||
@ -656,7 +656,7 @@ func (c *Client) Version(ctx context.Context) (Version, error) {
|
|||||||
c.connMu.Lock()
|
c.connMu.Lock()
|
||||||
if c.conn == nil {
|
if c.conn == nil {
|
||||||
c.connMu.Unlock()
|
c.connMu.Unlock()
|
||||||
return Version{}, errdefs.ErrNoGRPC
|
return Version{}, ErrNoGRPC
|
||||||
}
|
}
|
||||||
c.connMu.Unlock()
|
c.connMu.Unlock()
|
||||||
response, err := c.VersionService().Version(ctx, &ptypes.Empty{})
|
response, err := c.VersionService().Version(ctx, &ptypes.Empty{})
|
||||||
|
32
cmd/containerd/command/error.go
Normal file
32
cmd/containerd/command/error.go
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
Copyright The containerd Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package command
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/pkg/errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
// ErrUnknownLevel is returned when an unknown debugging level is encountered
|
||||||
|
ErrUnknownLevel = errors.New("unknown level")
|
||||||
|
// ErrRegisterAndUnregisterService is returned when both register and unregister flags are specified
|
||||||
|
ErrRegisterAndUnregisterService = errors.New("--register-service and --unregister-service cannot be used together")
|
||||||
|
// ErrEmptyTopic is returned when no topic is provided
|
||||||
|
ErrEmptyTopic = errors.New("topic required to publish event")
|
||||||
|
// ErrEmptyGRCPAddress is returned when the grpc address is empty
|
||||||
|
ErrEmptyGRCPAddress = errors.New("grpc address cannot be empty")
|
||||||
|
)
|
@ -27,7 +27,6 @@ import (
|
|||||||
"runtime"
|
"runtime"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/containerd/containerd/errdefs"
|
|
||||||
"github.com/containerd/containerd/log"
|
"github.com/containerd/containerd/log"
|
||||||
"github.com/containerd/containerd/mount"
|
"github.com/containerd/containerd/mount"
|
||||||
"github.com/containerd/containerd/services/server"
|
"github.com/containerd/containerd/services/server"
|
||||||
@ -153,7 +152,7 @@ func App() *cli.App {
|
|||||||
ttrpcAddress = fmt.Sprintf("%s.ttrpc", config.GRPC.Address)
|
ttrpcAddress = fmt.Sprintf("%s.ttrpc", config.GRPC.Address)
|
||||||
)
|
)
|
||||||
if address == "" {
|
if address == "" {
|
||||||
return errdefs.ErrEmptyGRCPAddress
|
return ErrEmptyGRCPAddress
|
||||||
}
|
}
|
||||||
log.G(ctx).WithFields(logrus.Fields{
|
log.G(ctx).WithFields(logrus.Fields{
|
||||||
"version": version.Version,
|
"version": version.Version,
|
||||||
|
@ -51,7 +51,7 @@ var publishCommand = cli.Command{
|
|||||||
ctx := namespaces.WithNamespace(gocontext.Background(), context.String("namespace"))
|
ctx := namespaces.WithNamespace(gocontext.Background(), context.String("namespace"))
|
||||||
topic := context.String("topic")
|
topic := context.String("topic")
|
||||||
if topic == "" {
|
if topic == "" {
|
||||||
return errdefs.ErrEmptyTopic
|
return ErrEmptyTopic
|
||||||
}
|
}
|
||||||
payload, err := getEventPayload(os.Stdin)
|
payload, err := getEventPayload(os.Stdin)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -27,7 +27,6 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"github.com/containerd/containerd/errdefs"
|
|
||||||
"github.com/containerd/containerd/services/server"
|
"github.com/containerd/containerd/services/server"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
"github.com/urfave/cli"
|
"github.com/urfave/cli"
|
||||||
@ -162,7 +161,7 @@ func (h *etwHook) Fire(e *logrus.Entry) error {
|
|||||||
etype = windows.EVENTLOG_INFORMATION_TYPE
|
etype = windows.EVENTLOG_INFORMATION_TYPE
|
||||||
eid = eventDebug
|
eid = eventDebug
|
||||||
default:
|
default:
|
||||||
return errdefs.ErrUnknownLevel
|
return ErrUnknownLevel
|
||||||
}
|
}
|
||||||
|
|
||||||
// If there is additional data, include it as a second string.
|
// If there is additional data, include it as a second string.
|
||||||
@ -311,7 +310,7 @@ func registerUnregisterService(root string) (bool, error) {
|
|||||||
|
|
||||||
if unregisterServiceFlag {
|
if unregisterServiceFlag {
|
||||||
if registerServiceFlag {
|
if registerServiceFlag {
|
||||||
return true, errdefs.ErrRegisterAndUnregisterService
|
return true, ErrRegisterAndUnregisterService
|
||||||
}
|
}
|
||||||
return true, unregisterService()
|
return true, unregisterService()
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,6 @@ import (
|
|||||||
"github.com/containerd/containerd/cmd/ctr/commands"
|
"github.com/containerd/containerd/cmd/ctr/commands"
|
||||||
"github.com/containerd/containerd/cmd/ctr/commands/run"
|
"github.com/containerd/containerd/cmd/ctr/commands/run"
|
||||||
"github.com/containerd/containerd/containers"
|
"github.com/containerd/containerd/containers"
|
||||||
"github.com/containerd/containerd/errdefs"
|
|
||||||
"github.com/containerd/containerd/log"
|
"github.com/containerd/containerd/log"
|
||||||
"github.com/containerd/typeurl"
|
"github.com/containerd/typeurl"
|
||||||
"github.com/urfave/cli"
|
"github.com/urfave/cli"
|
||||||
@ -65,17 +64,17 @@ var createCommand = cli.Command{
|
|||||||
if config {
|
if config {
|
||||||
id = context.Args().First()
|
id = context.Args().First()
|
||||||
if context.NArg() > 1 {
|
if context.NArg() > 1 {
|
||||||
return errdefs.ErrArgConfigFile
|
return commands.ErrArgConfigFile
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
id = context.Args().Get(1)
|
id = context.Args().Get(1)
|
||||||
ref = context.Args().First()
|
ref = context.Args().First()
|
||||||
if ref == "" {
|
if ref == "" {
|
||||||
return errdefs.ErrUnprovidedImageRef
|
return commands.ErrUnprovidedImageRef
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if id == "" {
|
if id == "" {
|
||||||
return errdefs.ErrEmptyContainerID
|
return commands.ErrEmptyContainerID
|
||||||
}
|
}
|
||||||
client, ctx, cancel, err := commands.NewClient(context)
|
client, ctx, cancel, err := commands.NewClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -168,7 +167,7 @@ var deleteCommand = cli.Command{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if context.NArg() == 0 {
|
if context.NArg() == 0 {
|
||||||
return errdefs.ErrDeleteNoneContainer
|
return commands.ErrDeleteNoneContainer
|
||||||
}
|
}
|
||||||
for _, arg := range context.Args() {
|
for _, arg := range context.Args() {
|
||||||
if err := deleteContainer(ctx, client, arg, deleteOpts...); err != nil {
|
if err := deleteContainer(ctx, client, arg, deleteOpts...); err != nil {
|
||||||
@ -214,7 +213,7 @@ var setLabelsCommand = cli.Command{
|
|||||||
Action: func(context *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
containerID, labels := commands.ObjectWithLabelArgs(context)
|
containerID, labels := commands.ObjectWithLabelArgs(context)
|
||||||
if containerID == "" {
|
if containerID == "" {
|
||||||
return errdefs.ErrEmptyContainerID
|
return commands.ErrEmptyContainerID
|
||||||
}
|
}
|
||||||
client, ctx, cancel, err := commands.NewClient(context)
|
client, ctx, cancel, err := commands.NewClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -250,7 +249,7 @@ var infoCommand = cli.Command{
|
|||||||
Action: func(context *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
id := context.Args().First()
|
id := context.Args().First()
|
||||||
if id == "" {
|
if id == "" {
|
||||||
return errdefs.ErrEmptyContainerID
|
return commands.ErrEmptyContainerID
|
||||||
}
|
}
|
||||||
client, ctx, cancel, err := commands.NewClient(context)
|
client, ctx, cancel, err := commands.NewClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
32
cmd/ctr/commands/error.go
Normal file
32
cmd/ctr/commands/error.go
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
Copyright The containerd Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package commands
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/pkg/errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
// ErrArgConfigFile is returned when the configuration for a spec is provided
|
||||||
|
ErrArgConfigFile = errors.New("with spec config file, only container id should be provided")
|
||||||
|
// ErrUnprovidedImageRef is returned when no image reference is provided
|
||||||
|
ErrUnprovidedImageRef = errors.New("image ref must be provided")
|
||||||
|
// ErrEmptyContainerID is returned when no container id is provided
|
||||||
|
ErrEmptyContainerID = errors.New("container id must be provided")
|
||||||
|
// ErrDeleteNoneContainer is returned when no container ids are provided for deletion
|
||||||
|
ErrDeleteNoneContainer = errors.New("must specify at least one container to delete")
|
||||||
|
)
|
@ -40,25 +40,13 @@ import (
|
|||||||
// For the most part, we just try to provide local grpc errors. Most conditions
|
// For the most part, we just try to provide local grpc errors. Most conditions
|
||||||
// map very well to those defined by grpc.
|
// map very well to those defined by grpc.
|
||||||
var (
|
var (
|
||||||
ErrUnknown = errors.New("unknown") // used internally to represent a missed mapping.
|
ErrUnknown = errors.New("unknown") // used internally to represent a missed mapping.
|
||||||
ErrInvalidArgument = errors.New("invalid argument")
|
ErrInvalidArgument = errors.New("invalid argument")
|
||||||
ErrNotFound = errors.New("not found")
|
ErrNotFound = errors.New("not found")
|
||||||
ErrAlreadyExists = errors.New("already exists")
|
ErrAlreadyExists = errors.New("already exists")
|
||||||
ErrFailedPrecondition = errors.New("failed precondition")
|
ErrFailedPrecondition = errors.New("failed precondition")
|
||||||
ErrUnavailable = errors.New("unavailable")
|
ErrUnavailable = errors.New("unavailable")
|
||||||
ErrNotImplemented = errors.New("not implemented") // represents not supported and unimplemented
|
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
|
// IsInvalidArgument returns true if the error is due to an invalid argument
|
||||||
|
32
error.go
Normal file
32
error.go
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
Copyright The containerd Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package containerd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/pkg/errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
// ErrNoGRPCAndService is returned when no connection or service is available
|
||||||
|
ErrNoGRPCAndService = errors.New("no grpc connection and service is available")
|
||||||
|
// ErrReconnectFailed is returned when no connector is available to reconnect
|
||||||
|
ErrReconnectFailed = errors.New("unable to reconnect to containerd, no connector available")
|
||||||
|
// ErrNoGRPC is returned when no grpc connect is available
|
||||||
|
ErrNoGRPC = errors.New("no grpc connection available")
|
||||||
|
// ErrUnpackNotSupported is returned when a fetch cannot unpack
|
||||||
|
ErrUnpackNotSupported = errors.New("unpack on fetch not supported, try pull")
|
||||||
|
)
|
Loading…
Reference in New Issue
Block a user