|
@@ -43,6 +43,7 @@ import org.apache.hadoop.fs.FileSystem;
|
|
import org.apache.hadoop.fs.Path;
|
|
import org.apache.hadoop.fs.Path;
|
|
import org.apache.hadoop.fs.PathIsNotEmptyDirectoryException;
|
|
import org.apache.hadoop.fs.PathIsNotEmptyDirectoryException;
|
|
import org.apache.hadoop.fs.permission.FsPermission;
|
|
import org.apache.hadoop.fs.permission.FsPermission;
|
|
|
|
+import org.apache.hadoop.hdds.conf.OzoneConfiguration;
|
|
import org.apache.hadoop.ozone.OmUtils;
|
|
import org.apache.hadoop.ozone.OmUtils;
|
|
import org.apache.hadoop.ozone.om.exceptions.OMException;
|
|
import org.apache.hadoop.ozone.om.exceptions.OMException;
|
|
import org.apache.hadoop.security.UserGroupInformation;
|
|
import org.apache.hadoop.security.UserGroupInformation;
|
|
@@ -87,11 +88,20 @@ public class BasicOzoneFileSystem extends FileSystem {
|
|
private static final Pattern URL_SCHEMA_PATTERN =
|
|
private static final Pattern URL_SCHEMA_PATTERN =
|
|
Pattern.compile("([^\\.]+)\\.([^\\.]+)\\.{0,1}(.*)");
|
|
Pattern.compile("([^\\.]+)\\.([^\\.]+)\\.{0,1}(.*)");
|
|
|
|
|
|
- private static final String URI_EXCEPTION_TEXT = "Ozone file system URL " +
|
|
|
|
- "should be one of the following formats: " +
|
|
|
|
- "o3fs://bucket.volume/key OR " +
|
|
|
|
- "o3fs://bucket.volume.om-host.example.com/key OR " +
|
|
|
|
- "o3fs://bucket.volume.om-host.example.com:5678/key";
|
|
|
|
|
|
+ private OzoneConfiguration getOzoneConf(Configuration conf) {
|
|
|
|
+
|
|
|
|
+ return (conf instanceof OzoneConfiguration) ?
|
|
|
|
+ (OzoneConfiguration) conf : new OzoneConfiguration(conf);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private String getUriExceptionText(Configuration conf) {
|
|
|
|
+
|
|
|
|
+ return "Ozone file system URL should be one of the following formats: "
|
|
|
|
+ + "o3fs://bucket.volume/key OR "
|
|
|
|
+ + "o3fs://bucket.volume.om-host.example.com/key OR "
|
|
|
|
+ + "o3fs://bucket.volume.om-host.example.com:"
|
|
|
|
+ + OmUtils.getOmRpcPort(getOzoneConf(conf)) + "/key";
|
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void initialize(URI name, Configuration conf) throws IOException {
|
|
public void initialize(URI name, Configuration conf) throws IOException {
|
|
@@ -106,7 +116,7 @@ public class BasicOzoneFileSystem extends FileSystem {
|
|
Matcher matcher = URL_SCHEMA_PATTERN.matcher(authority);
|
|
Matcher matcher = URL_SCHEMA_PATTERN.matcher(authority);
|
|
|
|
|
|
if (!matcher.matches()) {
|
|
if (!matcher.matches()) {
|
|
- throw new IllegalArgumentException(URI_EXCEPTION_TEXT);
|
|
|
|
|
|
+ throw new IllegalArgumentException(getUriExceptionText(conf));
|
|
}
|
|
}
|
|
String bucketStr = matcher.group(1);
|
|
String bucketStr = matcher.group(1);
|
|
String volumeStr = matcher.group(2);
|
|
String volumeStr = matcher.group(2);
|
|
@@ -118,14 +128,14 @@ public class BasicOzoneFileSystem extends FileSystem {
|
|
String[] parts = remaining.split(":");
|
|
String[] parts = remaining.split(":");
|
|
// Array length should be either 1(host) or 2(host:port)
|
|
// Array length should be either 1(host) or 2(host:port)
|
|
if (parts.length > 2) {
|
|
if (parts.length > 2) {
|
|
- throw new IllegalArgumentException(URI_EXCEPTION_TEXT);
|
|
|
|
|
|
+ throw new IllegalArgumentException(getUriExceptionText(conf));
|
|
}
|
|
}
|
|
omHost = parts[0];
|
|
omHost = parts[0];
|
|
if (parts.length == 2) {
|
|
if (parts.length == 2) {
|
|
try {
|
|
try {
|
|
omPort = Integer.parseInt(parts[1]);
|
|
omPort = Integer.parseInt(parts[1]);
|
|
} catch (NumberFormatException e) {
|
|
} catch (NumberFormatException e) {
|
|
- throw new IllegalArgumentException(URI_EXCEPTION_TEXT);
|
|
|
|
|
|
+ throw new IllegalArgumentException(getUriExceptionText(conf));
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
// If port number is not specified, read it from config
|
|
// If port number is not specified, read it from config
|