63 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Package errdefs defines the common errors used throughout containerd
 | 
						|
// packages.
 | 
						|
//
 | 
						|
// Use with errors.Wrap and error.Wrapf to add context to an error.
 | 
						|
//
 | 
						|
// To detect an error class, use the IsXXX functions to tell whether an error
 | 
						|
// is of a certain type.
 | 
						|
//
 | 
						|
// The functions ToGRPC and FromGRPC can be used to map server-side and
 | 
						|
// client-side errors to the correct types.
 | 
						|
package errdefs
 | 
						|
 | 
						|
import "github.com/pkg/errors"
 | 
						|
 | 
						|
// Definitions of common error types used throughout containerd. All containerd
 | 
						|
// errors returned by most packages will map into one of these errors classes.
 | 
						|
// Packages should return errors of these types when they want to instruct a
 | 
						|
// client to take a particular action.
 | 
						|
//
 | 
						|
// For the most part, we just try to provide local grpc errors. Most conditions
 | 
						|
// map very well to those defined by grpc.
 | 
						|
var (
 | 
						|
	ErrUnknown            = errors.New("unknown") // used internally to represent a missed mapping.
 | 
						|
	ErrInvalidArgument    = errors.New("invalid argument")
 | 
						|
	ErrNotFound           = errors.New("not found")
 | 
						|
	ErrAlreadyExists      = errors.New("already exists")
 | 
						|
	ErrFailedPrecondition = errors.New("failed precondition")
 | 
						|
	ErrUnavailable        = errors.New("unavailable")
 | 
						|
	ErrNotImplemented     = errors.New("not implemented") // represents not supported and unimplemented
 | 
						|
)
 | 
						|
 | 
						|
// IsInvalidArgument returns true if the error is due to an invalid argument
 | 
						|
func IsInvalidArgument(err error) bool {
 | 
						|
	return errors.Cause(err) == ErrInvalidArgument
 | 
						|
}
 | 
						|
 | 
						|
// IsNotFound returns true if the error is due to a missing object
 | 
						|
func IsNotFound(err error) bool {
 | 
						|
	return errors.Cause(err) == ErrNotFound
 | 
						|
}
 | 
						|
 | 
						|
// IsAlreadyExists returns true if the error is due to an already existing
 | 
						|
// metadata item
 | 
						|
func IsAlreadyExists(err error) bool {
 | 
						|
	return errors.Cause(err) == ErrAlreadyExists
 | 
						|
}
 | 
						|
 | 
						|
// IsFailedPrecondition returns true if an operation could not proceed to the
 | 
						|
// lack of a particular condition
 | 
						|
func IsFailedPrecondition(err error) bool {
 | 
						|
	return errors.Cause(err) == ErrFailedPrecondition
 | 
						|
}
 | 
						|
 | 
						|
// IsUnavailable returns true if the error is due to a resource being unavailable
 | 
						|
func IsUnavailable(err error) bool {
 | 
						|
	return errors.Cause(err) == ErrUnavailable
 | 
						|
}
 | 
						|
 | 
						|
// IsNotImplemented returns true if the error is due to not being implemented
 | 
						|
func IsNotImplemented(err error) bool {
 | 
						|
	return errors.Cause(err) == ErrNotImplemented
 | 
						|
}
 |