azkaban-aplcache

Allow users to specify host name in azkaban property file. (#920) 1.

3/2/2017 3:35:10 AM

Details

diff --git a/azkaban-common/src/main/java/azkaban/constants/ServerProperties.java b/azkaban-common/src/main/java/azkaban/constants/ServerProperties.java
index 1158e95..53bd285 100644
--- a/azkaban-common/src/main/java/azkaban/constants/ServerProperties.java
+++ b/azkaban-common/src/main/java/azkaban/constants/ServerProperties.java
@@ -47,4 +47,12 @@ public class ServerProperties {
 
   public static final String IS_METRICS_ENABLED =
       "azkaban.is.metrics.enabled";
+
+  // Hostname for the host, if not specified, canonical hostname will be used
+  public static final String AZKABAN_SERVER_HOST_NAME = "azkaban.server.hostname";
+
+  // Legacy configs section, new configs should follow the naming convention of azkaban.server.<rest of the name> for server configs.
+
+  // The property is used for the web server to get the host name of the executor when running in SOLO mode.
+  public static final String EXECUTOR_HOST = "executor.host";
 }
diff --git a/azkaban-common/src/main/java/azkaban/executor/ExecutorManager.java b/azkaban-common/src/main/java/azkaban/executor/ExecutorManager.java
index b7b3d3d..80b58e7 100644
--- a/azkaban-common/src/main/java/azkaban/executor/ExecutorManager.java
+++ b/azkaban-common/src/main/java/azkaban/executor/ExecutorManager.java
@@ -16,6 +16,7 @@
 
 package azkaban.executor;
 
+import azkaban.constants.ServerProperties;
 import azkaban.utils.FlowUtils;
 import java.io.File;
 import java.io.IOException;
@@ -196,7 +197,7 @@ public class ExecutorManager extends EventHandler implements
       newExecutors.addAll(executorLoader.fetchActiveExecutors());
     } else if (azkProps.containsKey("executor.port")) {
       // Add local executor, if specified as per properties
-      String executorHost = azkProps.getString("executor.host", "localhost");
+      String executorHost = azkProps.getString(ServerProperties.EXECUTOR_HOST, "localhost");
       int executorPort = azkProps.getInt("executor.port");
       logger.info(String.format("Initializing local executor %s:%d",
         executorHost, executorPort));
diff --git a/azkaban-exec-server/src/main/java/azkaban/execapp/AzkabanExecutorServer.java b/azkaban-exec-server/src/main/java/azkaban/execapp/AzkabanExecutorServer.java
index 87925c8..023abe2 100644
--- a/azkaban-exec-server/src/main/java/azkaban/execapp/AzkabanExecutorServer.java
+++ b/azkaban-exec-server/src/main/java/azkaban/execapp/AzkabanExecutorServer.java
@@ -18,6 +18,7 @@ package azkaban.execapp;
 
 import com.google.common.base.Throwables;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 import org.joda.time.DateTimeZone;
 import org.mortbay.jetty.Connector;
@@ -552,6 +553,13 @@ public class AzkabanExecutorServer {
    * @return hostname
    */
   public String getHost() {
+    if(props.containsKey(ServerProperties.AZKABAN_SERVER_HOST_NAME)) {
+      String hostName = props.getString(ServerProperties.AZKABAN_SERVER_HOST_NAME);
+      if(!StringUtils.isEmpty(hostName)) {
+        return hostName;
+      }
+    }
+
     String host = "unkownHost";
     try {
       host = InetAddress.getLocalHost().getCanonicalHostName();