Chung-En Lee created HDDS-16488:
-----------------------------------

             Summary: Support GetBucketObjectLockConfiguration
                 Key: HDDS-16488
                 URL: https://issues.apache.org/jira/browse/HDDS-16488
             Project: Apache Ozone
          Issue Type: Sub-task
            Reporter: Chung-En Lee


Implement the S3 {{GetBucketObjectLockConfiguration}} operation to allow users 
to retrieve the Object Lock status and default retention settings of a bucket. 
This task covers S3 Gateway REST routing, OM authorization, and {{BucketTable}} 
read resolution.

{*}1. S3 Gateway ({{{}hadoop-ozone/s3gateway{}}}){*}:
 * Add route handler for {{{}GET /\{bucket}?object-lock{}}}.

 * Forward the request to Ozone Manager via client protocol.

 * Serialize the returned configuration into the standard S3 
{{ObjectLockConfiguration}} XML response:

 ** {{<ObjectLockEnabled>Enabled</ObjectLockEnabled>}}

 ** Optional 
{{<Rule><DefaultRetention><Mode>...</Mode><Days>...</Days></DefaultRetention></Rule>}}

 * Map OM exceptions to standard S3 error responses:

 ** Return {{404 NoSuchBucket}} if the target bucket does not exist.

 ** Return {{404 ObjectLockConfigurationNotFoundError}} ({{{}The specified 
object does not have a ObjectLock configuration{}}}) if the bucket exists but 
{{objectLockEnabled}} is {{{}false{}}}.

{*}2. Protobuf Protocol ({{{}OmClientProtocol.proto{}}}) & OM Client{*}:
 * Add RPC messages:

 ** {{GetBucketObjectLockConfigRequest}} (contains {{{}volumeName{}}}, 
{{{}bucketName{}}}).

 ** {{GetBucketObjectLockConfigResponse}} (contains {{objectLockEnabled}} and 
optional {{{}defaultRetention{}}}).

 * Register request in {{OmClientProtocol}} and wire through 
{{{}OzoneManagerProtocolClientSideTranslatorPB{}}}.

{*}3. OM Read Path / Metadata Handler ({{{}hadoop-ozone/ozone-manager{}}}){*}:
 * Authorize the incoming request against Ranger action 
{{GetBucketObjectLockConfiguration}} (requiring bucket {{READ}} permission).

 * Acquire bucket read lock and lookup target bucket in {{{}BucketTable{}}}.

 * If bucket does not exist, throw {{{}BUCKET_NOT_FOUND{}}}.

 * Check if object lock is enable.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to