aboutsummaryrefslogtreecommitdiff
path: root/weed/s3api/s3api_object_handlers_retention.go
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2025-07-17 23:12:19 -0700
committerchrislu <chris.lu@gmail.com>2025-07-17 23:12:19 -0700
commitf9cbed7ee1a59c1345466b80e254a656352cc143 (patch)
treedfde91bec83deffd0fa8ea4929af426455f0a932 /weed/s3api/s3api_object_handlers_retention.go
parent69553e5ba6d46ed924b0c3adc3f8d9666550999a (diff)
downloadseaweedfs-f9cbed7ee1a59c1345466b80e254a656352cc143.tar.xz
seaweedfs-f9cbed7ee1a59c1345466b80e254a656352cc143.zip
fix GetObjectLockConfigurationHandler
Diffstat (limited to 'weed/s3api/s3api_object_handlers_retention.go')
-rw-r--r--weed/s3api/s3api_object_handlers_retention.go25
1 files changed, 19 insertions, 6 deletions
diff --git a/weed/s3api/s3api_object_handlers_retention.go b/weed/s3api/s3api_object_handlers_retention.go
index e92e821c8..f15e2fa54 100644
--- a/weed/s3api/s3api_object_handlers_retention.go
+++ b/weed/s3api/s3api_object_handlers_retention.go
@@ -322,14 +322,27 @@ func (s3a *S3ApiServer) GetObjectLockConfigurationHandler(w http.ResponseWriter,
return
}
- // Check if object lock configuration exists
- if bucketConfig.Entry.Extended == nil {
- s3err.WriteErrorResponse(w, r, s3err.ErrNoSuchObjectLockConfiguration)
- return
+ var configXML []byte
+
+ if bucketConfig.Entry.Extended != nil {
+ // First check if we have stored XML configuration (includes retention policies)
+ if storedConfigXML, exists := bucketConfig.Entry.Extended[s3_constants.ExtObjectLockConfigKey]; exists {
+ configXML = storedConfigXML
+ } else {
+ // Check if Object Lock is enabled via boolean flag
+ if enabledBytes, exists := bucketConfig.Entry.Extended[s3_constants.ExtObjectLockEnabledKey]; exists {
+ enabled := string(enabledBytes)
+ if enabled == s3_constants.ObjectLockEnabled || enabled == "true" {
+ // Generate minimal XML configuration for enabled Object Lock without retention policies
+ minimalConfig := `<ObjectLockConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><ObjectLockEnabled>Enabled</ObjectLockEnabled></ObjectLockConfiguration>`
+ configXML = []byte(minimalConfig)
+ }
+ }
+ }
}
- configXML, exists := bucketConfig.Entry.Extended[s3_constants.ExtObjectLockConfigKey]
- if !exists {
+ // If no Object Lock configuration found, return error
+ if len(configXML) == 0 {
s3err.WriteErrorResponse(w, r, s3err.ErrNoSuchObjectLockConfiguration)
return
}