KNOX-2238 CM discovery - Add TLS support to Phoenix auto discovery (#267)
diff --git a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/phoenix/PhoenixServiceModelGenerator.java b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/phoenix/PhoenixServiceModelGenerator.java
index e6e157d..ea59a77 100644
--- a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/phoenix/PhoenixServiceModelGenerator.java
+++ b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/phoenix/PhoenixServiceModelGenerator.java
@@ -31,7 +31,8 @@
public static final String SERVICE_TYPE = "PHOENIX";
public static final String ROLE_TYPE = "PHOENIX_QUERY_SERVER";
- static final String QUERY_SERVER_PORT = "phoenix_query_server_port";
+ static final String SSL_ENABLED = "ssl_enabled";
+ static final String QUERY_SERVER_PORT = "phoenix_query_server_port";
@Override
public String getService() {
@@ -58,14 +59,22 @@
ApiServiceConfig serviceConfig,
ApiRole role,
ApiConfigList roleConfig) {
+
String hostname = role.getHostRef().getHostname();
- // Phoenix Query Server does not support https
+ String sslEnabledRaw = getRoleConfigValue(roleConfig, SSL_ENABLED);
String scheme = "http";
+
+ if (Boolean.parseBoolean(sslEnabledRaw)) {
+ scheme = "https";
+ }
+
String port = getRoleConfigValue(roleConfig, QUERY_SERVER_PORT);
ServiceModel model = createServiceModel(String.format(Locale.getDefault(), "%s://%s:%s", scheme, hostname, port));
model.addRoleProperty(getRoleType(), QUERY_SERVER_PORT, port);
-
+ if (sslEnabledRaw != null) {
+ model.addRoleProperty(getRoleType(), SSL_ENABLED, sslEnabledRaw);
+ }
return model;
}
diff --git a/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/ClouderaManagerServiceDiscoveryTest.java b/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/ClouderaManagerServiceDiscoveryTest.java
index 2ae3b85..1f64a70 100644
--- a/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/ClouderaManagerServiceDiscoveryTest.java
+++ b/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/ClouderaManagerServiceDiscoveryTest.java
@@ -367,6 +367,18 @@
}
@Test
+ public void testPhoenixDiscoverySSL() {
+ final String hostName = "phoenix-host";
+ final String port = "8765";
+ ServiceDiscovery.Cluster cluster = doTestPhoenixDiscovery(hostName, port, true);
+ assertNotNull(cluster);
+ List<String> phoenixURLs = cluster.getServiceURLs("AVATICA");
+ assertNotNull(phoenixURLs);
+ assertEquals(1, phoenixURLs.size());
+ assertEquals("https://" + hostName + ":" + port, phoenixURLs.get(0));
+ }
+
+ @Test
public void testWebHCatDiscovery() {
final String hostName = "webhcat-host";
final String port = "22222";