* Adding explicit MPL license for sub-package. This directory and its subdirectories (packages) contain files licensed with the MPLv2 `LICENSE` file in this directory and are intentionally licensed separately from the BSL `LICENSE` file at the root of this repository. * Adding explicit MPL license for sub-package This directory and its subdirectories (packages) contain files licensed with the MPLv2 `LICENSE` file in this directory and are intentionally licensed separately from the BSL `LICENSE` file at the root of this repository. * Updating the license from MPL to Business Source License Going forward, this project will be licensed under the Business Source License v1.1. Please see our blog post for more details at https://hashi.co/bsl-blog, FAQ at www.hashicorp.com/licensing-faq, and details of the license at www.hashicorp.com/bsl. * Update copyright file headers to BUS-1.1 * Rerun make gen This will pick up the last of the license changes * Revert "Rerun make gen" This reverts commit dbe0968bffd92745d8663c6940debae098395a6b. * Remove copywrite from generation script The current version of copywrite is not sophisticated enough to only apply the copywrite changes to certain subdirectories, so to avoid accidentally relicensing our api and sdk modules, we will stop running the copywrite script until such time that it can do the right thing. * License protobuf API as MPL The protobuf API files are used to generate the SDK, since we want the SDK to be MPL, the protobuf files must also be MPL. This extends to all protobuf files whose sources end up in the SDK directory, including: - internal/proto/controller/api - internal/proto/controller/custom_options - internal/proto/plugin It also includes the generated service directory in internal/gen/controller/api/services, since they are generated from the protobuf sources used for the SDK. * Change website license file name This makes the naming scheme consistent with the rest of the repository. * Add note on licensing to README * Set copywrite license to BUSL * Revert "Add note on licensing to README" This reverts commit 4d865a91a7a4f11605f0dc4609355d7e3c3cfffe. --------- Co-authored-by: hashicorp-copywrite[bot] <110428419+hashicorp-copywrite[bot]@users.noreply.github.com> Co-authored-by: Johan Brandhorst-Satzkorn <johan.brandhorst@gmail.com>
150 lines
11 KiB
Go
150 lines
11 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package errors
|
|
|
|
// Code specifies a code for the error.
|
|
type Code uint32
|
|
|
|
// String will return the Code's Info.Message
|
|
func (c Code) String() string {
|
|
return c.Info().Message
|
|
}
|
|
|
|
// Info will look up the Code's Info. If the Info is not found, it will return
|
|
// Info for an Unknown Code.
|
|
func (c Code) Info() Info {
|
|
if info, ok := errorCodeInfo[c]; ok {
|
|
return info
|
|
}
|
|
return errorCodeInfo[Unknown]
|
|
}
|
|
|
|
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
|
|
Unauthorized Code = 401 // Unauthorized represents the operation is unauthorized
|
|
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
|
|
Unavailable Code = 3000 // Unavailable represents that an external system is unavailable
|
|
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
|
|
)
|