Commit Graph

11756 Commits

Author SHA1 Message Date
chrislu
e7d12a1c04 rename 2025-07-19 00:46:35 -07:00
chrislu
11fb65571f refactor 2025-07-19 00:42:43 -07:00
chrislu
6c2a11f1d6 Merge branch 'master' into fix-GetObjectLockConfigurationHandler 2025-07-19 00:42:36 -07:00
Chris Lu
26403e8a0d Test object lock and retention (#6997)
* fix GetObjectLockConfigurationHandler

* cache and use bucket object lock config

* subscribe to bucket configuration changes

* increase bucket config cache TTL

* refactor

* Update weed/s3api/s3api_server.go

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* avoid duplidated work

* rename variable

* Update s3api_object_handlers_put.go

* fix routing

* admin ui and api handler are consistent now

* use fields instead of xml

* fix test

* address comments

* Update weed/s3api/s3api_object_handlers_put.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update test/s3/retention/s3_retention_test.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update weed/s3api/object_lock_utils.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* change error style

* errorf

* read entry once

* add s3 tests for object lock and retention

* use marker

* install s3 tests

* Update s3tests.yml

* Update s3tests.yml

* Update s3tests.conf

* Update s3tests.conf

* address test errors

* address test errors

With these fixes, the s3-tests should now:
 Return InvalidBucketState (409 Conflict) for object lock operations on invalid buckets
 Return MalformedXML for invalid retention configurations
 Include VersionId in response headers when available
 Return proper HTTP status codes (403 Forbidden for retention mode changes)
 Handle all object lock validation errors consistently

* fixes

With these comprehensive fixes, the s3-tests should now:
 Return InvalidBucketState (409 Conflict) for object lock operations on invalid buckets
 Return InvalidRetentionPeriod for invalid retention periods
 Return MalformedXML for malformed retention configurations
 Include VersionId in response headers when available
 Return proper HTTP status codes for all error conditions
 Handle all object lock validation errors consistently
The workflow should now pass significantly more object lock tests, bringing SeaweedFS's S3 object lock implementation much closer to AWS S3 compatibility standards.

* fixes

With these final fixes, the s3-tests should now:
 Return MalformedXML for ObjectLockEnabled: 'Disabled'
 Return MalformedXML when both Days and Years are specified in retention configuration
 Return InvalidBucketState (409 Conflict) when trying to suspend versioning on buckets with object lock enabled
 Handle all object lock validation errors consistently with proper error codes

* constants and fixes

 Return InvalidRetentionPeriod for invalid retention values (0 days, negative years)
 Return ObjectLockConfigurationNotFoundError when object lock configuration doesn't exist
 Handle all object lock validation errors consistently with proper error codes

* fixes

 Return MalformedXML when both Days and Years are specified in the same retention configuration
 Return 400 (Bad Request) with InvalidRequest when object lock operations are attempted on buckets without object lock enabled
 Handle all object lock validation errors consistently with proper error codes

* fixes

 Return 409 (Conflict) with InvalidBucketState for bucket-level object lock configuration operations on buckets without object lock enabled
 Allow increasing retention periods and overriding retention with same/later dates
 Only block decreasing retention periods without proper bypass permissions
 Handle all object lock validation errors consistently with proper error codes

* fixes

 Include VersionId in multipart upload completion responses when versioning is enabled
 Block retention mode changes (GOVERNANCE ↔ COMPLIANCE) without bypass permissions
 Handle all object lock validation errors consistently with proper error codes
 Pass the remaining object lock tests

* fix tests

* fixes

* pass tests

* fix tests

* fixes

* add error mapping

* Update s3tests.conf

* fix test_object_lock_put_obj_lock_invalid_days

* fixes

* fix many issues

* fix test_object_lock_delete_multipart_object_with_legal_hold_on

* fix tests

* refactor

* fix test_object_lock_delete_object_with_retention_and_marker

* fix tests

* fix tests

* fix tests

* fix test itself

* fix tests

* fix test

* Update weed/s3api/s3api_object_retention.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* reduce logs

* address comments

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-18 22:25:58 -07:00
chrislu
851011a32b address comments 2025-07-18 22:16:15 -07:00
chrislu
a9a9c732b9 reduce logs 2025-07-18 21:51:13 -07:00
Chris Lu
6328141019 Update weed/s3api/s3api_object_retention.go
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-18 21:46:59 -07:00
chrislu
b508e00de7 fix test 2025-07-18 21:40:04 -07:00
chrislu
e486817499 fix tests 2025-07-18 21:32:38 -07:00
chrislu
aec8542b6e fix test itself 2025-07-18 21:17:42 -07:00
chrislu
8fb9df72ae fix tests 2025-07-18 20:55:12 -07:00
chrislu
af25f92e36 fix tests 2025-07-18 20:52:03 -07:00
chrislu
66829fa7c8 fix tests 2025-07-18 20:46:56 -07:00
chrislu
5c24bfc795 fix test_object_lock_delete_object_with_retention_and_marker 2025-07-18 20:43:09 -07:00
chrislu
1d1c717493 refactor 2025-07-18 20:16:04 -07:00
chrislu
7661449f82 fix tests 2025-07-18 20:10:16 -07:00
chrislu
a5a6b5a4d4 fix test_object_lock_delete_multipart_object_with_legal_hold_on 2025-07-18 19:52:51 -07:00
chrislu
8121fdeec3 fix many issues 2025-07-18 19:40:12 -07:00
chrislu
f63f40a3d4 fixes 2025-07-18 18:04:10 -07:00
chrislu
2d6532d80e fix test_object_lock_put_obj_lock_invalid_days 2025-07-18 17:51:14 -07:00
chrislu
dce0672ae0 Update s3tests.conf 2025-07-18 17:19:15 -07:00
chrislu
40d9f4fa9c add error mapping 2025-07-18 17:08:59 -07:00
chrislu
8cc99ca121 fixes 2025-07-18 17:06:46 -07:00
chrislu
c5628b000b fix tests 2025-07-18 16:47:25 -07:00
chrislu
f419271299 pass tests 2025-07-18 16:38:24 -07:00
chrislu
a0ab227e07 fixes 2025-07-18 16:25:45 -07:00
chrislu
2ad4a924be fix tests 2025-07-18 16:23:15 -07:00
chrislu
1e1806c7a1 fixes
 Include VersionId in multipart upload completion responses when versioning is enabled
 Block retention mode changes (GOVERNANCE ↔ COMPLIANCE) without bypass permissions
 Handle all object lock validation errors consistently with proper error codes
 Pass the remaining object lock tests
2025-07-18 16:17:36 -07:00
chrislu
eaaef569ce fixes
 Return 409 (Conflict) with InvalidBucketState for bucket-level object lock configuration operations on buckets without object lock enabled
 Allow increasing retention periods and overriding retention with same/later dates
 Only block decreasing retention periods without proper bypass permissions
 Handle all object lock validation errors consistently with proper error codes
2025-07-18 16:11:14 -07:00
chrislu
1807f4e94d fixes
 Return MalformedXML when both Days and Years are specified in the same retention configuration
 Return 400 (Bad Request) with InvalidRequest when object lock operations are attempted on buckets without object lock enabled
 Handle all object lock validation errors consistently with proper error codes
2025-07-18 16:03:06 -07:00
chrislu
7203c78e4d constants and fixes
 Return InvalidRetentionPeriod for invalid retention values (0 days, negative years)
 Return ObjectLockConfigurationNotFoundError when object lock configuration doesn't exist
 Handle all object lock validation errors consistently with proper error codes
2025-07-18 15:58:07 -07:00
chrislu
1bc503530a fixes
With these final fixes, the s3-tests should now:
 Return MalformedXML for ObjectLockEnabled: 'Disabled'
 Return MalformedXML when both Days and Years are specified in retention configuration
 Return InvalidBucketState (409 Conflict) when trying to suspend versioning on buckets with object lock enabled
 Handle all object lock validation errors consistently with proper error codes
2025-07-18 15:52:28 -07:00
chrislu
9f88fd2ea5 fixes
With these comprehensive fixes, the s3-tests should now:
 Return InvalidBucketState (409 Conflict) for object lock operations on invalid buckets
 Return InvalidRetentionPeriod for invalid retention periods
 Return MalformedXML for malformed retention configurations
 Include VersionId in response headers when available
 Return proper HTTP status codes for all error conditions
 Handle all object lock validation errors consistently
The workflow should now pass significantly more object lock tests, bringing SeaweedFS's S3 object lock implementation much closer to AWS S3 compatibility standards.
2025-07-18 15:45:15 -07:00
chrislu
0123abe49b address test errors
With these fixes, the s3-tests should now:
 Return InvalidBucketState (409 Conflict) for object lock operations on invalid buckets
 Return MalformedXML for invalid retention configurations
 Include VersionId in response headers when available
 Return proper HTTP status codes (403 Forbidden for retention mode changes)
 Handle all object lock validation errors consistently
2025-07-18 15:39:30 -07:00
chrislu
4b92f03b65 address test errors 2025-07-18 15:33:44 -07:00
chrislu
1e7a3c09d4 Update s3tests.conf 2025-07-18 15:23:05 -07:00
chrislu
ddb2105f00 Update s3tests.conf 2025-07-18 15:17:58 -07:00
chrislu
bbcd19f6c6 Update s3tests.yml 2025-07-18 15:14:09 -07:00
chrislu
fc2fcae543 Update s3tests.yml 2025-07-18 15:03:21 -07:00
chrislu
4801f641f1 install s3 tests 2025-07-18 15:01:25 -07:00
chrislu
770888df81 use marker 2025-07-18 14:54:15 -07:00
chrislu
1dfdd3c84d Merge branch 'master' into fix-GetObjectLockConfigurationHandler 2025-07-18 14:47:36 -07:00
chrislu
b63855560a add s3 tests for object lock and retention 2025-07-18 14:46:32 -07:00
chrislu
9f8e0257b0 read entry once 2025-07-18 14:39:02 -07:00
Chris Lu
c6a22ce43a Fix get object lock configuration handler (#6996)
* fix GetObjectLockConfigurationHandler

* cache and use bucket object lock config

* subscribe to bucket configuration changes

* increase bucket config cache TTL

* refactor

* Update weed/s3api/s3api_server.go

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* avoid duplidated work

* rename variable

* Update s3api_object_handlers_put.go

* fix routing

* admin ui and api handler are consistent now

* use fields instead of xml

* fix test

* address comments

* Update weed/s3api/s3api_object_handlers_put.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update test/s3/retention/s3_retention_test.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update weed/s3api/object_lock_utils.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* change error style

* errorf

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-18 02:19:50 -07:00
chrislu
e53cd29eb2 errorf 2025-07-18 02:14:19 -07:00
chrislu
eeeb595346 change error style 2025-07-18 02:02:54 -07:00
Chris Lu
678f962ded Update weed/s3api/object_lock_utils.go
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-18 01:55:43 -07:00
Chris Lu
a906358c59 Update test/s3/retention/s3_retention_test.go
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-18 01:54:36 -07:00
Chris Lu
12f34f965f Update weed/s3api/s3api_object_handlers_put.go
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-18 01:54:14 -07:00