rakeshadr commented on code in PR #3508:
URL: https://github.com/apache/ozone/pull/3508#discussion_r942345555


##########
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerProtocolServerSideTranslatorPB.java:
##########
@@ -324,6 +345,181 @@ private OMResponse createErrorResponse(
     return omResponse.build();
   }
 
+  /**
+   * Associate bucket ID with requests that have an associated bucket.
+   * Returns a new OMRequest object with the bucket ID associated.
+   *
+   * @param omRequest OMRequest
+   * @return OMRequest with bucket ID associated.
+   * @throws IOException
+   */
+  @SuppressWarnings("checkstyle:MethodLength")
+  private OMRequest associateBucketIdWithRequest(OMRequest omRequest)
+      throws IOException {
+    OMMetadataManager metadataManager = ozoneManager.getMetadataManager();
+    String volumeName = "";
+    String bucketName = "";
+
+    OzoneManagerProtocolProtos.KeyArgs keyArgs;
+    OzoneObj obj;
+    ObjectParser objectParser;
+    ObjectType type;
+
+    switch (omRequest.getCmdType()) {
+    case AddAcl:
+      type = omRequest.getAddAclRequest().getObj().getResType();
+      // No need for bucket ID validation in case of volume ACL
+      if (ObjectType.VOLUME == type) {
+        break;
+      }
+
+      obj =
+          OzoneObjInfo.fromProtobuf(omRequest.getAddAclRequest().getObj());
+      objectParser = new ObjectParser(obj.getPath(), type);
+
+      volumeName = objectParser.getVolume();
+      bucketName = objectParser.getBucket();
+      break;
+    case RemoveAcl:
+      type = omRequest.getAddAclRequest().getObj().getResType();
+      // No need for bucket ID validation in case of volume ACL
+      if (ObjectType.VOLUME == type) {
+        break;
+      }
+
+      obj =
+          OzoneObjInfo.fromProtobuf(omRequest.getRemoveAclRequest().getObj());
+      objectParser = new ObjectParser(obj.getPath(), type);
+
+      volumeName = objectParser.getVolume();
+      bucketName = objectParser.getBucket();
+      break;
+    case SetAcl:
+      type = omRequest.getAddAclRequest().getObj().getResType();
+      // No need for bucket ID validation in case of volume ACL
+      if (ObjectType.VOLUME == type) {
+        break;
+      }
+
+      obj =
+          OzoneObjInfo.fromProtobuf(omRequest.getSetAclRequest().getObj());
+      objectParser = new ObjectParser(obj.getPath(), type);
+
+      volumeName = objectParser.getVolume();
+      bucketName = objectParser.getBucket();
+      break;
+    case DeleteBucket:
+      volumeName = omRequest.getDeleteBucketRequest().getVolumeName();
+      bucketName = omRequest.getDeleteBucketRequest().getBucketName();
+      break;
+    case CreateDirectory:
+      keyArgs = omRequest.getCreateDirectoryRequest().getKeyArgs();
+      volumeName = keyArgs.getVolumeName();
+      bucketName = keyArgs.getBucketName();
+      break;
+    case CreateFile:
+      keyArgs = omRequest.getCreateFileRequest().getKeyArgs();
+      volumeName = keyArgs.getVolumeName();
+      bucketName = keyArgs.getBucketName();
+      break;
+    case CreateKey:
+      keyArgs = omRequest.getCreateKeyRequest().getKeyArgs();
+      volumeName = keyArgs.getVolumeName();
+      bucketName = keyArgs.getBucketName();
+      break;
+    case AllocateBlock:
+      keyArgs = omRequest.getAllocateBlockRequest().getKeyArgs();
+      volumeName = keyArgs.getVolumeName();
+      bucketName = keyArgs.getBucketName();
+      break;
+    case CommitKey:
+      keyArgs = omRequest.getCommitKeyRequest().getKeyArgs();
+      volumeName = keyArgs.getVolumeName();
+      bucketName = keyArgs.getBucketName();
+      break;
+    case DeleteKey:
+      keyArgs = omRequest.getDeleteKeyRequest().getKeyArgs();
+      volumeName = keyArgs.getVolumeName();
+      bucketName = keyArgs.getBucketName();
+      break;
+    case DeleteKeys:
+      OzoneManagerProtocolProtos.DeleteKeyArgs deleteKeyArgs =
+          omRequest.getDeleteKeysRequest()
+              .getDeleteKeys();
+      volumeName = deleteKeyArgs.getVolumeName();
+      bucketName = deleteKeyArgs.getBucketName();
+      break;
+    case RenameKey:
+      keyArgs = omRequest.getRenameKeyRequest().getKeyArgs();
+      volumeName = keyArgs.getVolumeName();
+      bucketName = keyArgs.getBucketName();
+      break;
+    case RenameKeys:
+      OzoneManagerProtocolProtos.RenameKeysArgs renameKeysArgs =
+          omRequest.getRenameKeysRequest().getRenameKeysArgs();
+      volumeName = renameKeysArgs.getVolumeName();
+      bucketName = renameKeysArgs.getBucketName();
+      break;
+    case InitiateMultiPartUpload:
+      keyArgs = omRequest.getInitiateMultiPartUploadRequest().getKeyArgs();
+      volumeName = keyArgs.getVolumeName();
+      bucketName = keyArgs.getBucketName();
+      break;
+    case CommitMultiPartUpload:
+      keyArgs = omRequest.getCommitMultiPartUploadRequest().getKeyArgs();
+      volumeName = keyArgs.getVolumeName();
+      bucketName = keyArgs.getBucketName();
+      break;
+    case AbortMultiPartUpload:
+      keyArgs = omRequest.getAbortMultiPartUploadRequest().getKeyArgs();
+      volumeName = keyArgs.getVolumeName();
+      bucketName = keyArgs.getBucketName();
+      break;
+    case CompleteMultiPartUpload:
+      keyArgs = omRequest.getCompleteMultiPartUploadRequest().getKeyArgs();
+      volumeName = keyArgs.getVolumeName();
+      bucketName = keyArgs.getBucketName();
+      break;
+    default:
+      // do nothing in case of other requests.

Review Comment:
   Please add a debug log message about the uncovered or unknown command type, 
here we will not associate the bucketIds



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


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

Reply via email to