ebcb7d6b40
Use strongly typed errors to set HTTP status codes. Error interfaces are defined in the api/errors package and errors returned from controllers are checked against these interfaces. Errors can be wraeped in a pkg/errors.Causer, as long as somewhere in the line of causes one of the interfaces is implemented. The special error interfaces take precedence over Causer, meaning if both Causer and one of the new error interfaces are implemented, the Causer is not traversed. Signed-off-by: Brian Goff <cpuguy83@gmail.com>
54 lines
1.5 KiB
Go
54 lines
1.5 KiB
Go
package errdefs
|
|
|
|
// ErrNotFound signals that the requested object doesn't exist
|
|
type ErrNotFound interface {
|
|
NotFound()
|
|
}
|
|
|
|
// ErrInvalidParameter signals that the user input is invalid
|
|
type ErrInvalidParameter interface {
|
|
InvalidParameter()
|
|
}
|
|
|
|
// ErrConflict signals that some internal state conflicts with the requested action and can't be performed.
|
|
// A change in state should be able to clear this error.
|
|
type ErrConflict interface {
|
|
Conflict()
|
|
}
|
|
|
|
// ErrUnauthorized is used to signify that the user is not authorized to perform a specific action
|
|
type ErrUnauthorized interface {
|
|
Unauthorized()
|
|
}
|
|
|
|
// ErrUnavailable signals that the requested action/subsystem is not available.
|
|
type ErrUnavailable interface {
|
|
Unavailable()
|
|
}
|
|
|
|
// ErrForbidden signals that the requested action cannot be performed under any circumstances.
|
|
// When a ErrForbidden is returned, the caller should never retry the action.
|
|
type ErrForbidden interface {
|
|
Forbidden()
|
|
}
|
|
|
|
// ErrSystem signals that some internal error occurred.
|
|
// An example of this would be a failed mount request.
|
|
type ErrSystem interface {
|
|
ErrSystem()
|
|
}
|
|
|
|
// ErrNotModified signals that an action can't be performed because it's already in the desired state
|
|
type ErrNotModified interface {
|
|
NotModified()
|
|
}
|
|
|
|
// ErrNotImplemented signals that the requested action/feature is not implemented on the system as configured.
|
|
type ErrNotImplemented interface {
|
|
NotImplemented()
|
|
}
|
|
|
|
// ErrUnknown signals that the kind of error that occurred is not known.
|
|
type ErrUnknown interface {
|
|
Unknown()
|
|
}
|