diff --git a/api/errors.go b/api/errors.go index 46bcad11..9d40d704 100644 --- a/api/errors.go +++ b/api/errors.go @@ -4,7 +4,6 @@ import ( "context" "fmt" "net/http" - "path" ) type ( @@ -1924,356 +1923,20 @@ func getAPIErrorResponse(ctx context.Context, err error, resource, requestID, ho } } -// SignatureDoesNotMatch - when content md5 does not match with what was sent from client. -type SignatureDoesNotMatch struct{} - -func (e SignatureDoesNotMatch) Error() string { - return "The request signature we calculated does not match the signature you provided. Check your key and signing method." -} - -// StorageFull storage ran out of space. -type StorageFull struct{} - -func (e StorageFull) Error() string { - return "Storage reached its minimum free disk threshold." -} - -// SlowDown too many file descriptors open or backend busy . -type SlowDown struct{} - -func (e SlowDown) Error() string { - return "Please reduce your request rate" -} - -// InsufficientReadQuorum storage cannot satisfy quorum for read operation. -type InsufficientReadQuorum struct{} - -func (e InsufficientReadQuorum) Error() string { - return "Storage resources are insufficient for the read operation." -} - -// InsufficientWriteQuorum storage cannot satisfy quorum for write operation. -type InsufficientWriteQuorum struct{} - -func (e InsufficientWriteQuorum) Error() string { - return "Storage resources are insufficient for the write operation." -} - // GenericError - generic object layer error. type GenericError struct { Bucket string Object string } -// BucketNotFound bucket does not exist. -type BucketNotFound GenericError - -func (e BucketNotFound) Error() string { - return "Bucket not found: " + e.Bucket -} - -// BucketAlreadyExists the requested bucket name is not available. -type BucketAlreadyExists GenericError - -func (e BucketAlreadyExists) Error() string { - return "The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again." -} - -// BucketAlreadyOwnedByYou already owned by you. -type BucketAlreadyOwnedByYou GenericError - -func (e BucketAlreadyOwnedByYou) Error() string { - return "Bucket already owned by you: " + e.Bucket -} - -// BucketNotEmpty bucket is not empty. -type BucketNotEmpty GenericError - -func (e BucketNotEmpty) Error() string { - return "Bucket not empty: " + e.Bucket -} - -// ObjectNotFound object does not exist. -type ObjectNotFound GenericError - -func (e ObjectNotFound) Error() string { - return "Object not found: " + e.Bucket + "#" + e.Object -} - // ObjectAlreadyExists object already exists. +// This type should be removed when s3-gw will support versioning. type ObjectAlreadyExists GenericError func (e ObjectAlreadyExists) Error() string { return "Object: " + e.Bucket + "#" + e.Object + " already exists" } -// ObjectExistsAsDirectory object already exists as a directory. -type ObjectExistsAsDirectory GenericError - -func (e ObjectExistsAsDirectory) Error() string { - return "Object exists on : " + e.Bucket + " as directory " + e.Object -} - -// PrefixAccessDenied object access is denied. -type PrefixAccessDenied GenericError - -func (e PrefixAccessDenied) Error() string { - return "Prefix access is denied: " + e.Bucket + SlashSeparator + e.Object -} - -// ParentIsObject object access is denied. -type ParentIsObject GenericError - -func (e ParentIsObject) Error() string { - return "Parent is object " + e.Bucket + SlashSeparator + path.Dir(e.Object) -} - -// BucketExists bucket exists. -type BucketExists GenericError - -func (e BucketExists) Error() string { - return "Bucket exists: " + e.Bucket -} - -// InvalidUploadIDKeyCombination - invalid upload id and key marker combination. -type InvalidUploadIDKeyCombination struct { - UploadIDMarker, KeyMarker string -} - -func (e InvalidUploadIDKeyCombination) Error() string { - return fmt.Sprintf("Invalid combination of uploadID marker '%s' and marker '%s'", e.UploadIDMarker, e.KeyMarker) -} - -// InvalidMarkerPrefixCombination - invalid marker and prefix combination. -type InvalidMarkerPrefixCombination struct { - Marker, Prefix string -} - -func (e InvalidMarkerPrefixCombination) Error() string { - return fmt.Sprintf("Invalid combination of marker '%s' and prefix '%s'", e.Marker, e.Prefix) -} - -// BucketPolicyNotFound - no bucket policy found. -type BucketPolicyNotFound GenericError - -func (e BucketPolicyNotFound) Error() string { - return "No bucket policy configuration found for bucket: " + e.Bucket -} - -// BucketLifecycleNotFound - no bucket lifecycle found. -type BucketLifecycleNotFound GenericError - -func (e BucketLifecycleNotFound) Error() string { - return "No bucket lifecycle configuration found for bucket : " + e.Bucket -} - -// BucketSSEConfigNotFound - no bucket encryption found. -type BucketSSEConfigNotFound GenericError - -func (e BucketSSEConfigNotFound) Error() string { - return "No bucket encryption configuration found for bucket: " + e.Bucket -} - -// BucketTaggingNotFound - no bucket tags found. -type BucketTaggingNotFound GenericError - -func (e BucketTaggingNotFound) Error() string { - return "No bucket tags found for bucket: " + e.Bucket -} - -// BucketObjectLockConfigNotFound - no bucket object lock config found. -type BucketObjectLockConfigNotFound GenericError - -func (e BucketObjectLockConfigNotFound) Error() string { - return "No bucket object lock configuration found for bucket: " + e.Bucket -} - -// BucketQuotaConfigNotFound - no bucket quota config found. -type BucketQuotaConfigNotFound GenericError - -func (e BucketQuotaConfigNotFound) Error() string { - return "No quota config found for bucket : " + e.Bucket -} - -// BucketQuotaExceeded - bucket quota exceeded. -type BucketQuotaExceeded GenericError - -func (e BucketQuotaExceeded) Error() string { - return "Bucket quota exceeded for bucket: " + e.Bucket -} - -// Bucket related errors. - -// BucketNameInvalid - bucketname provided is invalid. -type BucketNameInvalid GenericError - -// Error returns string an error formatted as the given text. -func (e BucketNameInvalid) Error() string { - return "Bucket name invalid: " + e.Bucket -} - -// Object related errors. - -// ObjectNameInvalid - object name provided is invalid. -type ObjectNameInvalid GenericError - -// ObjectNameTooLong - object name too long. -type ObjectNameTooLong GenericError - -// ObjectNamePrefixAsSlash - object name has a slash as prefix. -type ObjectNamePrefixAsSlash GenericError - -// Error returns string an error formatted as the given text. -func (e ObjectNameInvalid) Error() string { - return "Object name invalid: " + e.Bucket + "#" + e.Object -} - -// Error returns string an error formatted as the given text. -func (e ObjectNameTooLong) Error() string { - return "Object name too long: " + e.Bucket + "#" + e.Object -} - -// Error returns string an error formatted as the given text. -func (e ObjectNamePrefixAsSlash) Error() string { - return "Object name contains forward slash as pefix: " + e.Bucket + "#" + e.Object -} - -// AllAccessDisabled All access to this object has been disabled. -type AllAccessDisabled GenericError - -// Error returns string an error formatted as the given text. -func (e AllAccessDisabled) Error() string { - return "All access to this object has been disabled" -} - -// IncompleteBody You did not provide the number of bytes specified by the Content-Length HTTP header. -type IncompleteBody GenericError - -// Error returns string an error formatted as the given text. -func (e IncompleteBody) Error() string { - return e.Bucket + "#" + e.Object + "has incomplete body" -} - -// InvalidRange - invalid range typed error. -type InvalidRange struct { - OffsetBegin int64 - OffsetEnd int64 - ResourceSize int64 -} - -func (e InvalidRange) Error() string { - return fmt.Sprintf("The requested range \"bytes %d-%d/%d\" is not satisfiable.", e.OffsetBegin, e.OffsetEnd, e.ResourceSize) -} - -// ObjectTooLarge error returned when the size of the object > max object size allowed (5G) per request. -type ObjectTooLarge GenericError - -func (e ObjectTooLarge) Error() string { - return "size of the object greater than what is allowed(5G)" -} - -// ObjectTooSmall error returned when the size of the object < what is expected. -type ObjectTooSmall GenericError - -func (e ObjectTooSmall) Error() string { - return "size of the object less than what is expected" -} - -// OperationTimedOut - a timeout occurred. -type OperationTimedOut struct { -} - -func (e OperationTimedOut) Error() string { - return "Operation timed out" -} - -// Multipart related errors. - -// MalformedUploadID malformed upload id. -type MalformedUploadID struct { - UploadID string -} - -func (e MalformedUploadID) Error() string { - return "Malformed upload id " + e.UploadID -} - -// InvalidUploadID invalid upload id. -type InvalidUploadID struct { - Bucket string - Object string - UploadID string -} - -func (e InvalidUploadID) Error() string { - return "Invalid upload id " + e.UploadID -} - -// InvalidPart One or more of the specified parts could not be found. -type InvalidPart struct { - PartNumber int - ExpETag string - GotETag string -} - -func (e InvalidPart) Error() string { - return fmt.Sprintf("Specified part could not be found. PartNumber %d, Expected %s, got %s", - e.PartNumber, e.ExpETag, e.GotETag) -} - -// PartTooSmall - error if part size is less than 5MB. -type PartTooSmall struct { - PartSize int64 - PartNumber int - PartETag string -} - -func (e PartTooSmall) Error() string { - return fmt.Sprintf("Part size for %d should be at least 5MB", e.PartNumber) -} - -// PartTooBig returned if size of part is bigger than the allowed limit. -type PartTooBig struct{} - -func (e PartTooBig) Error() string { - return "Part size bigger than the allowed limit" -} - -// InvalidETag error returned when the etag has changed on disk. -type InvalidETag struct{} - -func (e InvalidETag) Error() string { - return "etag of the object has changed" -} - -// NotImplemented If a feature is not implemented. -type NotImplemented struct{} - -func (e NotImplemented) Error() string { - return "Not Implemented" -} - -// UnsupportedMetadata - unsupported metadata. -type UnsupportedMetadata struct{} - -func (e UnsupportedMetadata) Error() string { - return "Unsupported headers in Metadata" -} - -// BackendDown is returned for network errors or if the gateway's backend is down. -type BackendDown struct{} - -func (e BackendDown) Error() string { - return "Backend down" -} - -// PreConditionFailed - Check if copy precondition failed. -type PreConditionFailed struct{} - -func (e PreConditionFailed) Error() string { - return "At least one of the pre-conditions you specified did not hold" -} - // DeleteError - returns when cant remove object. type DeleteError struct { Err error