Documentation
¶
Index ¶
- func As(err error, target any) bool
- func E(ctx context.Context, opt ...Option) error
- func Is(err, target error) bool
- func IsCheckConstraintError(err error) bool
- func IsConflictError(err error) bool
- func IsMissingTableError(err error) bool
- func IsNotFoundError(err error) bool
- func IsNotNullError(err error) bool
- func IsUniqueError(err error) bool
- func Match(t *Template, err error) bool
- func New(ctx context.Context, c Code, op Op, msg string, opt ...Option) error
- func ToPbErrors(err *Err) *pberrors.Err
- func Wrap(ctx context.Context, e error, op Op, opt ...Option) error
- type Code
- type Err
- type Info
- type Kind
- type Op
- type Option
- type Options
- type Template
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func As ¶
As is the equivalent of the std errors.As, and allows devs to only import this package for the capability.
func E ¶ added in v0.1.3
E creates a new Err with provided code and supports the options of:
* WithoutEvent - allows you to specify that an error event should not be emitted.
* WithOp() - allows you to specify an optional Op (operation).
* WithMsg() - allows you to specify an optional error msg, if the default msg for the error Code is not sufficient.
* WithWrap() - allows you to specify an error to wrap. If the wrapped error is a boundary domain error, the wrapped error code will be used as the returned error's code.
* WithCode() - allows you to specify an optional Code, this code will be prioritized over a code used from WithWrap().
func Is ¶
Is the equivalent of the std errors.Is, but allows Devs to only import this package for the capability.
func IsCheckConstraintError ¶
IsCheckConstraintError returns a boolean indicating whether the error is known to report a check constraint violation.
func IsConflictError ¶ added in v0.12.0
IsConflictError returns a boolean indicating whether the error is known to report a pre-conditional check violation or an aborted transaction.
func IsMissingTableError ¶
IsMissingTableError returns a boolean indicating whether the error is known to report a undefined/missing table violation.
func IsNotFoundError ¶ added in v0.1.3
IsNotFoundError returns a boolean indicating whether the error is known to report a not found violation.
func IsNotNullError ¶
IsNotNullError returns a boolean indicating whether the error is known to report a not-null constraint violation.
func IsUniqueError ¶
IsUniqueError returns a boolean indicating whether the error is known to report a unique constraint violation.
func Match ¶
Match the template against the error. The error must be of type *Err, or wrap an error of type *Err, otherwise match will return false. Matches all non-empty fields of the template against the error.
func New ¶
New creates a new Err with provided code, op and msg It supports the options of:
* WithWrap() - allows you to specify an error to wrap
func ToPbErrors ¶ added in v0.7.0
ToPbErrors will convert to an Err protobuf
Types ¶
type Code ¶
type Code uint32
Code specifies a code for the error.
const ( Unknown Code = 0 // Unknown will be equal to a zero value for Codes // General function errors are reserved Codes 100-999 InvalidParameter Code = 100 // InvalidParameter represents an invalid parameter for an operation. InvalidAddress Code = 101 // InvalidAddress represents an invalid host address for an operation InvalidPublicId Code = 102 // InvalidPublicId represents an invalid public Id for an operation InvalidFieldMask Code = 103 // InvalidFieldMask represents an invalid field mask for an operation EmptyFieldMask Code = 104 // EmptyFieldMask represents an empty field mask for an operation KeyNotFound Code = 105 // KeyNotFound represents that a key/version was not found in the KMS TicketAlreadyRedeemed Code = 106 // TicketAlreadyRedeemed represents that the ticket version has already been redeemed TicketNotFound Code = 107 // TicketNotFound represents that the ticket was not found Io Code = 108 // Io represents that an io error occurred in an underlying call (i.e binary.Write) InvalidTimeStamp Code = 109 // InvalidTimeStamp represents an invalid time stamp for an operation SessionNotFound Code = 110 // SessionNotFound represents that the session was not found InvalidSessionState Code = 111 // InvalidSessionState represents that the session was in an invalid state TokenMismatch Code = 112 // TokenMismatch represents that there was a token mismatch TooShort Code = 113 // TooShort represents an error that means the provided input is not meeting minimum length requirements AccountAlreadyAssociated Code = 114 // AccountAlreadyAssociated represents an attempt to associate an account failed since it was already associated. InvalidJobRunState Code = 115 // InvalidJobRunState represents that a JobRun was in an invalid state InvalidDynamicCredential Code = 116 // InvalidDynamicCredential represents that a dynamic credential for a session was in an invalid state JobAlreadyRunning Code = 117 // JobAlreadyRunning represents that a Job is already running when an attempt to run again was made SubtypeAlreadyRegistered Code = 118 // SubtypeAlreadyRegistered represents that a value has already been registered in the subtype registry system. NoPathFound = 119 // NoPathFound represents an error when no path is found to a worker WorkerNotFound = 120 // WorkerNotFound represents an error when a worker is not found in the graph of downstream workers CycleFound = 121 // CycleFound represents an error when a cycle is found between a parent and child worker WorkerConnNotFound = 122 // WorkerConnNotFound represents an error when a connection to a worker is not found KmsWorkerUnsupportedOperation = 123 // KmsWorkerUnsupportedOperation represents an error when a KMS worker is not supported for an operation // Note: Currently unused in OSS RetryLimitExceeded = 124 // RetryLimitExceeded represents an error when a retry limit is exceeded // Note: Currently unused in OSS QueueIsFull = 125 // QueueIsFull results in attempting to add an item to a queue which is full // Note: Storage errors are currently unused in OSS StorageFileClosed = 126 // StorageFileClose represents an error when a file has been closed and a read/write operation is attempted on it StorageContainerClosed = 127 // StorageContainerClosed represents an error when a container has been closed and a I/O operation is attempted on it StorageFileReadOnly = 128 // StorageFileReadOnly represents an error when a file is readonly and a write operation is attempted on it StorageFileWriteOnly = 129 // StorageFileWriteOnly represents an error when a file is write only and a read operation is attempted on it StorageFileAlreadyExists = 130 // StorageFileAlreadyExists represents an error when a file already exists during an attempt to create it StorageContainerReadOnly = 131 // StorageContainerReadOnly represents an error when a container is readonly and a write operation is attempted on it StorageContainerWriteOnly = 132 // StorageContainerWriteOnly represents an error when a container is write only and a read operation is attempted on it WorkerNotFoundForRequest = 133 // WorkerNotFoundForRequest represents an error when no appropriate worker is found which meets the conditions required to handle a request Closed = 134 // Closed represents an error when an operation cannot be completed because the thing being operated on is closed ChecksumMismatch = 135 // ChecksumMismatch represents an error when a checksum is mismatched AuthAttemptExpired Code = 198 // AuthAttemptExpired represents an expired authentication attempt AuthMethodInactive Code = 199 // AuthMethodInactive represents an error that means the auth method is not active. // PasswordTooShort results from attempting to set a password which is to short. PasswordTooShort Code = 200 // PasswordUnsupportedConfiguration results from attempting to perform an // operation that sets a password configuration to an unsupported type. PasswordUnsupportedConfiguration Code = 201 // PasswordInvalidConfiguration results from attempting to perform an // operation that sets a valid password configuration with invalid settings. PasswordInvalidConfiguration Code = 202 // PasswordsEqual is returned from ChangePassword when the old and // new passwords are equal. PasswordsEqual Code = 203 Encrypt Code = 300 // Encrypt represents an error occurred during the underlying encryption process Decrypt Code = 301 // Decrypt represents an error occurred during the underlying decryption process Encode Code = 302 // Encode represents an error occurred during the underlying encoding/marshaling process Decode Code = 303 // Decode represents an error occurred during the underlying decoding/unmarshaling process GenKey Code = 304 // GenKey represents an error occurred during the underlying key generation process GenCert Code = 305 // GenCert represents an error occurred during the underlying certificate generation process Sign Code = 306 // Sign represents an error occurred during the underlying signing process Verify Code = 307 // Verify represents an error occurred during the underlying verification process // General system errors are reserved Codes 400-599 and align with http // client and server error codes Forbidden Code = 403 // Forbidden represents the operation is forbidden NotFound Code = 404 // NotFound represents an operation which is unable to find the requested item. Conflict Code = 409 // Conflict represents the operation failed due to failed pre-condition or was aborted. Internal Code = 500 // InternalError represents the system encountered an unexpected condition. // DB errors are reserved Codes from 1000-1999 CheckConstraint Code = 1000 // CheckConstraint represents a check constraint error NotNull Code = 1001 // NotNull represents a value must not be null error NotUnique Code = 1002 // NotUnique represents a value must be unique error NotSpecificIntegrity Code = 1003 // NotSpecificIntegrity represents an integrity error that has no specific domain error code MissingTable Code = 1004 // MissingTable represents an undefined table error RecordNotFound Code = 1100 // RecordNotFound represents that a record/row was not found matching the criteria MultipleRecords Code = 1101 // MultipleRecords represents that multiple records/rows were found matching the criteria ColumnNotFound Code = 1102 // ColumnNotFound represent that a column was not found in the underlying db MaxRetries Code = 1103 // MaxRetries represent that a db Tx hit max retires allowed Exception Code = 1104 // Exception represent that an underlying db exception was raised VersionMismatch Code = 1105 // VersionMismatch represents the update version and the db version for an entry do not match. // GracefullyAborted means we intended to abort a transaction but the // enclosing function should not treat it as an error; we aborted for // reasons related to the state of the DDL and/or inputs (such as we're // already in the right state and don't want to end up writing oplogs). GracefullyAborted Code = 1106 // UnexpectedRowsAffected indicates that an action expected to operate on a // specific number of records returned a different count, e.g. if you // expected to delete three items and only one was deleted. UnexpectedRowsAffected Code = 1107 // ImmutableColumn is used when an operation attempted to mutate an immutable column. ImmutableColumn Code = 1108 // Migration setup errors are codes 2000-2999 MigrationIntegrity Code = 2000 // MigrationIntegrity represents an error with the generated migration related code MigrationLock Code = 2001 // MigrationLock represents an error related to locking of the DB // External system errors are reserved codes 3000-3999 ExternalPlugin Code = 3001 // ExternalPlugin represent an error that occurred on a plugin external to Boundary // Vault specific errors VaultTokenNotOrphan Code = 3010 // VaultTokenNotOrphan represents an error for a Vault token that is not an orphan token VaultTokenNotPeriodic Code = 3011 // VaultTokenNotPeriodic represents an error for a Vault token that is not a periodic token VaultTokenNotRenewable Code = 3012 // VaultTokenNotRenewable represents an error for a Vault token that is not renewable VaultTokenMissingCapabilities Code = 3013 // VaultTokenMissingCapabilities represents an error for a Vault token that is missing capabilities VaultCredentialRequest Code = 3014 // VaultCredentialRequest represents an error returned from Vault when retrieving a credential VaultEmptySecret Code = 3015 // VaultEmptySecret represents a empty secret was returned from Vault without error VaultInvalidMappingOverride Code = 3016 // VaultInvalidMappingOverride represents an error returned when a credential mapping is unknown or does not match a credential type VaultInvalidCredentialMapping Code = 3017 // VaultInvalidCredentialMapping represents an error returned when a Vault secret failed to be mapped to a specific credential type // OIDC authentication provided errors OidcProviderCallbackError Code = 4000 // OidcProviderCallbackError represents an error that is passed by the OIDC provider to the callback endpoint )
type Err ¶
type Err struct { // Code is the error's code, which can be used to get the error's // errorCodeInfo, which contains the error's Kind and Message Code Code // Msg for the error Msg string // Op represents the operation raising/propagating an error and is optional. // Op should be formatted as "package.func" for functions, while methods should // include the receiver type in parentheses "package.(type).func" Op Op // Wrapped is the error which this Err wraps and will be nil if there's no // error to wrap. Wrapped error }
Err provides the ability to specify a Msg, Op, Code and Wrapped error. We've chosen Err over Error for the identifier to support the easy embedding of Errs. Errs can be embedded without a conflict between the embedded Err and Err.Error().
func Convert ¶
Convert will convert the error to a Boundary *Err (returning it as an error) and attempt to add a helpful error msg as well. If that's not possible, it will return nil
func FromPbErrors ¶ added in v0.7.0
FromPbErrors will convert from Err protobuf
type Info ¶
type Info struct { // Kind specifies the kind of error (unknown, parameter, integrity, etc). Kind Kind // Message provides a default message for the error code Message string }
Info contains details of the specific error code
type Option ¶
type Option func(*Options)
Option - how Options are passed as arguments.
func WithCode ¶ added in v0.1.3
WithCode provides an option to provide a code when creating a new error.
func WithMsg ¶
WithMsg provides an option to provide a message when creating a new error. If args are provided, the the msg string is used as a fmt specifier for the arguments and the resulting string is used as the msg.
func WithOp ¶
WithOp provides an option to provide the operation that's raising/propagating the error.
func WithWrap ¶
WithErrCode provides an option to provide an error to wrap when creating a new error.
func WithoutEvent ¶ added in v0.5.0
func WithoutEvent() Option
WithoutEvent provides an option to suppress the event when wrapping or creating a new error.
type Options ¶
type Options struct {
// contains filtered or unexported fields
}
Options - how Options are represented.
type Template ¶
type Template struct { Err // Err embedded to support matching Errs Kind Kind // Kind allows explicit matching on a Template without a Code. }
Template is useful constructing Match Err templates. Templates allow you to match Errs without specifying a Code. In other words, just Match using the Errs: Kind, Op, etc.
func T ¶
T creates a new Template for matching Errs. Invalid parameters are ignored. If more than is one parameter for a given type, only the last one is used.