You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by km...@apache.org on 2013/09/17 03:54:14 UTC
git commit: Switch WebHdfsDeploymentContributor to using file based
rules. Change based WebHdfs URL to exclude version number.
Updated Branches:
refs/heads/master 1c2727cc2 -> 5467a33da
Switch WebHdfsDeploymentContributor to using file based rules.
Change based WebHdfs URL to exclude version number.
Project: http://git-wip-us.apache.org/repos/asf/incubator-knox/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-knox/commit/5467a33d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-knox/tree/5467a33d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-knox/diff/5467a33d
Branch: refs/heads/master
Commit: 5467a33da724eb0e01aa4285e413ae1a82514b1b
Parents: 1c2727c
Author: Kevin Minder <ke...@hortonworks.com>
Authored: Mon Sep 16 21:53:48 2013 -0400
Committer: Kevin Minder <ke...@hortonworks.com>
Committed: Mon Sep 16 21:54:09 2013 -0400
----------------------------------------------------------------------
.../src/main/resources/clusters/demo.xml | 2 +-
.../rewrite/api/UrlRewriteServletFilter.java | 13 ++
.../filter/rewrite/impl/UrlRewriteRequest.java | 22 +--
.../filter/rewrite/impl/UrlRewriteResponse.java | 18 +--
.../gateway/filter/rewrite/impl/rewrite.xml | 14 +-
gateway-release/home/INSTALL | 4 +-
gateway-release/home/deployments/sample.xml | 2 +-
gateway-release/home/templates/sample.conf | 2 +-
gateway-release/home/templates/sample.xml | 2 +-
.../hadoop/gateway/filter/JaasLoginFilter.java | 3 -
.../src/main/resources/cluster-sample.xml | 2 +-
.../builder/PropertyTopologyBuilderTest.java | 2 +-
.../topology/xml/TopologyRulesModuleTest.java | 4 +-
.../gateway/topology/file/topology-one.xml | 2 +-
.../gateway/topology/file/topology-three.xml | 2 +-
.../gateway/topology/file/topology-two.xml | 2 +-
.../xml/simple-topology-ambari-format.conf | 2 +-
.../xml/simple-topology-knox-format.xml | 2 +-
.../hdfs/WebHdfsDeploymentContributor.java | 137 +++++++++++--------
.../WebHdfsDeploymentContributor/rewrite.xml | 62 +++++++++
.../oozie/OozieDeploymentContributor.java | 2 +-
.../ServiceDeploymentContributorBase.java | 18 ++-
.../hadoop/gateway/GatewayBasicFuncTest.java | 62 ++++-----
.../hadoop/gateway/GatewayFuncTestDriver.java | 38 ++---
.../deploy/DeploymentFactoryFuncTest.java | 2 +-
hsso-release/home/deployments/sample.xml | 2 +-
hsso-release/home/templates/topology.xml | 2 +-
pom.xml | 5 +
28 files changed, 263 insertions(+), 167 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-demo/src/main/resources/clusters/demo.xml
----------------------------------------------------------------------
diff --git a/gateway-demo/src/main/resources/clusters/demo.xml b/gateway-demo/src/main/resources/clusters/demo.xml
index ea66063..dec7ea4 100644
--- a/gateway-demo/src/main/resources/clusters/demo.xml
+++ b/gateway-demo/src/main/resources/clusters/demo.xml
@@ -20,6 +20,6 @@
<topology>
<service>
<role>WEBHDFS</role>
- <url>http://vm.home:50070/webhdfs/v1</url>
+ <url>http://vm.home:50070/webhdfs</url>
</service>
</topology>
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/api/UrlRewriteServletFilter.java
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/api/UrlRewriteServletFilter.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/api/UrlRewriteServletFilter.java
index 4405009..74ac67a 100644
--- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/api/UrlRewriteServletFilter.java
+++ b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/api/UrlRewriteServletFilter.java
@@ -20,7 +20,9 @@ package org.apache.hadoop.gateway.filter.rewrite.api;
import org.apache.hadoop.gateway.filter.AbstractGatewayFilter;
import org.apache.hadoop.gateway.filter.rewrite.impl.UrlRewriteRequest;
import org.apache.hadoop.gateway.filter.rewrite.impl.UrlRewriteResponse;
+import org.apache.hadoop.gateway.util.MimeTypes;
+import javax.activation.MimeType;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
@@ -33,6 +35,17 @@ import java.io.IOException;
*/
public class UrlRewriteServletFilter extends AbstractGatewayFilter {
+ public static final String REQUEST_URL_RULE_PARAM = "request.url";
+ public static final String REQUEST_HEADERS_FILTER_PARAM = "request.headers";
+ public static final String REQUEST_COOKIES_FILTER_PARAM = "request.cookies";
+ public static final String REQUEST_BODY_FILTER_PARAM = "request.body";
+ public static final String RESPONSE_HEADERS_FILTER_PARAM = "response.headers";
+ public static final String RESPONSE_COOKIES_FILTER_PARAM = "response.cookies";
+ public static final String RESPONSE_BODY_FILTER_PARAM = "response.body";
+
+ public static final MimeType HEADERS_MIME_TYPE = MimeTypes.create( "application/x-http-headers", null );
+ public static final MimeType COOKIES_MIME_TYPE = MimeTypes.create( "application/x-http-cookies", null );
+
@Override
public void init( FilterConfig filterConfig ) throws ServletException {
super.init( filterConfig );
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRequest.java
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRequest.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRequest.java
index 6e513ec..a12fc24 100644
--- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRequest.java
+++ b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRequest.java
@@ -23,11 +23,11 @@ import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterContentDescr
import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterDescriptor;
import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteRulesDescriptor;
import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteServletContextListener;
+import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteServletFilter;
import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteStreamFilterFactory;
import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriter;
import org.apache.hadoop.gateway.filter.rewrite.i18n.UrlRewriteMessages;
import org.apache.hadoop.gateway.i18n.messages.MessagesFactory;
-import org.apache.hadoop.gateway.util.MimeTypes;
import org.apache.hadoop.gateway.util.urltemplate.Parser;
import org.apache.hadoop.gateway.util.urltemplate.Resolver;
import org.apache.hadoop.gateway.util.urltemplate.Template;
@@ -51,14 +51,6 @@ public class UrlRewriteRequest extends GatewayRequestWrapper implements Resolver
private static final UrlRewriteMessages LOG = MessagesFactory.get( UrlRewriteMessages.class );
- private static final String REQUEST_URL_RULE_PARAM = "request.url";
- private static final String REQUEST_BODY_FILTER_PARAM = "request.body";
- private static final String REQUEST_HEADERS_FILTER_PARAM = "request.headers";
- private static final String REQUEST_COOKIES_FILTER_PARAM = "request.cookies";
-
- private static final MimeType HEADERS_MIME_TYPE = MimeTypes.create( "application/x-http-headers", null );
- private static final MimeType COOKIES_MIME_TYPE = MimeTypes.create( "application/x-http-cookies", null );
-
private UrlRewriter rewriter;
private String urlRuleName;
private String bodyFilterName;
@@ -75,12 +67,12 @@ public class UrlRewriteRequest extends GatewayRequestWrapper implements Resolver
public UrlRewriteRequest( FilterConfig config, HttpServletRequest request ) throws IOException {
super( request );
this.rewriter = UrlRewriteServletContextListener.getUrlRewriter( config.getServletContext() );
- this.urlRuleName = config.getInitParameter( REQUEST_URL_RULE_PARAM );
- this.bodyFilterName = config.getInitParameter( REQUEST_BODY_FILTER_PARAM );
- this.headersFilterName = config.getInitParameter( REQUEST_HEADERS_FILTER_PARAM );
- this.headersFilterConfig = getRewriteFilterConfig( headersFilterName, HEADERS_MIME_TYPE );
- this.cookiesFilterName = config.getInitParameter( REQUEST_COOKIES_FILTER_PARAM );
- this.cookiesFilterConfig = getRewriteFilterConfig( cookiesFilterName, COOKIES_MIME_TYPE );
+ this.urlRuleName = config.getInitParameter( UrlRewriteServletFilter.REQUEST_URL_RULE_PARAM );
+ this.bodyFilterName = config.getInitParameter( UrlRewriteServletFilter.REQUEST_BODY_FILTER_PARAM );
+ this.headersFilterName = config.getInitParameter( UrlRewriteServletFilter.REQUEST_HEADERS_FILTER_PARAM );
+ this.headersFilterConfig = getRewriteFilterConfig( headersFilterName, UrlRewriteServletFilter.HEADERS_MIME_TYPE );
+ this.cookiesFilterName = config.getInitParameter( UrlRewriteServletFilter.REQUEST_COOKIES_FILTER_PARAM );
+ this.cookiesFilterConfig = getRewriteFilterConfig( cookiesFilterName, UrlRewriteServletFilter.COOKIES_MIME_TYPE );
}
private Template getSourceUrl() {
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteResponse.java
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteResponse.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteResponse.java
index 2c14b9f..a263a55 100644
--- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteResponse.java
+++ b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteResponse.java
@@ -21,11 +21,11 @@ import org.apache.hadoop.gateway.filter.GatewayResponseWrapper;
import org.apache.hadoop.gateway.filter.ResponseStreamer;
import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterContentDescriptor;
import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteServletContextListener;
+import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteServletFilter;
import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteStreamFilterFactory;
import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriter;
import org.apache.hadoop.gateway.filter.rewrite.i18n.UrlRewriteMessages;
import org.apache.hadoop.gateway.i18n.messages.MessagesFactory;
-import org.apache.hadoop.gateway.util.MimeTypes;
import org.apache.hadoop.gateway.util.Urls;
import org.apache.hadoop.gateway.util.urltemplate.Params;
import org.apache.hadoop.gateway.util.urltemplate.Parser;
@@ -64,15 +64,9 @@ public class UrlRewriteResponse extends GatewayResponseWrapper implements Params
IGNORE_HEADER_NAMES.add( "Content-Length" );
}
- private static final MimeType HEADERS_MIME_TYPE = MimeTypes.create( "application/x-http-headers", null );
- private static final MimeType COOKIES_MIME_TYPE = MimeTypes.create( "application/x-http-cookies", null );
-
private static final String REQUEST_PARAM_PREFIX = "request.";
private static final String CLUSTER_PARAM_PREFIX = "cluster.";
private static final String GATEWAY_PARAM_PREFIX = "gateway.";
- private static final String RESPONSE_BODY_FILTER_PARAM = "response.body";
- private static final String RESPONSE_HEADERS_FILTER_PARAM = "response.headers";
- private static final String RESPONSE_COOKIES_FILTER_PARAM = "response.cookies";
private UrlRewriter rewriter;
private FilterConfig config;
@@ -93,11 +87,11 @@ public class UrlRewriteResponse extends GatewayResponseWrapper implements Params
this.request = request;
this.response = response;
this.output = null;
- this.bodyFilterName = config.getInitParameter( RESPONSE_BODY_FILTER_PARAM );
- this.headersFilterName = config.getInitParameter( RESPONSE_HEADERS_FILTER_PARAM );
- this.headersFilterConfig = getRewriteFilterConfig( rewriter.getConfig(), headersFilterName, HEADERS_MIME_TYPE );
- this.cookiesFilterName = config.getInitParameter( RESPONSE_COOKIES_FILTER_PARAM );
- this.cookiesFilterConfig = getRewriteFilterConfig( rewriter.getConfig(), cookiesFilterName, COOKIES_MIME_TYPE );
+ this.bodyFilterName = config.getInitParameter( UrlRewriteServletFilter.RESPONSE_BODY_FILTER_PARAM );
+ this.headersFilterName = config.getInitParameter( UrlRewriteServletFilter.RESPONSE_HEADERS_FILTER_PARAM );
+ this.headersFilterConfig = getRewriteFilterConfig( rewriter.getConfig(), headersFilterName, UrlRewriteServletFilter.HEADERS_MIME_TYPE );
+ this.cookiesFilterName = config.getInitParameter( UrlRewriteServletFilter.RESPONSE_COOKIES_FILTER_PARAM );
+ this.cookiesFilterConfig = getRewriteFilterConfig( rewriter.getConfig(), cookiesFilterName, UrlRewriteServletFilter.COOKIES_MIME_TYPE );
}
protected boolean ignoreHeader( String name ) {
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-provider-rewrite/src/test/java/org/apache/hadoop/gateway/filter/rewrite/impl/rewrite.xml
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite/src/test/java/org/apache/hadoop/gateway/filter/rewrite/impl/rewrite.xml b/gateway-provider-rewrite/src/test/java/org/apache/hadoop/gateway/filter/rewrite/impl/rewrite.xml
index 162251f..65ee022 100644
--- a/gateway-provider-rewrite/src/test/java/org/apache/hadoop/gateway/filter/rewrite/impl/rewrite.xml
+++ b/gateway-provider-rewrite/src/test/java/org/apache/hadoop/gateway/filter/rewrite/impl/rewrite.xml
@@ -77,20 +77,20 @@
ContentPathParser
-->
- <rule dir="IN" name="WEBHDFS/webhdfs/namenode/root/inbound" pattern="*://*:*/**/namenode/api/v1/?{**}">
- <rewrite template="http://vm:50070/webhdfs/v1/?{**}"/>
+ <rule dir="IN" name="WEBHDFS/webhdfs/namenode/root/inbound" pattern="*://*:*/**/namenode/api/{version}/?{**}">
+ <rewrite template="http://vm:50070/webhdfs/{version}/?{**}"/>
</rule>
- <rule dir="IN" name="WEBHDFS/webhdfs/namenode/file/inbound" pattern="*://*:*/**/namenode/api/v1/{path=**}?{**}">
- <rewrite template="http://vm:50070/webhdfs/v1/{path=**}?{**}"/>
+ <rule dir="IN" name="WEBHDFS/webhdfs/namenode/file/inbound" pattern="*://*:*/**/namenode/api/{version}/{path=**}?{**}">
+ <rewrite template="http://vm:50070/webhdfs/{version}/{path=**}?{**}"/>
</rule>
- <rule dir="IN" name="WEBHDFS/webhdfs/datanode/inbound" pattern="*://*:*/**/datanode/api/v1/{path=**}?**">
+ <rule dir="IN" name="WEBHDFS/webhdfs/datanode/inbound" pattern="*://*:*/**/datanode/api/{version}/{path=**}?**">
<decode-query/>
- <match pattern="*://*:*/**/datanode/api/v1/{path=**}?{host}&{port}&{**}"/>
+ <match pattern="*://*:*/**/datanode/api/{version}/{path=**}?{host}&{port}&{**}"/>
<rewrite template="http://{host}:{port}/{path=**}?{**}"/>
</rule>
<rule dir="OUT" name="WEBHDFS/webhdfs/datanode/outbound" pattern="*://*:*/**?**">
<match pattern="*://{host}:{port}/{path=**}?{**}"/>
- <rewrite template="{gateway.url}/datanode/api/v1/{path=**}?{host}&{port}&{**}"/>
+ <rewrite template="{gateway.url}/datanode/api/{version}/{path=**}?{host}&{port}&{**}"/>
<encode-query/>
</rule>
<rule dir="IN" name="TEMPLETON/templeton/templeton/request" pattern="*://*:*/**/templeton/api/v1/{path=**}?{**}">
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-release/home/INSTALL
----------------------------------------------------------------------
diff --git a/gateway-release/home/INSTALL b/gateway-release/home/INSTALL
index f198704..d972b2e 100644
--- a/gateway-release/home/INSTALL
+++ b/gateway-release/home/INSTALL
@@ -212,8 +212,8 @@ and the cluster topology descriptors
(e.g. {GATEWAY_HOME}/deployments/<cluster-name>.xml).
HDFS (NameNode)
- Gateway: http://<gateway-host>:<gateway-port>/<gateway-path>/<cluster-name>/namenode/api/v1
- Cluster: http://<namenode-host>:50070/webhdfs/v1
+ Gateway: http://<gateway-host>:<gateway-port>/<gateway-path>/<cluster-name>/namenode/api
+ Cluster: http://<namenode-host>:50070/webhdfs
WebHCat (Templeton)
Gateway: http://<gateway-host>:<gateway-port>/<gateway-path>/<cluster-name>/templeton/api/v1
Cluster: http://<templeton-host>:50111/templeton/v1
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-release/home/deployments/sample.xml
----------------------------------------------------------------------
diff --git a/gateway-release/home/deployments/sample.xml b/gateway-release/home/deployments/sample.xml
index 0bc585f..54723a2 100644
--- a/gateway-release/home/deployments/sample.xml
+++ b/gateway-release/home/deployments/sample.xml
@@ -66,7 +66,7 @@
</service>
<service>
<role>WEBHDFS</role>
- <url>http://localhost:50070/webhdfs/v1</url>
+ <url>http://localhost:50070/webhdfs</url>
</service>
<service>
<role>TEMPLETON</role>
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-release/home/templates/sample.conf
----------------------------------------------------------------------
diff --git a/gateway-release/home/templates/sample.conf b/gateway-release/home/templates/sample.conf
index d12345d..e495270 100644
--- a/gateway-release/home/templates/sample.conf
+++ b/gateway-release/home/templates/sample.conf
@@ -58,7 +58,7 @@
</property>
<property>
<name>topology.service.WEBHDFS..url</name>
- <value>http://localhost:50070/webhdfs/v1</value>
+ <value>http://localhost:50070/webhdfs</value>
</property>
<property>
<name>topology.service.TEMPLETON..url</name>
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-release/home/templates/sample.xml
----------------------------------------------------------------------
diff --git a/gateway-release/home/templates/sample.xml b/gateway-release/home/templates/sample.xml
index 199c23f..0d1292e 100644
--- a/gateway-release/home/templates/sample.xml
+++ b/gateway-release/home/templates/sample.xml
@@ -52,7 +52,7 @@
<service>
<role>WEBHDFS</role>
- <url>http://localhost:50070/webhdfs/v1</url>
+ <url>http://localhost:50070/webhdfs</url>
</service>
<service>
<role>TEMPLETON</role>
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-server/src/main/java/org/apache/hadoop/gateway/filter/JaasLoginFilter.java
----------------------------------------------------------------------
diff --git a/gateway-server/src/main/java/org/apache/hadoop/gateway/filter/JaasLoginFilter.java b/gateway-server/src/main/java/org/apache/hadoop/gateway/filter/JaasLoginFilter.java
index 5fb2ee8..8a4cf60 100644
--- a/gateway-server/src/main/java/org/apache/hadoop/gateway/filter/JaasLoginFilter.java
+++ b/gateway-server/src/main/java/org/apache/hadoop/gateway/filter/JaasLoginFilter.java
@@ -83,7 +83,4 @@ public class JaasLoginFilter extends AbstractGatewayFilter {
// AuthenticatedURL.Token token = new AuthenticatedURL.Token();
// Authenticator authenticator = null; // url, token
// HttpURLConnection conn = new AuthenticatedURL( authenticator ).openConnection();
-
- // http://org.apache.hadoop-secure.home:50070/webhdfs/v1/horton/readme?op=OPEN
-
}
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-server/src/main/resources/cluster-sample.xml
----------------------------------------------------------------------
diff --git a/gateway-server/src/main/resources/cluster-sample.xml b/gateway-server/src/main/resources/cluster-sample.xml
index bc279e5..09719e1 100644
--- a/gateway-server/src/main/resources/cluster-sample.xml
+++ b/gateway-server/src/main/resources/cluster-sample.xml
@@ -21,7 +21,7 @@ limitations under the License.
<!--
<service>
<role>NAMENODE</role>
- <url>http://localhost:50070/webhdfs/v1</url>
+ <url>http://localhost:50070/webhdfs</url>
</service>
-->
</topology>
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-server/src/test/java/org/apache/hadoop/gateway/topology/builder/PropertyTopologyBuilderTest.java
----------------------------------------------------------------------
diff --git a/gateway-server/src/test/java/org/apache/hadoop/gateway/topology/builder/PropertyTopologyBuilderTest.java b/gateway-server/src/test/java/org/apache/hadoop/gateway/topology/builder/PropertyTopologyBuilderTest.java
index 5d50ed2..10629fd 100644
--- a/gateway-server/src/test/java/org/apache/hadoop/gateway/topology/builder/PropertyTopologyBuilderTest.java
+++ b/gateway-server/src/test/java/org/apache/hadoop/gateway/topology/builder/PropertyTopologyBuilderTest.java
@@ -140,7 +140,7 @@ public class PropertyTopologyBuilderTest {
@Test(expected = IllegalArgumentException.class)
public void testBuildSuccessfulForServiceProperty() {
PropertyTopologyBuilder propertyTopologyBuilder = new PropertyTopologyBuilder();
- propertyTopologyBuilder.addProperty(new Property("topology.gateway.service.WEBHDFS..url", "http://host:50070/webhdfs/v1"));
+ propertyTopologyBuilder.addProperty(new Property("topology.gateway.service.WEBHDFS..url", "http://host:50070/webhdfs"));
Topology topology = propertyTopologyBuilder.build();
assertThat(topology, notNullValue());
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-server/src/test/java/org/apache/hadoop/gateway/topology/xml/TopologyRulesModuleTest.java
----------------------------------------------------------------------
diff --git a/gateway-server/src/test/java/org/apache/hadoop/gateway/topology/xml/TopologyRulesModuleTest.java b/gateway-server/src/test/java/org/apache/hadoop/gateway/topology/xml/TopologyRulesModuleTest.java
index 7b88aa9..3b9b53b 100644
--- a/gateway-server/src/test/java/org/apache/hadoop/gateway/topology/xml/TopologyRulesModuleTest.java
+++ b/gateway-server/src/test/java/org/apache/hadoop/gateway/topology/xml/TopologyRulesModuleTest.java
@@ -71,7 +71,7 @@ public class TopologyRulesModuleTest {
Service comp = topology.getServices().iterator().next();
assertThat( comp, notNullValue() );
assertThat( comp.getRole(), is( "WEBHDFS" ) );
- assertThat( comp.getUrl(), is( "http://host:80/webhdfs/v1" ) );
+ assertThat( comp.getUrl(), is( "http://host:80/webhdfs" ) );
Provider provider = topology.getProviders().iterator().next();
assertThat( provider, notNullValue() );
@@ -101,7 +101,7 @@ public class TopologyRulesModuleTest {
assertThat( namenodeService, notNullValue() );
assertThat( namenodeService.getRole(), is( "WEBHDFS" ) );
assertThat( namenodeService.getName(), nullValue() );
- assertThat( namenodeService.getUrl(), is( "http://host:50070/webhdfs/v1" ) );
+ assertThat( namenodeService.getUrl(), is( "http://host:50070/webhdfs" ) );
Service templetonService = topology.getService( "TEMPLETON", null );
assertThat( templetonService, notNullValue() );
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/file/topology-one.xml
----------------------------------------------------------------------
diff --git a/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/file/topology-one.xml b/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/file/topology-one.xml
index a231a1a..8255da1 100644
--- a/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/file/topology-one.xml
+++ b/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/file/topology-one.xml
@@ -7,6 +7,6 @@
-->
<service>
<role>WEBHDFS</role>
- <url>http://host-one:80/webhdfs/v1</url>
+ <url>http://host-one:80/webhdfs</url>
</service>
</topology>
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/file/topology-three.xml
----------------------------------------------------------------------
diff --git a/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/file/topology-three.xml b/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/file/topology-three.xml
index 488c618..c80b1a3 100644
--- a/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/file/topology-three.xml
+++ b/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/file/topology-three.xml
@@ -7,6 +7,6 @@
-->
<service>
<role>WEBHDFS</role>
- <url>http://host-three:80/webhdfs/v1</url>
+ <url>http://host-three:80/webhdfs</url>
</service>
</topology>
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/file/topology-two.xml
----------------------------------------------------------------------
diff --git a/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/file/topology-two.xml b/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/file/topology-two.xml
index 0529599..67c0149 100644
--- a/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/file/topology-two.xml
+++ b/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/file/topology-two.xml
@@ -7,6 +7,6 @@
-->
<service>
<role>WEBHDFS</role>
- <url>http://host-two:80/webhdfs/v1</url>
+ <url>http://host-two:80/webhdfs</url>
</service>
</topology>
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/xml/simple-topology-ambari-format.conf
----------------------------------------------------------------------
diff --git a/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/xml/simple-topology-ambari-format.conf b/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/xml/simple-topology-ambari-format.conf
index 51b1073..394b3c0 100644
--- a/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/xml/simple-topology-ambari-format.conf
+++ b/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/xml/simple-topology-ambari-format.conf
@@ -58,7 +58,7 @@
</property>
<property>
<name>topology.service.WEBHDFS..url</name>
- <value>http://host:50070/webhdfs/v1</value>
+ <value>http://host:50070/webhdfs</value>
</property>
<property>
<name>topology.service.TEMPLETON..url</name>
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/xml/simple-topology-knox-format.xml
----------------------------------------------------------------------
diff --git a/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/xml/simple-topology-knox-format.xml b/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/xml/simple-topology-knox-format.xml
index 8a6f0ad..a7c90a0 100644
--- a/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/xml/simple-topology-knox-format.xml
+++ b/gateway-server/src/test/resources/org/apache/hadoop/gateway/topology/xml/simple-topology-knox-format.xml
@@ -63,6 +63,6 @@
<service>
<role>WEBHDFS</role>
- <url>http://host:80/webhdfs/v1</url>
+ <url>http://host:80/webhdfs</url>
</service>
</topology>
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-service-hdfs/src/main/java/org/apache/hadoop/gateway/hdfs/WebHdfsDeploymentContributor.java
----------------------------------------------------------------------
diff --git a/gateway-service-hdfs/src/main/java/org/apache/hadoop/gateway/hdfs/WebHdfsDeploymentContributor.java b/gateway-service-hdfs/src/main/java/org/apache/hadoop/gateway/hdfs/WebHdfsDeploymentContributor.java
index ff85835..f39912d 100644
--- a/gateway-service-hdfs/src/main/java/org/apache/hadoop/gateway/hdfs/WebHdfsDeploymentContributor.java
+++ b/gateway-service-hdfs/src/main/java/org/apache/hadoop/gateway/hdfs/WebHdfsDeploymentContributor.java
@@ -21,24 +21,26 @@ import org.apache.hadoop.gateway.deploy.DeploymentContext;
import org.apache.hadoop.gateway.deploy.ServiceDeploymentContributorBase;
import org.apache.hadoop.gateway.descriptor.FilterParamDescriptor;
import org.apache.hadoop.gateway.descriptor.ResourceDescriptor;
-import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterContentDescriptor;
-import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterDescriptor;
-import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteRuleDescriptor;
import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteRulesDescriptor;
-import org.apache.hadoop.gateway.filter.rewrite.ext.UrlRewriteActionRewriteDescriptorExt;
-import org.apache.hadoop.gateway.filter.rewrite.ext.UrlRewriteMatchDescriptor;
+import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteRulesDescriptorFactory;
+import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteServletFilter;
import org.apache.hadoop.gateway.topology.Service;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
public class WebHdfsDeploymentContributor extends ServiceDeploymentContributorBase {
+ private static final String RULES_RESOURCE = WebHdfsDeploymentContributor.class.getName().replace( '.', '/' ) + "/rewrite.xml";
private static final String WEBHDFS_EXTERNAL_PATH = "/namenode/api/v1";
- private static final String DATANODE_INTERNAL_PATH = "/webhdfs/v1";
private static final String DATANODE_EXTERNAL_PATH = "/datanode/api/v1";
- private static final String CLUSTER_URL_FUNCTION = "{gateway.url}";
+// private static final String WEBHDFS_INTERNAL_PATH = "/webhdfs";
+// private static final String CLUSTER_URL_FUNCTION = "{gateway.url}";
@Override
public String getRole() {
@@ -57,55 +59,63 @@ public class WebHdfsDeploymentContributor extends ServiceDeploymentContributorBa
contributeDataNodeResource( context, service );
}
- private void contributeRewriteRules( DeploymentContext context, Service service ) throws URISyntaxException {
- UrlRewriteRulesDescriptor rules = context.getDescriptor( "rewrite" );
- UrlRewriteRuleDescriptor rule;
- UrlRewriteActionRewriteDescriptorExt rewrite;
- UrlRewriteMatchDescriptor match;
-
- rule = rules.addRule( getQualifiedName() + "/namenode/root/inbound" )
- .directions( "inbound" )
- .pattern( "*://*:*/**" + WEBHDFS_EXTERNAL_PATH + "/?{**}" );
- rewrite = rule.addStep( "rewrite" );
- //rewrite.template( service.getUrl().toExternalForm() + "/?user.name={$username}&{**}" );
- rewrite.template( service.getUrl() + "/?{**}" );
-
- rule = rules.addRule( getQualifiedName() + "/namenode/file/inbound" )
- .directions( "inbound" )
- .pattern( "*://*:*/**" + WEBHDFS_EXTERNAL_PATH + "/{path=**}?{**}" );
- rewrite = rule.addStep( "rewrite" );
- //rewrite.template( service.getUrl().toExternalForm() + "/{path=**}?user.name={$username}&{**}" );
- rewrite.template( service.getUrl() + "/{path=**}?{**}" );
-
- rule = rules.addRule( getQualifiedName() + "/datanode/inbound" )
- .directions( "inbound" )
- .pattern( "*://*:*/**" + DATANODE_EXTERNAL_PATH + "/{path=**}?**" );
- //TODO: If the input type is wrong it throws a NPE.
- rule.addStep( "decode-query" );
- match = rule.addStep( "match" );
- match.pattern( "*://*:*/**" + DATANODE_EXTERNAL_PATH + "/{path=**}?{host}&{port}&{**}" );
- rewrite = rule.addStep( "rewrite" );
- rewrite.template( "http://{host}:{port}/{path=**}?{**}" );
-
- rule = rules.addRule( getQualifiedName() + "/datanode/outbound" )
- .directions( "outbound" );
- match = rule.addStep( "match" );
- match.pattern( "*://{host}:{port}/{path=**}?{**}" );
- rewrite = rule.addStep( "rewrite" );
- rewrite.template( CLUSTER_URL_FUNCTION + DATANODE_EXTERNAL_PATH + "/{path=**}?host={$hostmap(host)}&{port}&{**}" );
- rule.addStep( "encode-query" );
-
- UrlRewriteFilterDescriptor filter = rules.addFilter( getQualifiedName() + "/outbound" );
- UrlRewriteFilterContentDescriptor content = filter.addContent( "application/x-http-headers" );
- content.addApply( "Location", getQualifiedName() + "/datanode/outbound" );
+ private void contributeRewriteRules( DeploymentContext context, Service service ) throws URISyntaxException, IOException {
+ UrlRewriteRulesDescriptor serviceRules = loadRulesFromClassPath();
+ UrlRewriteRulesDescriptor clusterRules = context.getDescriptor( "rewrite" );
+ clusterRules.addRules( serviceRules );
+
+// UrlRewriteRulesDescriptor rules = context.getDescriptor( "rewrite" );
+// UrlRewriteRuleDescriptor rule;
+// UrlRewriteActionRewriteDescriptorExt rewrite;
+// UrlRewriteMatchDescriptor match;
+//
+// rule = rules.addRule( getQualifiedName() + "/namenode/root/inbound" )
+// .directions( "inbound" )
+// .pattern( "*://*:*/**" + WEBHDFS_EXTERNAL_PATH + "/?{**}" );
+// rewrite = rule.addStep( "rewrite" );
+// //rewrite.template( service.getUrl().toExternalForm() + "/?user.name={$username}&{**}" );
+// rewrite.template( service.getUrl() + "/?{**}" );
+//
+// rule = rules.addRule( getQualifiedName() + "/namenode/file/inbound" )
+// .directions( "inbound" )
+// .pattern( "*://*:*/**" + WEBHDFS_EXTERNAL_PATH + "/{path=**}?{**}" );
+// rewrite = rule.addStep( "rewrite" );
+// //rewrite.template( service.getUrl().toExternalForm() + "/{path=**}?user.name={$username}&{**}" );
+// rewrite.template( service.getUrl() + "/{path=**}?{**}" );
+//
+// rule = rules.addRule( getQualifiedName() + "/datanode/inbound" )
+// .directions( "inbound" )
+// .pattern( "*://*:*/**" + DATANODE_EXTERNAL_PATH + "/{path=**}?**" );
+// //TODO: If the input type is wrong it throws a NPE.
+// rule.addStep( "decode-query" );
+// match = rule.addStep( "match" );
+// match.pattern( "*://*:*/**" + DATANODE_EXTERNAL_PATH + "/{path=**}?{host}&{port}&{**}" );
+// rewrite = rule.addStep( "rewrite" );
+// rewrite.template( "http://{host}:{port}/{path=**}?{**}" );
+//
+// rule = rules.addRule( getQualifiedName() + "/datanode/outbound" )
+// .directions( "outbound" );
+// match = rule.addStep( "match" );
+// match.pattern( "*://{host}:{port}/{path=**}?{**}" );
+// rewrite = rule.addStep( "rewrite" );
+// rewrite.template( CLUSTER_URL_FUNCTION + DATANODE_EXTERNAL_PATH + "/{path=**}?host={$hostmap(host)}&{port}&{**}" );
+// rule.addStep( "encode-query" );
+//
+// UrlRewriteFilterDescriptor filter = rules.addFilter( getQualifiedName() + "/outbound" );
+// UrlRewriteFilterContentDescriptor content = filter.addContent( "application/x-http-headers" );
+// content.addApply( "Location", getQualifiedName() + "/datanode/outbound" );
}
public void contributeNameNodeResource( DeploymentContext context, Service service ) throws URISyntaxException {
+ List<FilterParamDescriptor> params;
ResourceDescriptor rootResource = context.getGatewayDescriptor().addResource();
rootResource.role( service.getRole() );
rootResource.pattern( WEBHDFS_EXTERNAL_PATH + "/?**" );
addAuthenticationFilter( context, service, rootResource );
- addRewriteFilter( context, service, rootResource );
+ params = new ArrayList<FilterParamDescriptor>();
+ params.add( rootResource.createFilterParam().
+ name( UrlRewriteServletFilter.REQUEST_URL_RULE_PARAM ).value( getQualifiedName() + "/inbound/namenode/root" ) );
+ addRewriteFilter( context, service, rootResource, params );
addIdentityAssertionFilter( context, service, rootResource );
addAuthorizationFilter( context, service, rootResource );
addDispatchFilter( context, service, rootResource, "dispatch", null );
@@ -114,32 +124,43 @@ public class WebHdfsDeploymentContributor extends ServiceDeploymentContributorBa
fileResource.role( service.getRole() );
fileResource.pattern( WEBHDFS_EXTERNAL_PATH + "/**?**" );
addAuthenticationFilter( context, service, fileResource );
- addRewriteFilter( context, service, fileResource );
+ params = new ArrayList<FilterParamDescriptor>();
+ params.add( fileResource.createFilterParam().
+ name( UrlRewriteServletFilter.REQUEST_URL_RULE_PARAM ).value( getQualifiedName() + "/inbound/namenode/file" ) );
+ params.add( fileResource.createFilterParam().
+ name( UrlRewriteServletFilter.RESPONSE_HEADERS_FILTER_PARAM ).value( getQualifiedName() + "/outbound/namenode/headers" ) );
+ addRewriteFilter( context, service, fileResource, params );
addIdentityAssertionFilter( context, service, fileResource );
addAuthorizationFilter( context, service, fileResource );
addDispatchFilter( context, service, fileResource, "dispatch", null );
}
public void contributeDataNodeResource( DeploymentContext context, Service service ) throws URISyntaxException {
+ List<FilterParamDescriptor> params;
ResourceDescriptor fileResource = context.getGatewayDescriptor().addResource();
fileResource.role( service.getRole() );
fileResource.pattern( DATANODE_EXTERNAL_PATH + "/**?**" );
addAuthenticationFilter( context, service, fileResource );
addIdentityAssertionFilter( context, service, fileResource );
addAuthorizationFilter( context, service, fileResource );
- addRewriteFilter( context, service, fileResource );
+ params = new ArrayList<FilterParamDescriptor>();
+ params.add( fileResource.createFilterParam().
+ name( UrlRewriteServletFilter.REQUEST_URL_RULE_PARAM ).value( getQualifiedName() + "/inbound/datanode" ) );
+ addRewriteFilter( context, service, fileResource, params );
addDispatchFilter( context, service, fileResource, "dispatch", null );
}
- private void addRewriteFilter(
- DeploymentContext context, Service service, ResourceDescriptor resource ) throws URISyntaxException {
- List<FilterParamDescriptor> params = new ArrayList<FilterParamDescriptor>();
- params.add( resource.createFilterParam().name( "response.headers" ).value( getQualifiedName() + "/outbound" ) );
- context.contributeFilter( service, resource, "rewrite", null, params );
+ String getQualifiedName() {
+ return getRole() + "/" + getName();
}
- private String getQualifiedName() {
- return getRole() + "/" + getName();
+ UrlRewriteRulesDescriptor loadRulesFromClassPath() throws IOException {
+ InputStream stream = this.getClass().getClassLoader().getResourceAsStream( RULES_RESOURCE );
+ Reader reader = new InputStreamReader( stream );
+ UrlRewriteRulesDescriptor rules = UrlRewriteRulesDescriptorFactory.load( "xml", reader );
+ reader.close();
+ stream.close();
+ return rules;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-service-hdfs/src/main/resources/org/apache/hadoop/gateway/hdfs/WebHdfsDeploymentContributor/rewrite.xml
----------------------------------------------------------------------
diff --git a/gateway-service-hdfs/src/main/resources/org/apache/hadoop/gateway/hdfs/WebHdfsDeploymentContributor/rewrite.xml b/gateway-service-hdfs/src/main/resources/org/apache/hadoop/gateway/hdfs/WebHdfsDeploymentContributor/rewrite.xml
new file mode 100644
index 0000000..db6069b
--- /dev/null
+++ b/gateway-service-hdfs/src/main/resources/org/apache/hadoop/gateway/hdfs/WebHdfsDeploymentContributor/rewrite.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<rules>
+
+ <rule dir="OUT" name="WEBHDFS/webhdfs/outbound" pattern="hdfs://*:*/{path=**}?{**}">
+ <rewrite template="{gateway.url}/namenode/api/v1/{path=**}?{**}"/>
+ </rule>
+
+ <rule dir="OUT" name="WEBHDFS/webhdfs/outbound" pattern="webhdfs://*:*/{path=**}?{**}">
+ <rewrite template="{gateway.url}/namenode/api/v1/{path=**}?{**}"/>
+ </rule>
+
+ <rule dir="OUT" name="WEBHDFS/webhdfs/outbound/namenode/headers/location">
+ <match pattern="{scheme}://{host}:{port}/{path=**}?{**}"/>
+ <rewrite template="{gateway.url}/datanode/api/v1/{path=**}?{scheme}?host={$hostmap(host)}?{port}?{**}"/>
+ <encrypt-query/>
+ </rule>
+
+ <rule dir="IN" name="WEBHDFS/webhdfs/inbound/hdfs" pattern="hdfs:/{path=**}?{**}">
+ <rewrite template="{$serviceUrl[NAMENODE]}/{path=**}?{**}"/>
+ </rule>
+
+ <rule dir="IN" name="WEBHDFS/webhdfs/inbound/webhdfs" pattern="webhdfs:/{path=**}?{**}">
+ <rewrite template="{$serviceUrl[WEBHDFS]}/{path=**}?{**}"/>
+ </rule>
+
+ <rule dir="IN" name="WEBHDFS/webhdfs/inbound/namenode/root" pattern="*://*:*/**/namenode/api/{version}/?{**}">
+ <rewrite template="{$serviceUrl[WEBHDFS]}/{version}/?{**}"/>
+ </rule>
+
+ <rule dir="IN" name="WEBHDFS/webhdfs/inbound/namenode/file" pattern="*://*:*/**/namenode/api/{version}/{path=**}?{**}">
+ <rewrite template="{$serviceUrl[WEBHDFS]}/{version}/{path=**}?{**}"/>
+ </rule>
+
+ <rule dir="IN" name="WEBHDFS/webhdfs/inbound/datanode">
+ <decrypt-query/>
+ <match pattern="*://*:*/**/datanode/api/*/{path=**}?{scheme}?{host}?{port}?{**}"/>
+ <rewrite template="{scheme}://{host}:{port}/{path=**}?{**}"/>
+ </rule>
+
+ <filter name="WEBHDFS/webhdfs/outbound/namenode/headers">
+ <content type="application/x-http-headers">
+ <apply path="Location" rule="WEBHDFS/webhdfs/outbound/namenode/headers/location"/>
+ </content>
+ </filter>
+
+</rules>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-service-oozie/src/main/java/org/apache/hadoop/gateway/oozie/OozieDeploymentContributor.java
----------------------------------------------------------------------
diff --git a/gateway-service-oozie/src/main/java/org/apache/hadoop/gateway/oozie/OozieDeploymentContributor.java b/gateway-service-oozie/src/main/java/org/apache/hadoop/gateway/oozie/OozieDeploymentContributor.java
index 3f5f212..6933ba3 100644
--- a/gateway-service-oozie/src/main/java/org/apache/hadoop/gateway/oozie/OozieDeploymentContributor.java
+++ b/gateway-service-oozie/src/main/java/org/apache/hadoop/gateway/oozie/OozieDeploymentContributor.java
@@ -35,8 +35,8 @@ import java.util.List;
public class OozieDeploymentContributor extends ServiceDeploymentContributorBase {
- private static final String EXTERNAL_PATH = "/oozie/api";
private static final String RULES_RESOURCE = OozieDeploymentContributor.class.getName().replace( '.', '/' ) + "/rewrite.xml";
+ private static final String EXTERNAL_PATH = "/oozie/api";
@Override
public String getRole() {
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-spi/src/main/java/org/apache/hadoop/gateway/deploy/ServiceDeploymentContributorBase.java
----------------------------------------------------------------------
diff --git a/gateway-spi/src/main/java/org/apache/hadoop/gateway/deploy/ServiceDeploymentContributorBase.java b/gateway-spi/src/main/java/org/apache/hadoop/gateway/deploy/ServiceDeploymentContributorBase.java
index 4edfde8..95d72e2 100644
--- a/gateway-spi/src/main/java/org/apache/hadoop/gateway/deploy/ServiceDeploymentContributorBase.java
+++ b/gateway-spi/src/main/java/org/apache/hadoop/gateway/deploy/ServiceDeploymentContributorBase.java
@@ -17,12 +17,15 @@
*/
package org.apache.hadoop.gateway.deploy;
-import java.util.Collection;
-
+import org.apache.hadoop.gateway.descriptor.FilterParamDescriptor;
import org.apache.hadoop.gateway.descriptor.ResourceDescriptor;
import org.apache.hadoop.gateway.topology.Provider;
import org.apache.hadoop.gateway.topology.Service;
+import java.net.URISyntaxException;
+import java.util.Collection;
+import java.util.List;
+
public abstract class ServiceDeploymentContributorBase extends DeploymentContributorBase implements ServiceDeploymentContributor {
public void initializeContribution( DeploymentContext context ) {
@@ -69,7 +72,16 @@ public abstract class ServiceDeploymentContributorBase extends DeploymentContrib
}
}
+ protected void addRewriteFilter(
+ DeploymentContext context,
+ Service service,
+ ResourceDescriptor resource,
+ List<FilterParamDescriptor> params ) throws URISyntaxException {
+ context.contributeFilter( service, resource, "rewrite", null, params );
+ }
+
protected void addDispatchFilter(DeploymentContext context, Service service, ResourceDescriptor resource, String role, String name ) {
context.contributeFilter( service, resource, role, name, null );
- }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-test/src/test/java/org/apache/hadoop/gateway/GatewayBasicFuncTest.java
----------------------------------------------------------------------
diff --git a/gateway-test/src/test/java/org/apache/hadoop/gateway/GatewayBasicFuncTest.java b/gateway-test/src/test/java/org/apache/hadoop/gateway/GatewayBasicFuncTest.java
index 941a1ff..c1f18ef 100644
--- a/gateway-test/src/test/java/org/apache/hadoop/gateway/GatewayBasicFuncTest.java
+++ b/gateway-test/src/test/java/org/apache/hadoop/gateway/GatewayBasicFuncTest.java
@@ -117,9 +117,9 @@ public class GatewayBasicFuncTest {
config.setGatewayPath( "gateway" );
driver.setResourceBase( GatewayBasicFuncTest.class );
driver.setupLdap( findFreePort() );
- driver.setupService( "WEBHDFS", "http://" + TEST_HOST + ":50070/webhdfs/v1", "/cluster/namenode/api/v1", USE_MOCK_SERVICES );
+ driver.setupService( "WEBHDFS", "http://" + TEST_HOST + ":50070/webhdfs", "/cluster/namenode/api", USE_MOCK_SERVICES );
driver.setupService( "NAMENODE", "hdfs://" + TEST_HOST + ":8020", null, USE_MOCK_SERVICES );
- driver.setupService( "DATANODE", "http://" + TEST_HOST + ":50075/webhdfs/v1", "/cluster/datanode/api/v1", USE_MOCK_SERVICES );
+ driver.setupService( "DATANODE", "http://" + TEST_HOST + ":50075/webhdfs", "/cluster/datanode/api", USE_MOCK_SERVICES );
driver.setupService( "JOBTRACKER", "thrift://" + TEST_HOST + ":8021", null, USE_MOCK_SERVICES );
driver.setupService( "TEMPLETON", "http://" + TEST_HOST + ":50111/templeton/v1", "/cluster/templeton/api/v1", USE_MOCK_SERVICES );
driver.setupService( "OOZIE", "http://" + TEST_HOST + ":11000/oozie", "/cluster/oozie/api", USE_MOCK_SERVICES );
@@ -229,7 +229,7 @@ public class GatewayBasicFuncTest {
driver.getMock( "WEBHDFS" )
.expect()
.method( "PUT" )
- .pathInfo( root + "/dir" )
+ .pathInfo( "/v1" + root + "/dir" )
.queryParam( "op", "MKDIRS" )
.queryParam( "user.name", username )
.respond()
@@ -245,7 +245,7 @@ public class GatewayBasicFuncTest {
.statusCode( HttpStatus.SC_OK )
.contentType( "application/json" )
.content( "boolean", is( true ) )
- .when().put( driver.getUrl( "WEBHDFS" ) + root + "/dir" );
+ .when().put( driver.getUrl( "WEBHDFS" ) + "/v1" + root + "/dir" );
driver.assertComplete();
}
@@ -259,12 +259,12 @@ public class GatewayBasicFuncTest {
driver.getMock( "WEBHDFS" )
.expect()
.method( "PUT" )
- .pathInfo( root + "/dir/file" )
+ .pathInfo( "/v1" + root + "/dir/file" )
.queryParam( "op", "CREATE" )
.queryParam( "user.name", username )
.respond()
.status( HttpStatus.SC_TEMPORARY_REDIRECT )
- .header( "Location", driver.getRealUrl( "DATANODE" ) + root + "/dir/file?op=CREATE&user.name=hdfs" );
+ .header( "Location", driver.getRealUrl( "DATANODE" ) + "/v1" + root + "/dir/file?op=CREATE&user.name=hdfs" );
Response response = given()
//.log().all()
.auth().preemptive().basic( username, password )
@@ -272,7 +272,7 @@ public class GatewayBasicFuncTest {
.expect()
//.log().ifError()
.statusCode( HttpStatus.SC_TEMPORARY_REDIRECT )
- .when().put( driver.getUrl("WEBHDFS") + root + "/dir/file" );
+ .when().put( driver.getUrl("WEBHDFS") + "/v1" + root + "/dir/file" );
String location = response.getHeader( "Location" );
//System.out.println( location );
log.debug( "Redirect location: " + response.getHeader( "Location" ) );
@@ -297,7 +297,7 @@ public class GatewayBasicFuncTest {
driver.getMock( "WEBHDFS" )
.expect()
.method( "DELETE" )
- .pathInfo( root )
+ .pathInfo( "/v1" + root )
.queryParam( "op", "DELETE" )
.queryParam( "user.name", username )
.queryParam( "recursive", "true" )
@@ -310,7 +310,7 @@ public class GatewayBasicFuncTest {
.expect()
//.log().all();
.statusCode( HttpStatus.SC_OK )
- .when().delete( driver.getUrl( "WEBHDFS" ) + root + ( driver.isUseGateway() ? "" : "?user.name=" + username ) );
+ .when().delete( driver.getUrl( "WEBHDFS" ) + "/v1" + root + ( driver.isUseGateway() ? "" : "?user.name=" + username ) );
driver.assertComplete();
/* Create a directory.
@@ -326,7 +326,7 @@ public class GatewayBasicFuncTest {
driver.getMock( "WEBHDFS" )
.expect()
.method( "PUT" )
- .pathInfo( root + "/dir" )
+ .pathInfo( "/v1" + root + "/dir" )
.queryParam( "op", "MKDIRS" )
.queryParam( "user.name", username )
.respond()
@@ -342,13 +342,13 @@ public class GatewayBasicFuncTest {
.statusCode( HttpStatus.SC_OK )
.contentType( "application/json" )
.content( "boolean", is( true ) )
- .when().put( driver.getUrl( "WEBHDFS" ) + root + "/dir" );
+ .when().put( driver.getUrl( "WEBHDFS" ) + "/v1" + root + "/dir" );
driver.assertComplete();
driver.getMock( "WEBHDFS" )
.expect()
.method( "GET" )
- .pathInfo( root )
+ .pathInfo( "/v1" + root )
.queryParam( "op", "LISTSTATUS" )
.queryParam( "user.name", username )
.respond()
@@ -363,7 +363,7 @@ public class GatewayBasicFuncTest {
//.log().ifError()
.statusCode( HttpStatus.SC_OK )
.content( "FileStatuses.FileStatus[0].pathSuffix", is( "dir" ) )
- .when().get( driver.getUrl( "WEBHDFS" ) + root );
+ .when().get( driver.getUrl( "WEBHDFS" ) + "/v1" + root );
driver.assertComplete();
//NEGATIVE: Test a bad password.
@@ -371,10 +371,10 @@ public class GatewayBasicFuncTest {
//.log().all()
.auth().preemptive().basic( username, "invalid-password" )
.queryParam( "op", "LISTSTATUS" )
- .expect()
+ .expect()
//.log().ifError()
.statusCode( HttpStatus.SC_UNAUTHORIZED )
- .when().get( driver.getUrl( "WEBHDFS" ) + root );
+ .when().get( driver.getUrl( "WEBHDFS" ) + "/v1" + root );
driver.assertComplete();
//NEGATIVE: Test a bad user.
@@ -382,10 +382,10 @@ public class GatewayBasicFuncTest {
//.log().all()
.auth().preemptive().basic( "hdfs-user", "hdfs-password" )
.queryParam( "op", "LISTSTATUS" )
- .expect()
+ .expect()
//.log().ifError()
.statusCode( HttpStatus.SC_UNAUTHORIZED )
- .when().get( driver.getUrl( "WEBHDFS" ) + root );
+ .when().get( driver.getUrl( "WEBHDFS" ) + "/v1" + root );
driver.assertComplete();
//NEGATIVE: Test a valid but unauthorized user.
@@ -393,10 +393,10 @@ public class GatewayBasicFuncTest {
//.log().all()
.auth().preemptive().basic( "mapred-user", "mapred-password" )
.queryParam( "op", "LISTSTATUS" )
- .expect()
+ .expect()
//.log().ifError()
.statusCode( HttpStatus.SC_UNAUTHORIZED )
- .when().get( driver.getUrl( "WEBHDFS" ) + root );
+ .when().get( driver.getUrl( "WEBHDFS" ) + "/v1" + root );
/* Add a file.
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=CREATE
@@ -419,16 +419,16 @@ public class GatewayBasicFuncTest {
driver.getMock( "WEBHDFS" )
.expect()
.method( "PUT" )
- .pathInfo( root + "/dir/file" )
+ .pathInfo( "/v1" + root + "/dir/file" )
.queryParam( "op", "CREATE" )
.queryParam( "user.name", username )
.respond()
.status( HttpStatus.SC_TEMPORARY_REDIRECT )
- .header( "Location", driver.getRealUrl( "DATANODE" ) + root + "/dir/file?op=CREATE&user.name=hdfs" );
+ .header( "Location", driver.getRealUrl( "DATANODE" ) + "/v1" + root + "/dir/file?op=CREATE&user.name=hdfs" );
driver.getMock( "DATANODE" )
.expect()
.method( "PUT" )
- .pathInfo( root + "/dir/file" )
+ .pathInfo( "/v1" + root + "/dir/file" )
.queryParam( "op", "CREATE" )
.queryParam( "user.name", username )
.contentType( "text/plain" )
@@ -436,7 +436,7 @@ public class GatewayBasicFuncTest {
//.content( driver.gerResourceBytes( "hadoop-examples.jar" ) )
.respond()
.status( HttpStatus.SC_CREATED )
- .header( "Location", "webhdfs://" + driver.getRealAddr( "DATANODE" ) + root + "/dir/file" );
+ .header( "Location", "webhdfs://" + driver.getRealAddr( "DATANODE" ) + "/v1" + root + "/dir/file" );
Response response = given()
//.log().all()
.auth().preemptive().basic( username, password )
@@ -444,7 +444,7 @@ public class GatewayBasicFuncTest {
.expect()
//.log().ifError()
.statusCode( HttpStatus.SC_TEMPORARY_REDIRECT )
- .when().put( driver.getUrl("WEBHDFS") + root + "/dir/file" );
+ .when().put( driver.getUrl("WEBHDFS") + "/v1" + root + "/dir/file" );
String location = response.getHeader( "Location" );
log.debug( "Redirect location: " + response.getHeader( "Location" ) );
if( driver.isUseGateway() ) {
@@ -489,16 +489,16 @@ public class GatewayBasicFuncTest {
driver.getMock( "WEBHDFS" )
.expect()
.method( "GET" )
- .pathInfo( root + "/dir/file" )
+ .pathInfo( "/v1" + root + "/dir/file" )
.queryParam( "op", "OPEN" )
.queryParam( "user.name", username )
.respond()
.status( HttpStatus.SC_TEMPORARY_REDIRECT )
- .header( "Location", driver.getRealUrl( "DATANODE" ) + root + "/dir/file?op=OPEN&user.name=hdfs" );
+ .header( "Location", driver.getRealUrl( "DATANODE" ) + "/v1" + root + "/dir/file?op=OPEN&user.name=hdfs" );
driver.getMock( "DATANODE" )
.expect()
.method( "GET" )
- .pathInfo( root + "/dir/file" )
+ .pathInfo( "/v1" + root + "/dir/file" )
.queryParam( "op", "OPEN" )
.queryParam( "user.name", username )
.respond()
@@ -513,7 +513,7 @@ public class GatewayBasicFuncTest {
//.log().ifError()
.statusCode( HttpStatus.SC_OK )
.content( is( "TEST" ) )
- .when().get( driver.getUrl("WEBHDFS") + root + "/dir/file" );
+ .when().get( driver.getUrl("WEBHDFS") + "/v1" + root + "/dir/file" );
driver.assertComplete();
/* Delete the directory.
@@ -531,7 +531,7 @@ public class GatewayBasicFuncTest {
driver.getMock( "WEBHDFS" )
.expect()
.method( "DELETE" )
- .pathInfo( root )
+ .pathInfo( "/v1" + root )
.queryParam( "op", "DELETE" )
.queryParam( "user.name", username )
.queryParam( "recursive", "true" )
@@ -544,7 +544,7 @@ public class GatewayBasicFuncTest {
.expect()
//.log().ifError()
.statusCode( HttpStatus.SC_OK )
- .when().delete( driver.getUrl( "WEBHDFS" ) + root );
+ .when().delete( driver.getUrl( "WEBHDFS" ) + "/v1" + root );
driver.assertComplete();
}
@@ -638,7 +638,7 @@ public class GatewayBasicFuncTest {
.expect()
//.log().all()
.statusCode( HttpStatus.SC_UNAUTHORIZED )
- .when().get( driver.getUrl("WEBHDFS") + root + "/dirA700/fileA700" );
+ .when().get( driver.getUrl("WEBHDFS") + "/v1" + root + "/dirA700/fileA700" );
}
driver.assertComplete();
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-test/src/test/java/org/apache/hadoop/gateway/GatewayFuncTestDriver.java
----------------------------------------------------------------------
diff --git a/gateway-test/src/test/java/org/apache/hadoop/gateway/GatewayFuncTestDriver.java b/gateway-test/src/test/java/org/apache/hadoop/gateway/GatewayFuncTestDriver.java
index cc3d792..eafaf60 100644
--- a/gateway-test/src/test/java/org/apache/hadoop/gateway/GatewayFuncTestDriver.java
+++ b/gateway-test/src/test/java/org/apache/hadoop/gateway/GatewayFuncTestDriver.java
@@ -280,7 +280,7 @@ public class GatewayFuncTestDriver {
getMock( "WEBHDFS" )
.expect()
.method( "PUT" )
- .pathInfo( file )
+ .pathInfo( "/v1" + file )
.queryParam( "user.name", user )
.queryParam( "op", "CREATE" )
.respond()
@@ -290,7 +290,7 @@ public class GatewayFuncTestDriver {
getMock( "WEBHDFS" )
.expect()
.method( "PUT" )
- .pathInfo( file )
+ .pathInfo( "/v1" + file )
.queryParam( "user.name", user )
.queryParam( "op", "CREATE" )
.respond()
@@ -305,7 +305,7 @@ public class GatewayFuncTestDriver {
.expect()
//.log().all()
.statusCode( status )
- .when().put( getUrl( "WEBHDFS" ) + file + ( isUseGateway() ? "" : "?user.name=" + user ) );
+ .when().put( getUrl( "WEBHDFS" ) + "/v1" + file + ( isUseGateway() ? "" : "?user.name=" + user ) );
String location = response.getHeader( "Location" );
log.trace( "Redirect location: " + response.getHeader( "Location" ) );
return location;
@@ -323,7 +323,7 @@ public class GatewayFuncTestDriver {
.content( getResourceBytes( resource ) )
.respond()
.status( status )
- .header( "Location", "webhdfs://" + getRealAddr( "DATANODE" ) + path );
+ .header( "Location", "webhdfs://" + getRealAddr( "DATANODE" ) + "/v1" + path );
} else {
getMock( "DATANODE" )
.expect()
@@ -369,7 +369,7 @@ public class GatewayFuncTestDriver {
getMock( "WEBHDFS" )
.expect()
.method( "GET" )
- .pathInfo( file )
+ .pathInfo( "/v1" + file )
.queryParam( "user.name", user )
.queryParam( "op", "OPEN" )
.respond()
@@ -403,7 +403,7 @@ public class GatewayFuncTestDriver {
.expect()
//.log().all()
.statusCode( status )
- .when().get( getUrl("WEBHDFS") + file + ( isUseGateway() ? "" : "?user.name=" + user ) );
+ .when().get( getUrl("WEBHDFS") + "/v1" + file + ( isUseGateway() ? "" : "?user.name=" + user ) );
if( response.getStatusCode() == HttpStatus.SC_OK ) {
String actualContent = response.asString();
String expectedContent = getResourceString( resource, Charset.forName("UTF-8") );
@@ -416,7 +416,7 @@ public class GatewayFuncTestDriver {
getMock( "WEBHDFS" )
.expect()
.method( "PUT" )
- .pathInfo( file )
+ .pathInfo( "/v1" + file )
.queryParam( "op", "SETOWNER" )
.queryParam( "user.name", user )
.queryParam( "owner", owner )
@@ -432,7 +432,7 @@ public class GatewayFuncTestDriver {
.expect()
//.log().all()
.statusCode( status )
- .when().put( getUrl("WEBHDFS") + file + ( isUseGateway() ? "" : "?user.name=" + user ) );
+ .when().put( getUrl("WEBHDFS") + "/v1" + file + ( isUseGateway() ? "" : "?user.name=" + user ) );
assertComplete();
}
@@ -440,7 +440,7 @@ public class GatewayFuncTestDriver {
getMock( "WEBHDFS" )
.expect()
.method( "PUT" )
- .pathInfo( file )
+ .pathInfo( "/v1" + file )
.queryParam( "op", "SETPERMISSION" )
.queryParam( "user.name", user )
.queryParam( "permission", permsOctal )
@@ -454,7 +454,7 @@ public class GatewayFuncTestDriver {
.expect()
//.log().all()
.statusCode( status )
- .when().put( getUrl("WEBHDFS") + file + ( isUseGateway() ? "" : "?user.name=" + user ) );
+ .when().put( getUrl("WEBHDFS") + "/v1" + file + ( isUseGateway() ? "" : "?user.name=" + user ) );
assertComplete();
}
@@ -473,7 +473,7 @@ public class GatewayFuncTestDriver {
getMock( "WEBHDFS" )
.expect()
.method( "PUT" )
- .pathInfo( file )
+ .pathInfo( "/v1" + file )
.queryParam( "op", "CREATE" )
.queryParam( "user.name", user )
.queryParam( "overwrite", "true" )
@@ -484,7 +484,7 @@ public class GatewayFuncTestDriver {
getMock( "WEBHDFS" )
.expect()
.method( "PUT" )
- .pathInfo( file )
+ .pathInfo( "v1" + file )
.queryParam( "user.name", user )
.queryParam( "op", "CREATE" )
.respond()
@@ -499,7 +499,7 @@ public class GatewayFuncTestDriver {
.expect()
//.log().all()
.statusCode( status )
- .when().put( getUrl("WEBHDFS") + file + ( isUseGateway() ? "" : "?user.name=" + user ) );
+ .when().put( getUrl("WEBHDFS") + "/v1" + file + ( isUseGateway() ? "" : "?user.name=" + user ) );
String location = response.getHeader( "Location" );
log.trace( "Redirect location: " + response.getHeader( "Location" ) );
return location;
@@ -517,7 +517,7 @@ public class GatewayFuncTestDriver {
.content( getResourceBytes( resource ) )
.respond()
.status( status )
- .header( "Location", "webhdfs://" + getRealAddr( "DATANODE" ) + path );
+ .header( "Location", "webhdfs://" + getRealAddr( "DATANODE" ) + "/v1" + path );
} else {
getMock( "DATANODE" )
.expect()
@@ -547,7 +547,7 @@ public class GatewayFuncTestDriver {
getMock( "WEBHDFS" )
.expect()
.method( "DELETE" )
- .pathInfo( file )
+ .pathInfo( "/v1" + file )
.queryParam( "user.name", user )
.queryParam( "op", "DELETE" )
.queryParam( "recursive", recursive )
@@ -561,7 +561,7 @@ public class GatewayFuncTestDriver {
//.log().all()
.statusCode( isIn( ArrayUtils.toObject( status ) ) )
.when()
- .delete( getUrl( "WEBHDFS" ) + file + ( isUseGateway() ? "" : "?user.name=" + user ) );
+ .delete( getUrl( "WEBHDFS" ) + "/v1" + file + ( isUseGateway() ? "" : "?user.name=" + user ) );
assertComplete();
}
@@ -569,7 +569,7 @@ public class GatewayFuncTestDriver {
getMock( "WEBHDFS" )
.expect()
.method( "PUT" )
- .pathInfo( dir )
+ .pathInfo( "/v1" + dir )
.queryParam( "op", "MKDIRS" )
.queryParam( "user.name", user )
.queryParam( "permission", permsOctal )
@@ -588,7 +588,7 @@ public class GatewayFuncTestDriver {
.contentType( "application/json" )
.content( "boolean", equalTo( true ) )
.when()
- .put( getUrl("WEBHDFS") + dir + ( isUseGateway() ? "" : "?user.name=" + user ) );
+ .put( getUrl("WEBHDFS") + "/v1" + dir + ( isUseGateway() ? "" : "?user.name=" + user ) );
String location = response.getHeader( "Location" );
return location;
}
@@ -611,7 +611,7 @@ public class GatewayFuncTestDriver {
.statusCode( status )
.content( equalTo( "TODO" ) )
.when()
- .get( getUrl( "WEBHDFS" ) + dir );
+ .get( getUrl( "WEBHDFS" ) + "/v1" + dir );
}
public String submitJava( String user, String password, String jar, String main, String input, String output, int status ) {
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/gateway-test/src/test/java/org/apache/hadoop/gateway/deploy/DeploymentFactoryFuncTest.java
----------------------------------------------------------------------
diff --git a/gateway-test/src/test/java/org/apache/hadoop/gateway/deploy/DeploymentFactoryFuncTest.java b/gateway-test/src/test/java/org/apache/hadoop/gateway/deploy/DeploymentFactoryFuncTest.java
index c50090b..fb58d0d 100644
--- a/gateway-test/src/test/java/org/apache/hadoop/gateway/deploy/DeploymentFactoryFuncTest.java
+++ b/gateway-test/src/test/java/org/apache/hadoop/gateway/deploy/DeploymentFactoryFuncTest.java
@@ -49,7 +49,7 @@ public class DeploymentFactoryFuncTest {
topology.setName( "test-cluster" );
Service service = new Service();
service.setRole( "WEBHDFS" );
- service.setUrl( "http://localhost:50070/webhdfs/v1" );
+ service.setUrl( "http://localhost:50070/webhdfs" );
topology.addService( service );
Provider provider = new Provider();
provider.setRole( "authentication" );
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/hsso-release/home/deployments/sample.xml
----------------------------------------------------------------------
diff --git a/hsso-release/home/deployments/sample.xml b/hsso-release/home/deployments/sample.xml
index fff18f6..6b86296 100644
--- a/hsso-release/home/deployments/sample.xml
+++ b/hsso-release/home/deployments/sample.xml
@@ -32,7 +32,7 @@
<service>
<role>WEBHDFS</role>
- <url>http://localhost:50070/webhdfs/v1</url>
+ <url>http://localhost:50070/webhdfs</url>
</service>
<service>
<role>TEMPLETON</role>
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/hsso-release/home/templates/topology.xml
----------------------------------------------------------------------
diff --git a/hsso-release/home/templates/topology.xml b/hsso-release/home/templates/topology.xml
index 7e431af..d10a43b 100644
--- a/hsso-release/home/templates/topology.xml
+++ b/hsso-release/home/templates/topology.xml
@@ -52,7 +52,7 @@
<service>
<role>WEBHDFS</role>
- <url>http://localhost:50070/webhdfs/v1</url>
+ <url>http://localhost:50070/webhdfs</url>
</service>
<service>
<role>TEMPLETON</role>
http://git-wip-us.apache.org/repos/asf/incubator-knox/blob/5467a33d/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 5a2e985..607eadf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -187,6 +187,11 @@
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ <version>2.6</version>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>