Skip to main content

bucketwarden_server/state/
error.rs

1use super::*;
2
3#[derive(Debug, Error)]
4pub enum RuntimeError {
5    #[error("auth error: {0}")]
6    Auth(#[from] AuthError),
7    #[error("access denied for {principal} {action} on {resource}; explicit_deny={explicit_deny}")]
8    AccessDenied {
9        principal: String,
10        action: String,
11        resource: String,
12        explicit_deny: bool,
13    },
14    #[error("SigV4 authentication failed: {0}")]
15    SigV4Authentication(String),
16    #[error("authorization query parameters error: {0}")]
17    AuthorizationQueryParametersError(String),
18    #[error("authorization header malformed: {0}")]
19    AuthorizationHeaderMalformed(String),
20    #[error("invalid access key id: {0}")]
21    InvalidAccessKeyId(String),
22    #[error("expired token: {0}")]
23    ExpiredToken(String),
24    #[error("invalid token: {0}")]
25    InvalidToken(String),
26    #[error("request time too skewed: {0}")]
27    RequestTimeTooSkewed(String),
28    #[error("invalid bucket name: {0}")]
29    InvalidBucketName(String),
30    #[error("invalid object key: {0}")]
31    InvalidObjectKey(String),
32    #[error("invalid multi-object delete request: {0}")]
33    InvalidMultiObjectDelete(String),
34    #[error("bucket already exists: {0}")]
35    BucketAlreadyExists(String),
36    #[error("bucket is not empty: {0}")]
37    BucketNotEmpty(String),
38    #[error("no such bucket: {0}")]
39    NoSuchBucket(String),
40    #[error("no such key: {0}")]
41    NoSuchKey(String),
42    #[error("no such version {version_id} for {bucket}/{key}")]
43    NoSuchVersion {
44        bucket: String,
45        key: String,
46        version_id: String,
47    },
48    #[error("object is locked: {0}")]
49    ObjectLocked(#[from] LockError),
50    #[error("kms error: {0}")]
51    Kms(#[from] KmsError),
52    #[error("snapshot serialization failed: {0}")]
53    SnapshotSerialize(serde_json::Error),
54    #[error("snapshot deserialization failed: {0}")]
55    SnapshotDeserialize(serde_json::Error),
56    #[error("snapshot I/O failed: {0}")]
57    SnapshotIo(String),
58    #[error("unsupported runtime snapshot schema version: {0}")]
59    UnsupportedSnapshotSchema(u32),
60    #[error(
61        "runtime snapshot next_version {next_version} is behind highest version {highest_version}"
62    )]
63    InvalidSnapshotVersionCounter {
64        next_version: u64,
65        highest_version: u64,
66    },
67    #[error(
68        "runtime snapshot next_upload {next_upload} is behind highest upload {highest_upload}"
69    )]
70    InvalidSnapshotUploadCounter {
71        next_upload: u64,
72        highest_upload: u64,
73    },
74    #[error("runtime snapshot next_event {next_event} is behind highest event {highest_event}")]
75    InvalidSnapshotEventCounter { next_event: u64, highest_event: u64 },
76    #[error("invalid multipart part number: {0}")]
77    InvalidPartNumber(String),
78    #[error("no such multipart upload: {0}")]
79    NoSuchUpload(String),
80    #[error("multipart upload has no parts: {0}")]
81    NoMultipartParts(String),
82    #[error("multipart upload {upload_id} is missing part {part_number}")]
83    MissingMultipartPart { upload_id: String, part_number: u16 },
84    #[error("multipart upload {upload_id} part {part_number} etag does not match")]
85    MultipartEtagMismatch { upload_id: String, part_number: u16 },
86    #[error("invalid range: {0}")]
87    InvalidRange(String),
88    #[error("invalid conditional header {name}: {value}")]
89    InvalidConditionalHeader { name: String, value: String },
90    #[error("invalid list parameter {name}: {value}")]
91    InvalidListParameter { name: String, value: String },
92    #[error("invalid bucket versioning status: {0}")]
93    InvalidBucketVersioningStatus(String),
94    #[error("invalid digest in {header}: {value}")]
95    InvalidDigest { header: String, value: String },
96    #[error("invalid metadata directive: {0}")]
97    InvalidMetadataDirective(String),
98    #[error("invalid object attributes request: {0}")]
99    InvalidObjectAttributesRequest(String),
100    #[error("checksum mismatch for {header}")]
101    BadDigest { header: String },
102    #[error("invalid storage commit log: {0}")]
103    InvalidStorageCommitLog(String),
104    #[error("cors request is not allowed: {0}")]
105    CorsNotAllowed(String),
106    #[error("invalid CORS rule: {0}")]
107    InvalidCorsRule(String),
108    #[error("bucket website configuration does not exist for {0}")]
109    NoSuchWebsiteConfiguration(String),
110    #[error("invalid website configuration: {0}")]
111    InvalidWebsiteConfiguration(String),
112    #[error("invalid bucket logging configuration: {0}")]
113    InvalidBucketLogging(String),
114    #[error("bucket policy does not exist for {0}")]
115    NoSuchBucketPolicy(String),
116    #[error("invalid bucket policy: {0}")]
117    InvalidBucketPolicy(String),
118    #[error("invalid bucket ABAC configuration: {0}")]
119    InvalidBucketAbac(String),
120    #[error("invalid request payment configuration: {0}")]
121    InvalidRequestPaymentConfiguration(String),
122    #[error("invalid accelerate configuration: {0}")]
123    InvalidAccelerateConfiguration(String),
124    #[error("invalid create session request: {0}")]
125    InvalidCreateSession(String),
126    #[error("invalid public access block configuration: {0}")]
127    InvalidPublicAccessBlockConfiguration(String),
128    #[error("public access block configuration does not exist for {0}")]
129    NoSuchPublicAccessBlockConfiguration(String),
130    #[error("invalid bucket metadata configuration: {0}")]
131    InvalidBucketMetadataConfiguration(String),
132    #[error("bucket metadata configuration does not exist for {0}")]
133    NoSuchBucketMetadataConfiguration(String),
134    #[error("invalid bucket metadata table configuration: {0}")]
135    InvalidBucketMetadataTableConfiguration(String),
136    #[error("bucket metadata table configuration does not exist for {0}")]
137    NoSuchBucketMetadataTableConfiguration(String),
138    #[error("bucket metadata table API is not available for {0}")]
139    BucketMetadataTableApiNotAvailable(String),
140    #[error("invalid metrics configuration: {0}")]
141    InvalidMetricsConfiguration(String),
142    #[error("metrics configuration does not exist for {bucket} with id {id}")]
143    NoSuchMetricsConfiguration { bucket: String, id: String },
144    #[error("too many configurations for {0}")]
145    TooManyConfigurations(String),
146    #[error("invalid analytics configuration: {0}")]
147    InvalidAnalyticsConfiguration(String),
148    #[error("analytics configuration does not exist for {bucket} with id {id}")]
149    NoSuchAnalyticsConfiguration { bucket: String, id: String },
150    #[error("invalid inventory configuration: {0}")]
151    InvalidInventoryConfiguration(String),
152    #[error("inventory configuration does not exist for {bucket} with id {id}")]
153    NoSuchInventoryConfiguration { bucket: String, id: String },
154    #[error("invalid intelligent-tiering configuration: {0}")]
155    InvalidIntelligentTieringConfiguration(String),
156    #[error("intelligent-tiering configuration does not exist for {bucket} with id {id}")]
157    NoSuchIntelligentTieringConfiguration { bucket: String, id: String },
158    #[error("bucket tag set does not exist for {0}")]
159    NoSuchTagSet(String),
160    #[error("invalid object tagging: {0}")]
161    InvalidTagging(String),
162    #[error("object lock configuration does not exist for {0}")]
163    ObjectLockConfigurationNotFound(String),
164    #[error("invalid object lock configuration: {0}")]
165    InvalidObjectLockConfiguration(String),
166    #[error("invalid legal hold: {0}")]
167    InvalidLegalHold(String),
168    #[error("invalid retention: {0}")]
169    InvalidRetention(String),
170    #[error("bucket encryption configuration does not exist for {0}")]
171    NoSuchBucketEncryption(String),
172    #[error("invalid server-side encryption: {0}")]
173    InvalidEncryption(String),
174    #[error("unsupported server-side encryption: {0}")]
175    UnsupportedEncryption(String),
176    #[error("unsupported storage backend: {0}")]
177    UnsupportedStorageBackend(String),
178    #[error("unsupported replication strategy: {0}")]
179    UnsupportedReplicationStrategy(String),
180    #[error("unsupported erasure coding profile: {0}")]
181    UnsupportedErasureCodingProfile(String),
182    #[error("invalid erasure coding layout: {0}")]
183    InvalidErasureCodingLayout(String),
184    #[error("unsupported placement domain: {0}")]
185    UnsupportedPlacementDomain(String),
186    #[error("invalid placement policy: {0}")]
187    InvalidPlacementPolicy(String),
188    #[error("unsupported consistency model: {0}")]
189    UnsupportedConsistencyModel(String),
190    #[error("invalid consistency policy: {0}")]
191    InvalidConsistencyPolicy(String),
192    #[error("unsupported metadata architecture: {0}")]
193    UnsupportedMetadataArchitecture(String),
194    #[error("invalid metadata architecture policy: {0}")]
195    InvalidMetadataArchitecturePolicy(String),
196    #[error("unsupported object layout: {0}")]
197    UnsupportedObjectLayout(String),
198    #[error("invalid object layout policy: {0}")]
199    InvalidObjectLayoutPolicy(String),
200    #[error("unsupported small-object optimization: {0}")]
201    UnsupportedSmallObjectOptimization(String),
202    #[error("invalid small-object optimization policy: {0}")]
203    InvalidSmallObjectOptimizationPolicy(String),
204    #[error("unsupported large-object optimization: {0}")]
205    UnsupportedLargeObjectOptimization(String),
206    #[error("invalid large-object optimization policy: {0}")]
207    InvalidLargeObjectOptimizationPolicy(String),
208    #[error("bucket lifecycle configuration does not exist for {0}")]
209    NoSuchLifecycleConfiguration(String),
210    #[error("invalid lifecycle configuration: {0}")]
211    InvalidLifecycleConfiguration(String),
212    #[error("invalid notification configuration: {0}")]
213    InvalidNotificationConfiguration(String),
214    #[error("bucket replication configuration does not exist for {0}")]
215    NoSuchBucketReplication(String),
216    #[error("invalid replication configuration: {0}")]
217    InvalidReplicationConfiguration(String),
218    #[error("ACLs are not supported in BucketOwnerEnforced mode: {0}")]
219    AccessControlListNotSupported(String),
220    #[error("invalid ownership controls: {0}")]
221    InvalidOwnershipControls(String),
222    #[error("invalid bucket location: {0}")]
223    InvalidBucketLocation(String),
224    #[error("operator action denied for {principal} {action} on {resource}")]
225    OperatorActionDenied {
226        principal: String,
227        action: String,
228        resource: String,
229    },
230    #[error(
231        "quota exceeded for {scope} {resource}: {metric} limit {limit} would be exceeded by {attempted}"
232    )]
233    QuotaExceeded {
234        scope: String,
235        resource: String,
236        metric: String,
237        limit: u64,
238        attempted: u64,
239    },
240    #[error("service-specific runtime error feature: {0}")]
241    ServiceSpecificErrorFeature(&'static str),
242}