bucketwarden_server/state/
error.rs1use 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}