You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jo...@apache.org on 2017/05/24 02:40:02 UTC

[45/50] [abbrv] ambari git commit: AMBARI-21087. Infra manger: Add static data folder servlet endpoint (oleewere)

AMBARI-21087. Infra manger: Add static data folder servlet endpoint (oleewere)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/4fcdaae4
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/4fcdaae4
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/4fcdaae4

Branch: refs/heads/branch-feature-AMBARI-12556
Commit: 4fcdaae4ce7788620d9b6146dfaef10ad1e7c60e
Parents: 0d68810
Author: oleewere <ol...@gmail.com>
Authored: Mon May 22 13:54:06 2017 +0200
Committer: oleewere <ol...@gmail.com>
Committed: Tue May 23 12:49:25 2017 +0200

----------------------------------------------------------------------
 .../org/apache/ambari/infra/InfraManager.java   | 29 ++++++++++++++++++--
 .../infra/common/InfraManagerConstants.java     |  2 ++
 2 files changed, 28 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/4fcdaae4/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/InfraManager.java
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/InfraManager.java b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/InfraManager.java
index 227bab4..186f98c 100644
--- a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/InfraManager.java
+++ b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/InfraManager.java
@@ -32,6 +32,7 @@ import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.server.ServerConnector;
 import org.eclipse.jetty.server.handler.HandlerList;
 import org.eclipse.jetty.server.handler.ResourceHandler;
+import org.eclipse.jetty.servlet.DefaultServlet;
 import org.eclipse.jetty.servlet.ServletContextHandler;
 import org.eclipse.jetty.servlet.ServletHolder;
 import org.eclipse.jetty.util.resource.Resource;
@@ -48,6 +49,8 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
 
+import static org.apache.ambari.infra.common.InfraManagerConstants.DATA_FOLDER_LOCATION_PARAM;
+import static org.apache.ambari.infra.common.InfraManagerConstants.DEFAULT_DATA_FOLDER_LOCATION;
 import static org.apache.ambari.infra.common.InfraManagerConstants.DEFAULT_PORT;
 import static org.apache.ambari.infra.common.InfraManagerConstants.DEFAULT_PROTOCOL;
 import static org.apache.ambari.infra.common.InfraManagerConstants.INFRA_MANAGER_SESSION_ID;
@@ -78,6 +81,13 @@ public class InfraManager {
       .argName("port_number")
       .build();
 
+    final Option dataFolderOption = Option.builder("df")
+      .longOpt("data-folder")
+      .desc("Infra Manager data folder location")
+      .numberOfArgs(1)
+      .argName("data_folder")
+      .build();
+
     final Option protocolOption = Option.builder("t")
       .longOpt("tls-enabled")
       .desc("TLS enabled for Infra Manager")
@@ -86,17 +96,21 @@ public class InfraManager {
     options.addOption(helpOption);
     options.addOption(portOption);
     options.addOption(protocolOption);
+    options.addOption(dataFolderOption);
 
     try {
       CommandLineParser cmdLineParser = new DefaultParser();
       CommandLine cli = cmdLineParser.parse(options, args);
       int port = cli.hasOption('p') ? Integer.parseInt(cli.getOptionValue('p')) : DEFAULT_PORT;
       String protocol = cli.hasOption("t") ? PROTOCOL_SSL : DEFAULT_PROTOCOL;
+      String dataFolder = cli.hasOption("df") ? cli.getOptionValue("df"): DEFAULT_DATA_FOLDER_LOCATION;
+
+      System.setProperty(DATA_FOLDER_LOCATION_PARAM, dataFolder); // be able to access it from jobs
 
       Server server = buildServer(port, protocol);
       HandlerList handlers = new HandlerList();
       handlers.addHandler(createSwaggerContext());
-      handlers.addHandler(createBaseWebappContext());
+      handlers.addHandler(createBaseWebappContext(dataFolder));
 
       server.setHandler(handlers);
       server.start();
@@ -124,13 +138,22 @@ public class InfraManager {
     return server;
   }
 
-  private static WebAppContext createBaseWebappContext() throws MalformedURLException {
+  private static WebAppContext createBaseWebappContext(String dataFolder) throws MalformedURLException {
     URI webResourceBase = findWebResourceBase();
     WebAppContext context = new WebAppContext();
-    context.setBaseResource(Resource.newResource(webResourceBase));
+    ResourceCollection resources = new ResourceCollection(Resource.newResource(webResourceBase));
+    context.setBaseResource(resources);
     context.setContextPath(ROOT_CONTEXT);
     context.setParentLoaderPriority(true);
 
+    // Data folder servlet
+    ServletHolder dataServlet = new ServletHolder("static-data", DefaultServlet.class);
+    dataServlet.setInitParameter("dirAllowed","true");
+    dataServlet.setInitParameter("pathInfoOnly","true");
+    dataServlet.setInitParameter("resourceBase", dataFolder);
+
+    context.addServlet(dataServlet,"/files/*");
+
     // Configure Spring
     context.addEventListener(new ContextLoaderListener());
     context.addEventListener(new RequestContextListener());

http://git-wip-us.apache.org/repos/asf/ambari/blob/4fcdaae4/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/common/InfraManagerConstants.java
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/common/InfraManagerConstants.java b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/common/InfraManagerConstants.java
index 11714f3..77f7008 100644
--- a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/common/InfraManagerConstants.java
+++ b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/common/InfraManagerConstants.java
@@ -25,5 +25,7 @@ public final class InfraManagerConstants {
   public static final String PROTOCOL_SSL = "https";
   public static final String ROOT_CONTEXT = "/";
   public static final String WEB_RESOURCE_FOLDER = "webapp";
+  public static final String DEFAULT_DATA_FOLDER_LOCATION = "/usr/ambari-infra-manager/data";
+  public static final String DATA_FOLDER_LOCATION_PARAM = "dataFolderLocation";
   public static final Integer SESSION_TIMEOUT = 60 * 30;
 }