Chung-En Lee created HDDS-16487:
-----------------------------------
Summary: Support PutBucketObjectLockConfiguration
Key: HDDS-16487
URL: https://issues.apache.org/jira/browse/HDDS-16487
Project: Apache Ozone
Issue Type: Sub-task
Reporter: Chung-En Lee
Implement the S3 {{PutBucketObjectLockConfiguration}} operation to enable
Object Lock and configure default retention rules on Ozone buckets (OBS layout
only). This task spans S3 api and ozone java api.
{*}1. S3 Gateway ({{{}hadoop-ozone/s3gateway{}}}){*}:
* Add route handler for {{{}PUT /\{bucket}?object-lock{}}}.
* Parse incoming {{ObjectLockConfiguration}} XML payload:
** Extract {{ObjectLockEnabled}} (must be {{{}Enabled{}}}).
** Parse optional {{Rule}} / {{DefaultRetention}} ({{{}Mode{}}}:
{{GOVERNANCE}} or {{{}COMPLIANCE{}}}, {{Days}} or {{{}Years{}}}).
* Validate request payload and map errors to standard S3 error codes (e.g.,
{{{}MalformedXML{}}}, {{{}InvalidArgument{}}}).
* Forward the request to OM via the client protocol.
{*}2. Protobuf Protocol ({{{}OmClientProtocol.proto{}}}){*}:
* Add client RPC messages:
** {{SetBucketObjectLockConfigRequest}} (contains volume name, bucket name,
and {{{}RetentionConfig{}}}).
** {{{}SetBucketObjectLockConfigResponse{}}}.
* Register the new request type in {{Type}} enum and OM request dispatching
pipeline.
{*}3. {{OMBucketSetObjectLockConfigRequest}}{*}:
* {*}{{preExecute}}{*}:
** Authorize the caller against the Ranger action
{{{}PutBucketObjectLockConfiguration{}}}.
** Perform fail-fast sanity checks on input parameters (e.g., duration $> 0$,
valid retention mode).
** Verify the bucket exists and its bucket layout is {{OBJECT_STORE}} (OBS);
reject if it is FSO or Legacy.
* {*}{{validateAndUpdateCache}}{*}:
** Acquire bucket write lock.
** Enforce immutability: if {{objectLockEnabled}} is already {{{}true{}}},
reject any attempt to disable it ({{{}false{}}}).
** Update {{OmBucketInfo}} with {{objectLockEnabled = true}} and update
{{{}defaultRetention{}}}.
** Commit the updated {{OmBucketInfo}} to {{BucketTable}} cache and RocksDB.
h4.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]