http://git-wip-us.apache.org/repos/asf/hadoop/blob/e307edcb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java index d3ad53e..7364445 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java @@ -82,6 +82,7 @@ public class WebApps { public Class<? extends HttpServlet> clazz; public String name; public String spec; + public Map<String, String> params; } final String name; @@ -147,7 +148,19 @@ public class WebApps { servlets.add(struct); return this; } - + + public Builder<T> withServlet(String name, String pathSpec, + Class<? extends HttpServlet> servlet, + Map<String, String> params) { + ServletStruct struct = new ServletStruct(); + struct.clazz = servlet; + struct.name = name; + struct.spec = pathSpec; + struct.params = params; + servlets.add(struct); + return this; + } + public Builder<T> with(Configuration conf) { this.conf = conf; return this; @@ -243,6 +256,11 @@ public class WebApps { pathList.add("/" + wsName + "/*"); } } + for (ServletStruct s : servlets) { + if (!pathList.contains(s.spec)) { + pathList.add(s.spec); + } + } if (conf == null) { conf = new Configuration(); } @@ -315,7 +333,12 @@ public class WebApps { HttpServer2 server = builder.build(); for(ServletStruct struct: servlets) { - server.addServlet(struct.name, struct.spec, struct.clazz); + if (struct.params != null) { + server.addInternalServlet(struct.name, struct.spec, + struct.clazz, struct.params); + } else { + server.addServlet(struct.name, struct.spec, struct.clazz); + } } for(Map.Entry<String, Object> entry : attributes.entrySet()) { server.setAttribute(entry.getKey(), entry.getValue()); @@ -394,22 +417,16 @@ public class WebApps { } public WebApp start(WebApp webapp) { - return start(webapp, null, null); + return start(webapp, null); } - public WebApp start(WebApp webapp, WebAppContext ui2Context, - Map<String, String> services) { + public WebApp start(WebApp webapp, WebAppContext ui2Context) { WebApp webApp = build(webapp); HttpServer2 httpServer = webApp.httpServer(); if (ui2Context != null) { addFiltersForNewContext(ui2Context); httpServer.addHandlerAtFront(ui2Context); } - if (services!=null) { - String packageName = services.get("PackageName"); - String pathSpec = services.get("PathSpec"); - httpServer.addJerseyResourcePackage(packageName, pathSpec); - } try { httpServer.start(); LOG.info("Web app " + name + " started at "
http://git-wip-us.apache.org/repos/asf/hadoop/blob/e307edcb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/api/RegistryConstants.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/api/RegistryConstants.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/api/RegistryConstants.java index 0006dfd..cfa2d65 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/api/RegistryConstants.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/api/RegistryConstants.java @@ -221,6 +221,7 @@ public interface RegistryConstants { * No authentication; client is anonymous. */ String REGISTRY_CLIENT_AUTH_ANONYMOUS = ""; + String REGISTRY_CLIENT_AUTH_SIMPLE = "simple"; /** * Registry client authentication ID. http://git-wip-us.apache.org/repos/asf/hadoop/blob/e307edcb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/impl/zk/RegistrySecurity.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/impl/zk/RegistrySecurity.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/impl/zk/RegistrySecurity.java index ff6e8aa..521d8a9 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/impl/zk/RegistrySecurity.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/impl/zk/RegistrySecurity.java @@ -99,7 +99,7 @@ public class RegistrySecurity extends AbstractService { * Access policy options */ private enum AccessPolicy { - anon, sasl, digest + anon, sasl, digest, simple } /** @@ -214,6 +214,9 @@ public class RegistrySecurity extends AbstractService { case REGISTRY_CLIENT_AUTH_ANONYMOUS: access = AccessPolicy.anon; break; + case REGISTRY_CLIENT_AUTH_SIMPLE: + access = AccessPolicy.simple; + break; default: throw new ServiceStateException(E_UNKNOWN_AUTHENTICATION_MECHANISM + "\"" + auth + "\""); @@ -302,6 +305,7 @@ public class RegistrySecurity extends AbstractService { break; case anon: + case simple: // nothing is needed; account is read only. if (LOG.isDebugEnabled()) { LOG.debug("Auth is anonymous"); @@ -758,6 +762,9 @@ public class RegistrySecurity extends AbstractService { LOG.info( "Enabling ZK sasl client: jaasClientEntry = " + jaasClientEntry + ", principal = " + principal + ", keytab = " + keytab); + default: + clearZKSaslClientProperties(); + break; } } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/e307edcb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java index 8641842..7bbf4aa 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java @@ -19,6 +19,8 @@ package org.apache.hadoop.yarn.server.resourcemanager; import com.google.common.annotations.VisibleForTesting; +import com.sun.jersey.spi.container.servlet.ServletContainer; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.curator.framework.AuthInfo; @@ -1049,11 +1051,23 @@ public class ResourceManager extends CompositeService implements Recoverable { RMWebAppUtil.setupSecurityAndFilters(conf, getClientRMService().rmDTSecretManager); + Map<String, String> params = new HashMap<String, String>(); + if (getConfig().getBoolean(YarnConfiguration.YARN_API_SERVICES_ENABLE, + false)) { + String apiPackages = "org.apache.hadoop.yarn.service.webapp;" + + "org.apache.hadoop.yarn.webapp"; + params.put("com.sun.jersey.config.property.resourceConfigClass", + "com.sun.jersey.api.core.PackagesResourceConfig"); + params.put("com.sun.jersey.config.property.packages", apiPackages); + } + Builder<ApplicationMasterService> builder = WebApps .$for("cluster", ApplicationMasterService.class, masterService, "ws") .with(conf) + .withServlet("API-Service", "/app/*", + ServletContainer.class, params) .withHttpSpnegoPrincipalKey( YarnConfiguration.RM_WEBAPP_SPNEGO_USER_NAME_KEY) .withHttpSpnegoKeytabKey( @@ -1109,15 +1123,7 @@ public class ResourceManager extends CompositeService implements Recoverable { } } - if (getConfig().getBoolean(YarnConfiguration.YARN_API_SERVICES_ENABLE, - false)) { - serviceConfig = new HashMap<String, String>(); - String apiPackages = "org.apache.hadoop.yarn.service.webapp;" + - "org.apache.hadoop.yarn.webapp"; - serviceConfig.put("PackageName", apiPackages); - serviceConfig.put("PathSpec", "/app/*"); - } - webApp = builder.start(new RMWebApp(this), uiWebAppContext, serviceConfig); + webApp = builder.start(new RMWebApp(this), uiWebAppContext); } private String getWebAppsPath(String appName) { --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org