jerqi commented on code in PR #5786:
URL: https://github.com/apache/gravitino/pull/5786#discussion_r1897049737
##########
authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorizationHDFSPlugin.java:
##########
@@ -212,27 +287,77 @@ public AuthorizationMetadataObject
translateMetadataObject(MetadataObject metada
Preconditions.checkArgument(
nsMetadataObject.size() > 0, "The metadata object must have at least
one name.");
- if (metadataObject.type() == MetadataObject.Type.FILESET) {
- RangerPathBaseMetadataObject rangerHDFSMetadataObject =
- new RangerPathBaseMetadataObject(
- getFileSetPath(metadataObject),
RangerPathBaseMetadataObject.Type.PATH);
- rangerHDFSMetadataObject.validateAuthorizationMetadataObject();
- return rangerHDFSMetadataObject;
- } else {
- return new RangerPathBaseMetadataObject("",
RangerPathBaseMetadataObject.Type.PATH);
+ RangerHDFSMetadataObject rangerHDFSMetadataObject;
+ switch (metadataObject.type()) {
+ case METALAKE:
+ case CATALOG:
+ rangerHDFSMetadataObject =
+ new RangerHDFSMetadataObject("",
RangerHDFSMetadataObject.Type.PATH);
+ break;
+ case SCHEMA:
+ rangerHDFSMetadataObject =
+ new RangerHDFSMetadataObject(
+ metadataObject.fullName(), RangerHDFSMetadataObject.Type.PATH);
+ break;
+ case FILESET:
+ rangerHDFSMetadataObject =
+ new RangerHDFSMetadataObject(
+ getLocationPath(metadataObject),
RangerHDFSMetadataObject.Type.PATH);
+ break;
+ default:
+ throw new AuthorizationPluginException(
+ "The metadata object type %s is not supported in the
RangerAuthorizationHDFSPlugin",
+ metadataObject.type());
}
+ rangerHDFSMetadataObject.validateAuthorizationMetadataObject();
+ return rangerHDFSMetadataObject;
}
- public String getFileSetPath(MetadataObject metadataObject) {
- FilesetDispatcher filesetDispatcher =
GravitinoEnv.getInstance().filesetDispatcher();
- NameIdentifier identifier =
- NameIdentifier.parse(String.format("%s.%s", metalake,
metadataObject.fullName()));
- Fileset fileset = filesetDispatcher.loadFileset(identifier);
- Preconditions.checkArgument(
- fileset != null, String.format("Fileset %s is not found", identifier));
- String filesetLocation = fileset.storageLocation();
- Preconditions.checkArgument(
- filesetLocation != null, String.format("Fileset %s location is not
found", identifier));
- return pattern.matcher(filesetLocation).replaceAll("");
+ private NameIdentifier getObjectNameIdentifier(MetadataObject
metadataObject) {
+ return NameIdentifier.parse(String.format("%s.%s", metalake,
metadataObject.fullName()));
+ }
+
+ @VisibleForTesting
+ public String getLocationPath(MetadataObject metadataObject) throws
NoSuchEntityException {
+ String locationPath = null;
+ switch (metadataObject.type()) {
+ case METALAKE:
+ case SCHEMA:
+ case TABLE:
Review Comment:
We need add `TODO` in the code. Otherwise I will think this is an error.
--
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]