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
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
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
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
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
chrislu
1db149ecc2
address comments
2025-07-18 01:49:44 -07:00
chrislu
59f8444a90
fix test
2025-07-18 01:42:03 -07:00
chrislu
bcc7a74a25
use fields instead of xml
2025-07-18 01:39:23 -07:00
chrislu
0d4eeb67be
admin ui and api handler are consistent now
2025-07-18 01:27:46 -07:00
chrislu
85e34df214
fix routing
2025-07-18 01:27:27 -07:00
chrislu
bb05e6cade
Update s3api_object_handlers_put.go
2025-07-18 00:53:20 -07:00
chrislu
bc46214445
rename variable
2025-07-18 00:52:38 -07:00
chrislu
121f6ef2c0
avoid duplidated work
2025-07-18 00:48:56 -07:00
22673fee76
Update weed/s3api/s3api_server.go
...
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-07-18 00:47:24 -07:00
chrislu
3fbab20b83
refactor
2025-07-18 00:34:16 -07:00
chrislu
b8cbe9b6b2
increase bucket config cache TTL
2025-07-18 00:26:58 -07:00
chrislu
8bb47f3c03
subscribe to bucket configuration changes
2025-07-18 00:25:18 -07:00
chrislu
7bec2ef94b
cache and use bucket object lock config
2025-07-18 00:19:47 -07:00
chrislu
f9cbed7ee1
fix GetObjectLockConfigurationHandler
2025-07-17 23:12:19 -07:00
Chris Lu and GitHub
69553e5ba6
convert error fromating to %w everywhere ( #6995 )
2025-07-16 23:39:27 -07:00
a524b4f485
Object locking need to persist the tags and set the headers ( #6994 )
...
* fix object locking read and write
No logic to include object lock metadata in HEAD/GET response headers
No logic to extract object lock metadata from PUT request headers
* add tests for object locking
* Update weed/s3api/s3api_object_handlers_put.go
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Update weed/s3api/s3api_object_handlers.go
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* refactor
* add unit tests
* sync versions
* Update s3_worm_integration_test.go
* fix legal hold values
* lint
* fix tests
* racing condition when enable versioning
* fix tests
* validate put object lock header
* allow check lock permissions for PUT
* default to OFF legal hold
* only set object lock headers for objects that are actually from object lock-enabled buckets
fix --- FAIL: TestAddObjectLockHeadersToResponse/Handle_entry_with_no_object_lock_metadata (0.00s)
* address comments
* fix tests
* purge
* fix
* refactoring
* address comment
* address comment
* Update weed/s3api/s3api_object_handlers_put.go
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Update weed/s3api/s3api_object_handlers_put.go
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Update weed/s3api/s3api_object_handlers.go
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* avoid nil
* ensure locked objects cannot be overwritten
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-07-16 23:00:25 -07:00