[NO ISSUE] Expose public address / ports for CC services
Change-Id: I61f8988b32f13a1eba029fa7120d6e753aacc151
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2704
Sonar-Qube: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Till Westmann <tillw@apache.org>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/ClusterControllerService.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/ClusterControllerService.java
index 6faa8dd..8953bec 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/ClusterControllerService.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/ClusterControllerService.java
@@ -215,8 +215,8 @@
clusterIPC.start();
clientIPC.start();
webServer.start();
- info = new ClusterControllerInfo(ccId, ccConfig.getClientListenAddress(), ccConfig.getClientListenPort(),
- webServer.getListeningPort());
+ info = new ClusterControllerInfo(ccId, ccConfig.getClientPublicAddress(), ccConfig.getClientPublicPort(),
+ ccConfig.getConsolePublicPort());
timer.schedule(sweeper, 0, ccConfig.getHeartbeatPeriodMillis());
jobLog.open();
startApplication();
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/CCConfig.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/CCConfig.java
index 889e140..f83df6e 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/CCConfig.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/CCConfig.java
@@ -45,14 +45,19 @@
public enum Option implements IOption {
APP_CLASS(STRING, (String) null),
ADDRESS(STRING, InetAddress.getLoopbackAddress().getHostAddress()),
+ PUBLIC_ADDRESS(STRING, ADDRESS),
CLUSTER_LISTEN_ADDRESS(STRING, ADDRESS),
CLUSTER_LISTEN_PORT(INTEGER, 1099),
- CLUSTER_PUBLIC_ADDRESS(STRING, CLUSTER_LISTEN_ADDRESS),
+ CLUSTER_PUBLIC_ADDRESS(STRING, PUBLIC_ADDRESS),
CLUSTER_PUBLIC_PORT(INTEGER, CLUSTER_LISTEN_PORT),
CLIENT_LISTEN_ADDRESS(STRING, ADDRESS),
CLIENT_LISTEN_PORT(INTEGER, 1098),
+ CLIENT_PUBLIC_ADDRESS(STRING, PUBLIC_ADDRESS),
+ CLIENT_PUBLIC_PORT(INTEGER, CLIENT_LISTEN_PORT),
CONSOLE_LISTEN_ADDRESS(STRING, ADDRESS),
CONSOLE_LISTEN_PORT(INTEGER, 16001),
+ CONSOLE_PUBLIC_ADDRESS(STRING, PUBLIC_ADDRESS),
+ CONSOLE_PUBLIC_PORT(INTEGER, CONSOLE_LISTEN_PORT),
HEARTBEAT_PERIOD(LONG, 10000L), // TODO (mblow): add time unit
HEARTBEAT_MAX_MISSES(INTEGER, 5),
PROFILE_DUMP_PERIOD(INTEGER, 0),
@@ -118,6 +123,10 @@
return "Application CC main class";
case ADDRESS:
return "Default bind address for all services on this cluster controller";
+ case PUBLIC_ADDRESS:
+ return "Default public address that other processes should use to contact this cluster controller. "
+ + "All services will advertise this address unless a service-specific public address is "
+ + "supplied.";
case CLUSTER_LISTEN_ADDRESS:
return "Sets the IP Address to listen for connections from NCs";
case CLUSTER_LISTEN_PORT:
@@ -130,10 +139,18 @@
return "Sets the IP Address to listen for connections from clients";
case CLIENT_LISTEN_PORT:
return "Sets the port to listen for connections from clients";
+ case CLIENT_PUBLIC_ADDRESS:
+ return "The IP Address which clients should use to connect";
+ case CLIENT_PUBLIC_PORT:
+ return "The port which clients should use to connect";
case CONSOLE_LISTEN_ADDRESS:
return "Sets the listen address for the Cluster Controller";
case CONSOLE_LISTEN_PORT:
return "Sets the http port for the Cluster Controller)";
+ case CONSOLE_PUBLIC_ADDRESS:
+ return "Sets the address on which to contact the http console for the Cluster Controller";
+ case CONSOLE_PUBLIC_PORT:
+ return "Sets the port on which to contact the http console for the Cluster Controller)";
case HEARTBEAT_PERIOD:
return "Sets the time duration between two heartbeats from each node controller in milliseconds";
case HEARTBEAT_MAX_MISSES:
@@ -261,6 +278,22 @@
configManager.set(Option.CLIENT_LISTEN_PORT, clientListenPort);
}
+ public String getClientPublicAddress() {
+ return getAppConfig().getString(Option.CLIENT_PUBLIC_ADDRESS);
+ }
+
+ public void setClientPublicAddress(String clientPublicAddress) {
+ configManager.set(Option.CLIENT_PUBLIC_ADDRESS, clientPublicAddress);
+ }
+
+ public int getClientPublicPort() {
+ return getAppConfig().getInt(Option.CLIENT_PUBLIC_PORT);
+ }
+
+ public void setClientPublicPort(int clientPublicPort) {
+ configManager.set(Option.CLIENT_PUBLIC_PORT, clientPublicPort);
+ }
+
public int getConsoleListenPort() {
return getAppConfig().getInt(Option.CONSOLE_LISTEN_PORT);
}
@@ -269,6 +302,14 @@
configManager.set(Option.CONSOLE_LISTEN_PORT, consoleListenPort);
}
+ public int getConsolePublicPort() {
+ return getAppConfig().getInt(Option.CONSOLE_PUBLIC_PORT);
+ }
+
+ public void setConsolePublicPort(int consolePublicPort) {
+ configManager.set(Option.CONSOLE_PUBLIC_PORT, consolePublicPort);
+ }
+
public long getHeartbeatPeriodMillis() {
return getAppConfig().getLong(Option.HEARTBEAT_PERIOD);
}