|
@@ -17,7 +17,22 @@
|
|
*/
|
|
*/
|
|
package org.apache.hadoop.hdfs.server.datanode.web.webhdfs;
|
|
package org.apache.hadoop.hdfs.server.datanode.web.webhdfs;
|
|
|
|
|
|
-import com.google.common.base.Preconditions;
|
|
|
|
|
|
+import static io.netty.handler.codec.http.HttpHeaderNames.ACCESS_CONTROL_ALLOW_METHODS;
|
|
|
|
+import static io.netty.handler.codec.http.HttpHeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN;
|
|
|
|
+import static io.netty.handler.codec.http.HttpHeaderNames.CONNECTION;
|
|
|
|
+import static io.netty.handler.codec.http.HttpHeaderNames.CONTENT_LENGTH;
|
|
|
|
+import static io.netty.handler.codec.http.HttpHeaderNames.CONTENT_TYPE;
|
|
|
|
+import static io.netty.handler.codec.http.HttpHeaderNames.LOCATION;
|
|
|
|
+import static io.netty.handler.codec.http.HttpHeaderValues.CLOSE;
|
|
|
|
+import static io.netty.handler.codec.http.HttpMethod.GET;
|
|
|
|
+import static io.netty.handler.codec.http.HttpMethod.POST;
|
|
|
|
+import static io.netty.handler.codec.http.HttpMethod.PUT;
|
|
|
|
+import static io.netty.handler.codec.http.HttpResponseStatus.CONTINUE;
|
|
|
|
+import static io.netty.handler.codec.http.HttpResponseStatus.CREATED;
|
|
|
|
+import static io.netty.handler.codec.http.HttpResponseStatus.OK;
|
|
|
|
+import static io.netty.handler.codec.http.HttpVersion.HTTP_1_1;
|
|
|
|
+import static org.apache.hadoop.hdfs.protocol.HdfsConstants.HDFS_URI_SCHEME;
|
|
|
|
+import static org.apache.hadoop.hdfs.security.token.delegation.DelegationTokenIdentifier.HDFS_DELEGATION_KIND;
|
|
import io.netty.buffer.Unpooled;
|
|
import io.netty.buffer.Unpooled;
|
|
import io.netty.channel.ChannelFutureListener;
|
|
import io.netty.channel.ChannelFutureListener;
|
|
import io.netty.channel.ChannelHandlerContext;
|
|
import io.netty.channel.ChannelHandlerContext;
|
|
@@ -29,6 +44,15 @@ import io.netty.handler.codec.http.HttpMethod;
|
|
import io.netty.handler.codec.http.HttpRequest;
|
|
import io.netty.handler.codec.http.HttpRequest;
|
|
import io.netty.handler.codec.http.QueryStringDecoder;
|
|
import io.netty.handler.codec.http.QueryStringDecoder;
|
|
import io.netty.handler.stream.ChunkedStream;
|
|
import io.netty.handler.stream.ChunkedStream;
|
|
|
|
+
|
|
|
|
+import java.io.IOException;
|
|
|
|
+import java.io.InputStream;
|
|
|
|
+import java.io.OutputStream;
|
|
|
|
+import java.net.URI;
|
|
|
|
+import java.net.URISyntaxException;
|
|
|
|
+import java.security.PrivilegedExceptionAction;
|
|
|
|
+import java.util.EnumSet;
|
|
|
|
+
|
|
import org.apache.commons.io.Charsets;
|
|
import org.apache.commons.io.Charsets;
|
|
import org.apache.commons.logging.Log;
|
|
import org.apache.commons.logging.Log;
|
|
import org.apache.commons.logging.LogFactory;
|
|
import org.apache.commons.logging.LogFactory;
|
|
@@ -49,30 +73,7 @@ import org.apache.hadoop.security.UserGroupInformation;
|
|
import org.apache.hadoop.security.token.Token;
|
|
import org.apache.hadoop.security.token.Token;
|
|
import org.apache.hadoop.util.LimitInputStream;
|
|
import org.apache.hadoop.util.LimitInputStream;
|
|
|
|
|
|
-import java.io.IOException;
|
|
|
|
-import java.io.InputStream;
|
|
|
|
-import java.io.OutputStream;
|
|
|
|
-import java.net.URI;
|
|
|
|
-import java.net.URISyntaxException;
|
|
|
|
-import java.security.PrivilegedExceptionAction;
|
|
|
|
-import java.util.EnumSet;
|
|
|
|
-
|
|
|
|
-import static io.netty.handler.codec.http.HttpHeaders.Names.ACCESS_CONTROL_ALLOW_METHODS;
|
|
|
|
-import static io.netty.handler.codec.http.HttpHeaders.Names.ACCESS_CONTROL_ALLOW_ORIGIN;
|
|
|
|
-import static io.netty.handler.codec.http.HttpHeaders.Names.CONNECTION;
|
|
|
|
-import static io.netty.handler.codec.http.HttpHeaders.Names.CONTENT_LENGTH;
|
|
|
|
-import static io.netty.handler.codec.http.HttpHeaders.Names.CONTENT_TYPE;
|
|
|
|
-import static io.netty.handler.codec.http.HttpHeaders.Names.LOCATION;
|
|
|
|
-import static io.netty.handler.codec.http.HttpHeaders.Values.CLOSE;
|
|
|
|
-import static io.netty.handler.codec.http.HttpMethod.GET;
|
|
|
|
-import static io.netty.handler.codec.http.HttpMethod.POST;
|
|
|
|
-import static io.netty.handler.codec.http.HttpMethod.PUT;
|
|
|
|
-import static io.netty.handler.codec.http.HttpResponseStatus.CONTINUE;
|
|
|
|
-import static io.netty.handler.codec.http.HttpResponseStatus.CREATED;
|
|
|
|
-import static io.netty.handler.codec.http.HttpResponseStatus.OK;
|
|
|
|
-import static io.netty.handler.codec.http.HttpVersion.HTTP_1_1;
|
|
|
|
-import static org.apache.hadoop.hdfs.protocol.HdfsConstants.HDFS_URI_SCHEME;
|
|
|
|
-import static org.apache.hadoop.hdfs.security.token.delegation.DelegationTokenIdentifier.HDFS_DELEGATION_KIND;
|
|
|
|
|
|
+import com.google.common.base.Preconditions;
|
|
|
|
|
|
public class WebHdfsHandler extends SimpleChannelInboundHandler<HttpRequest> {
|
|
public class WebHdfsHandler extends SimpleChannelInboundHandler<HttpRequest> {
|
|
static final Log LOG = LogFactory.getLog(WebHdfsHandler.class);
|
|
static final Log LOG = LogFactory.getLog(WebHdfsHandler.class);
|
|
@@ -99,8 +100,8 @@ public class WebHdfsHandler extends SimpleChannelInboundHandler<HttpRequest> {
|
|
@Override
|
|
@Override
|
|
public void channelRead0(final ChannelHandlerContext ctx,
|
|
public void channelRead0(final ChannelHandlerContext ctx,
|
|
final HttpRequest req) throws Exception {
|
|
final HttpRequest req) throws Exception {
|
|
- Preconditions.checkArgument(req.getUri().startsWith(WEBHDFS_PREFIX));
|
|
|
|
- QueryStringDecoder queryString = new QueryStringDecoder(req.getUri());
|
|
|
|
|
|
+ Preconditions.checkArgument(req.uri().startsWith(WEBHDFS_PREFIX));
|
|
|
|
+ QueryStringDecoder queryString = new QueryStringDecoder(req.uri());
|
|
params = new ParameterParser(queryString, conf);
|
|
params = new ParameterParser(queryString, conf);
|
|
DataNodeUGIProvider ugiProvider = new DataNodeUGIProvider(params);
|
|
DataNodeUGIProvider ugiProvider = new DataNodeUGIProvider(params);
|
|
ugi = ugiProvider.ugi();
|
|
ugi = ugiProvider.ugi();
|
|
@@ -119,7 +120,7 @@ public class WebHdfsHandler extends SimpleChannelInboundHandler<HttpRequest> {
|
|
public void handle(ChannelHandlerContext ctx, HttpRequest req)
|
|
public void handle(ChannelHandlerContext ctx, HttpRequest req)
|
|
throws IOException, URISyntaxException {
|
|
throws IOException, URISyntaxException {
|
|
String op = params.op();
|
|
String op = params.op();
|
|
- HttpMethod method = req.getMethod();
|
|
|
|
|
|
+ HttpMethod method = req.method();
|
|
if (PutOpParam.Op.CREATE.name().equalsIgnoreCase(op)
|
|
if (PutOpParam.Op.CREATE.name().equalsIgnoreCase(op)
|
|
&& method == PUT) {
|
|
&& method == PUT) {
|
|
onCreate(ctx);
|
|
onCreate(ctx);
|