This is an automated email from the ASF dual-hosted git repository.

pzampino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/knox.git


The following commit(s) were added to refs/heads/master by this push:
     new 3b28f4f  KNOX-1970 - CM discovery - Add Impala HS2 to auto discovery 
(#223)
3b28f4f is described below

commit 3b28f4f5e89c865d948198d1f3df77bae81d18df
Author: Phil Zampino <[email protected]>
AuthorDate: Wed Dec 18 13:15:26 2019 -0500

    KNOX-1970 - CM discovery - Add Impala HS2 to auto discovery (#223)
---
 .../cm/model/AbstractServiceModelGenerator.java    |   7 +
 .../model/atlas/AtlasAPIServiceModelGenerator.java |   2 +-
 .../cm/model/atlas/AtlasServiceModelGenerator.java |  11 +-
 .../model/hbase/HBaseUIServiceModelGenerator.java  |  11 +-
 .../model/hbase/WebHBaseServiceModelGenerator.java |  11 +-
 .../model/hdfs/NameNodeServiceModelGenerator.java  |  14 +-
 .../model/hive/HiveOnTezServiceModelGenerator.java |   2 +-
 .../cm/model/hive/HiveServiceModelGenerator.java   |   6 +-
 .../model/hive/WebHCatServiceModelGenerator.java   |  11 +-
 .../cm/model/hue/HueLBServiceModelGenerator.java   |   5 -
 .../cm/model/hue/HueServiceModelGenerator.java     |   5 -
 .../ImpalaServiceModelGenerator.java}              |  29 ++--
 .../ImpalaUIServiceModelGenerator.java}            |  33 ++--
 .../cm/model/livy/LivyServiceModelGenerator.java   |  11 +-
 .../cm/model/oozie/OozieServiceModelGenerator.java |  11 +-
 .../phoenix/PhoenixServiceModelGenerator.java      |  11 +-
 .../model/ranger/RangerServiceModelGenerator.java  |  11 +-
 .../cm/model/solr/SolrServiceModelGenerator.java   |  11 +-
 .../spark/SparkHistoryUIServiceModelGenerator.java |  11 +-
 .../yarn/JobHistoryUIServiceModelGenerator.java    |   5 -
 .../ResourceManagerServiceModelGeneratorBase.java  |   9 --
 .../zeppelin/ZeppelinServiceModelGenerator.java    |  11 +-
 ...way.topology.discovery.cm.ServiceModelGenerator |   2 +
 .../cm/ClouderaManagerServiceDiscoveryTest.java    | 169 +++++++++++++++++----
 24 files changed, 217 insertions(+), 192 deletions(-)

diff --git 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/AbstractServiceModelGenerator.java
 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/AbstractServiceModelGenerator.java
index 5d77fcd..9c9ead7 100644
--- 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/AbstractServiceModelGenerator.java
+++ 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/AbstractServiceModelGenerator.java
@@ -19,6 +19,8 @@ package org.apache.knox.gateway.topology.discovery.cm.model;
 import com.cloudera.api.swagger.client.ApiClient;
 import com.cloudera.api.swagger.model.ApiConfig;
 import com.cloudera.api.swagger.model.ApiConfigList;
+import com.cloudera.api.swagger.model.ApiRole;
+import com.cloudera.api.swagger.model.ApiService;
 import com.cloudera.api.swagger.model.ApiServiceConfig;
 import org.apache.knox.gateway.topology.discovery.cm.DiscoveryApiClient;
 import org.apache.knox.gateway.topology.discovery.cm.ServiceModel;
@@ -78,4 +80,9 @@ public abstract class AbstractServiceModelGenerator 
implements ServiceModelGener
     return new ServiceModel(getModelType(), getService(), getServiceType(), 
getRoleType(), url);
   }
 
+  @Override
+  public boolean handles(ApiService service, ApiServiceConfig serviceConfig, 
ApiRole role, ApiConfigList roleConfig) {
+    return getServiceType().equals(service.getType()) && 
getRoleType().equals(role.getType());
+  }
+
 }
diff --git 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/atlas/AtlasAPIServiceModelGenerator.java
 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/atlas/AtlasAPIServiceModelGenerator.java
index d4ae063..f156593 100644
--- 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/atlas/AtlasAPIServiceModelGenerator.java
+++ 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/atlas/AtlasAPIServiceModelGenerator.java
@@ -19,7 +19,7 @@ package 
org.apache.knox.gateway.topology.discovery.cm.model.atlas;
 import org.apache.knox.gateway.topology.discovery.cm.ServiceModel;
 
 public class AtlasAPIServiceModelGenerator extends AtlasServiceModelGenerator {
-  private static final String SERVICE = "ATLAS-API";
+  public static final String SERVICE = "ATLAS-API";
 
   @Override
   public String getService() {
diff --git 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/atlas/AtlasServiceModelGenerator.java
 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/atlas/AtlasServiceModelGenerator.java
index 5809943..a33863e 100644
--- 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/atlas/AtlasServiceModelGenerator.java
+++ 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/atlas/AtlasServiceModelGenerator.java
@@ -27,9 +27,9 @@ import 
org.apache.knox.gateway.topology.discovery.cm.model.AbstractServiceModelG
 import java.util.Locale;
 
 public class AtlasServiceModelGenerator extends AbstractServiceModelGenerator {
-  private static final String SERVICE = "ATLAS";
-  private static final String SERVICE_TYPE = "ATLAS";
-  private static final String ROLE_TYPE = "ATLAS_SERVER";
+  public static final String SERVICE = "ATLAS";
+  public static final String SERVICE_TYPE = "ATLAS";
+  public static final String ROLE_TYPE = "ATLAS_SERVER";
 
   @Override
   public String getService() {
@@ -52,11 +52,6 @@ public class AtlasServiceModelGenerator extends 
AbstractServiceModelGenerator {
   }
 
   @Override
-  public boolean handles(ApiService service, ApiServiceConfig serviceConfig, 
ApiRole role, ApiConfigList roleConfig) {
-    return getServiceType().equals(service.getType()) && 
getRoleType().equals(role.getType());
-  }
-
-  @Override
   public ServiceModel generateService(ApiService       service,
                                       ApiServiceConfig serviceConfig,
                                       ApiRole          role,
diff --git 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hbase/HBaseUIServiceModelGenerator.java
 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hbase/HBaseUIServiceModelGenerator.java
index 55e631f..00c7854 100644
--- 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hbase/HBaseUIServiceModelGenerator.java
+++ 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hbase/HBaseUIServiceModelGenerator.java
@@ -27,9 +27,9 @@ import java.util.Locale;
 
 public class HBaseUIServiceModelGenerator extends 
AbstractServiceModelGenerator {
 
-  private static final String SERVICE = "HBASEUI";
-  private static final String SERVICE_TYPE = "HBASE";
-  private static final String ROLE_TYPE = "MASTER";
+  public static final String SERVICE      = "HBASEUI";
+  public static final String SERVICE_TYPE = "HBASE";
+  public static final String ROLE_TYPE    = "MASTER";
 
   @Override
   public String getService() {
@@ -52,11 +52,6 @@ public class HBaseUIServiceModelGenerator extends 
AbstractServiceModelGenerator
   }
 
   @Override
-  public boolean handles(ApiService service, ApiServiceConfig serviceConfig, 
ApiRole role, ApiConfigList roleConfig) {
-    return getServiceType().equals(service.getType()) && 
getRoleType().equals(role.getType());
-  }
-
-  @Override
   public ServiceModel generateService(ApiService       service,
                                       ApiServiceConfig serviceConfig,
                                       ApiRole          role,
diff --git 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hbase/WebHBaseServiceModelGenerator.java
 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hbase/WebHBaseServiceModelGenerator.java
index f38d7a5..c76e9a1 100644
--- 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hbase/WebHBaseServiceModelGenerator.java
+++ 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hbase/WebHBaseServiceModelGenerator.java
@@ -27,9 +27,9 @@ import java.util.Locale;
 
 public class WebHBaseServiceModelGenerator extends 
AbstractServiceModelGenerator {
 
-  private static final String SERVICE = "WEBHBASE";
-  private static final String SERVICE_TYPE = "HBASE";
-  private static final String ROLE_TYPE = "HBASERESTSERVER";
+  public static final String SERVICE      = "WEBHBASE";
+  public static final String SERVICE_TYPE = "HBASE";
+  public static final String ROLE_TYPE    = "HBASERESTSERVER";
 
   @Override
   public String getService() {
@@ -52,11 +52,6 @@ public class WebHBaseServiceModelGenerator extends 
AbstractServiceModelGenerator
   }
 
   @Override
-  public boolean handles(ApiService service, ApiServiceConfig serviceConfig, 
ApiRole role, ApiConfigList roleConfig) {
-    return getServiceType().equals(service.getType()) && 
getRoleType().equals(role.getType());
-  }
-
-  @Override
   public ServiceModel generateService(ApiService       service,
                                       ApiServiceConfig serviceConfig,
                                       ApiRole          role,
diff --git 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/NameNodeServiceModelGenerator.java
 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/NameNodeServiceModelGenerator.java
index 075c94e..1486901 100644
--- 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/NameNodeServiceModelGenerator.java
+++ 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/NameNodeServiceModelGenerator.java
@@ -27,9 +27,9 @@ import 
org.apache.knox.gateway.topology.discovery.cm.model.AbstractServiceModelG
 import java.util.Locale;
 
 public class NameNodeServiceModelGenerator extends 
AbstractServiceModelGenerator {
-  private static final String SERVICE      = "NAMENODE";
-  private static final String SERVICE_TYPE = "HDFS";
-  private static final String ROLE_TYPE    = "NAMENODE";
+  public static final String SERVICE      = "NAMENODE";
+  public static final String SERVICE_TYPE = "HDFS";
+  public static final String ROLE_TYPE    = "NAMENODE";
 
   @Override
   public String getServiceType() {
@@ -52,14 +52,6 @@ public class NameNodeServiceModelGenerator extends 
AbstractServiceModelGenerator
   }
 
   @Override
-  public boolean handles(ApiService       service,
-                         ApiServiceConfig serviceConfig,
-                         ApiRole          role,
-                         ApiConfigList    roleConfig) {
-    return getServiceType().equals(service.getType()) && 
getRoleType().equals(role.getType());
-  }
-
-  @Override
   public ServiceModel generateService(ApiService       service,
                                       ApiServiceConfig serviceConfig,
                                       ApiRole          role,
diff --git 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/HiveOnTezServiceModelGenerator.java
 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/HiveOnTezServiceModelGenerator.java
index 15b4f8e..a5dbe06 100644
--- 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/HiveOnTezServiceModelGenerator.java
+++ 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/HiveOnTezServiceModelGenerator.java
@@ -18,7 +18,7 @@ package 
org.apache.knox.gateway.topology.discovery.cm.model.hive;
 
 public class HiveOnTezServiceModelGenerator extends HiveServiceModelGenerator {
 
-  private static final String SERVICE_TYPE = "HIVE_ON_TEZ";
+  public static final String SERVICE_TYPE = "HIVE_ON_TEZ";
 
   @Override
   public String getServiceType() {
diff --git 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/HiveServiceModelGenerator.java
 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/HiveServiceModelGenerator.java
index 7cb787d..981a9df 100644
--- 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/HiveServiceModelGenerator.java
+++ 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/HiveServiceModelGenerator.java
@@ -28,9 +28,9 @@ import java.util.Locale;
 
 public class HiveServiceModelGenerator extends AbstractServiceModelGenerator {
 
-  private static final String SERVICE      = "HIVE";
-  private static final String SERVICE_TYPE = "HIVE";
-  private static final String ROLE_TYPE    = "HIVESERVER2";
+  public static final String SERVICE      = "HIVE";
+  public static final String SERVICE_TYPE = "HIVE";
+  public static final String ROLE_TYPE    = "HIVESERVER2";
 
   @Override
   public String getService() {
diff --git 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/WebHCatServiceModelGenerator.java
 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/WebHCatServiceModelGenerator.java
index 77438c1..fa3552d 100644
--- 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/WebHCatServiceModelGenerator.java
+++ 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/WebHCatServiceModelGenerator.java
@@ -28,9 +28,9 @@ import java.util.Locale;
 
 public class WebHCatServiceModelGenerator extends 
AbstractServiceModelGenerator {
 
-  public static final String SERVICE = "WEBHCAT";
-  private static final String SERVICE_TYPE = "HIVE";
-  private static final String ROLE_TYPE = "WEBHCAT";
+  public static final String SERVICE      = "WEBHCAT";
+  public static final String SERVICE_TYPE = "HIVE";
+  public static final String ROLE_TYPE    = "WEBHCAT";
 
   @Override
   public String getService() {
@@ -53,11 +53,6 @@ public class WebHCatServiceModelGenerator extends 
AbstractServiceModelGenerator
   }
 
   @Override
-  public boolean handles(ApiService service, ApiServiceConfig serviceConfig, 
ApiRole role, ApiConfigList roleConfig) {
-    return getServiceType().equals(service.getType()) && 
getRoleType().equals(role.getType());
-  }
-
-  @Override
   public ServiceModel generateService(ApiService       service,
                                       ApiServiceConfig serviceConfig,
                                       ApiRole          role,
diff --git 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hue/HueLBServiceModelGenerator.java
 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hue/HueLBServiceModelGenerator.java
index ade5403..4b50aac 100644
--- 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hue/HueLBServiceModelGenerator.java
+++ 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hue/HueLBServiceModelGenerator.java
@@ -52,11 +52,6 @@ public class HueLBServiceModelGenerator extends 
AbstractServiceModelGenerator {
   }
 
   @Override
-  public boolean handles(ApiService service, ApiServiceConfig serviceConfig, 
ApiRole role, ApiConfigList roleConfig) {
-    return getServiceType().equals(service.getType()) && 
getRoleType().equals(role.getType());
-  }
-
-  @Override
   public ServiceModel generateService(ApiService       service,
                                       ApiServiceConfig serviceConfig,
                                       ApiRole          role,
diff --git 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hue/HueServiceModelGenerator.java
 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hue/HueServiceModelGenerator.java
index e6b59d8..04a7a52 100644
--- 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hue/HueServiceModelGenerator.java
+++ 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hue/HueServiceModelGenerator.java
@@ -52,11 +52,6 @@ public class HueServiceModelGenerator extends 
AbstractServiceModelGenerator {
   }
 
   @Override
-  public boolean handles(ApiService service, ApiServiceConfig serviceConfig, 
ApiRole role, ApiConfigList roleConfig) {
-    return getServiceType().equals(service.getType()) && 
getRoleType().equals(role.getType());
-  }
-
-  @Override
   public ServiceModel generateService(ApiService       service,
                                       ApiServiceConfig serviceConfig,
                                       ApiRole          role,
diff --git 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/WebHCatServiceModelGenerator.java
 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/impala/ImpalaServiceModelGenerator.java
similarity index 64%
copy from 
gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/WebHCatServiceModelGenerator.java
copy to 
gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/impala/ImpalaServiceModelGenerator.java
index 77438c1..1a8c920 100644
--- 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/WebHCatServiceModelGenerator.java
+++ 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/impala/ImpalaServiceModelGenerator.java
@@ -14,7 +14,7 @@
  * License for the specific language governing permissions and limitations 
under
  * the License.
  */
-package org.apache.knox.gateway.topology.discovery.cm.model.hive;
+package org.apache.knox.gateway.topology.discovery.cm.model.impala;
 
 import com.cloudera.api.swagger.client.ApiException;
 import com.cloudera.api.swagger.model.ApiConfigList;
@@ -26,11 +26,11 @@ import 
org.apache.knox.gateway.topology.discovery.cm.model.AbstractServiceModelG
 
 import java.util.Locale;
 
-public class WebHCatServiceModelGenerator extends 
AbstractServiceModelGenerator {
+public class ImpalaServiceModelGenerator extends AbstractServiceModelGenerator 
{
 
-  public static final String SERVICE = "WEBHCAT";
-  private static final String SERVICE_TYPE = "HIVE";
-  private static final String ROLE_TYPE = "WEBHCAT";
+  public static final String SERVICE      = "IMPALA";
+  public static final String SERVICE_TYPE = "IMPALA";
+  public static final String ROLE_TYPE    = "IMPALAD";
 
   @Override
   public String getService() {
@@ -53,17 +53,14 @@ public class WebHCatServiceModelGenerator extends 
AbstractServiceModelGenerator
   }
 
   @Override
-  public boolean handles(ApiService service, ApiServiceConfig serviceConfig, 
ApiRole role, ApiConfigList roleConfig) {
-    return getServiceType().equals(service.getType()) && 
getRoleType().equals(role.getType());
-  }
-
-  @Override
-  public ServiceModel generateService(ApiService       service,
-                                      ApiServiceConfig serviceConfig,
-                                      ApiRole          role,
-                                      ApiConfigList    roleConfig) throws 
ApiException {
+  public ServiceModel generateService(ApiService service, ApiServiceConfig 
serviceConfig, ApiRole role, ApiConfigList roleConfig) throws ApiException {
     String hostname = role.getHostRef().getHostname();
-    String port = getRoleConfigValue(roleConfig, "hive_webhcat_address_port");
-    return createServiceModel(String.format(Locale.getDefault(), 
"http://%s:%s/templeton";, hostname, port));
+
+    boolean sslEnabled = 
Boolean.parseBoolean(getServiceConfigValue(serviceConfig, 
"client_services_ssl_enabled"));
+    String scheme = sslEnabled ? "https" : "http";
+
+    // Role config properties
+    String port = getRoleConfigValue(roleConfig, "hs2_http_port");
+    return createServiceModel(String.format(Locale.getDefault(), 
"%s://%s:%s/", scheme, hostname, port));
   }
 }
diff --git 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hbase/HBaseUIServiceModelGenerator.java
 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/impala/ImpalaUIServiceModelGenerator.java
similarity index 72%
copy from 
gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hbase/HBaseUIServiceModelGenerator.java
copy to 
gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/impala/ImpalaUIServiceModelGenerator.java
index 55e631f..17da335 100644
--- 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hbase/HBaseUIServiceModelGenerator.java
+++ 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/impala/ImpalaUIServiceModelGenerator.java
@@ -14,8 +14,9 @@
  * License for the specific language governing permissions and limitations 
under
  * the License.
  */
-package org.apache.knox.gateway.topology.discovery.cm.model.hbase;
+package org.apache.knox.gateway.topology.discovery.cm.model.impala;
 
+import com.cloudera.api.swagger.client.ApiException;
 import com.cloudera.api.swagger.model.ApiConfigList;
 import com.cloudera.api.swagger.model.ApiRole;
 import com.cloudera.api.swagger.model.ApiService;
@@ -25,11 +26,12 @@ import 
org.apache.knox.gateway.topology.discovery.cm.model.AbstractServiceModelG
 
 import java.util.Locale;
 
-public class HBaseUIServiceModelGenerator extends 
AbstractServiceModelGenerator {
+public class ImpalaUIServiceModelGenerator extends 
AbstractServiceModelGenerator {
+
+  public static final String SERVICE      = "IMPALAUI";
+  public static final String SERVICE_TYPE = "IMPALA";
+  public static final String ROLE_TYPE    = "IMPALAD";
 
-  private static final String SERVICE = "HBASEUI";
-  private static final String SERVICE_TYPE = "HBASE";
-  private static final String ROLE_TYPE = "MASTER";
 
   @Override
   public String getService() {
@@ -53,24 +55,21 @@ public class HBaseUIServiceModelGenerator extends 
AbstractServiceModelGenerator
 
   @Override
   public boolean handles(ApiService service, ApiServiceConfig serviceConfig, 
ApiRole role, ApiConfigList roleConfig) {
-    return getServiceType().equals(service.getType()) && 
getRoleType().equals(role.getType());
+    return super.handles(service, serviceConfig, role, roleConfig) &&
+           Boolean.parseBoolean(getRoleConfigValue(roleConfig, 
"impalad_enable_webserver"));
   }
 
   @Override
   public ServiceModel generateService(ApiService       service,
                                       ApiServiceConfig serviceConfig,
                                       ApiRole          role,
-                                      ApiConfigList    roleConfig) {
+                                      ApiConfigList    roleConfig) throws 
ApiException {
     String hostname = role.getHostRef().getHostname();
-    String scheme;
-    String port = getRoleConfigValue(roleConfig, "hbase_master_info_port"); // 
TODO: Is there an SSL port, or is this property re-used?
-    boolean sslEnabled = 
Boolean.parseBoolean(getServiceConfigValue(serviceConfig, 
"hbase_hadoop_ssl_enabled"));
-    if(sslEnabled) {
-      scheme = "https";
-    } else {
-      scheme = "http";
-    }
-    return createServiceModel(String.format(Locale.getDefault(), "%s://%s:%s", 
scheme, hostname, port));
-  }
 
+    boolean sslEnabled = 
Boolean.parseBoolean(getServiceConfigValue(serviceConfig, 
"client_services_ssl_enabled"));
+    String scheme = sslEnabled ? "https" : "http";
+
+    String port = getRoleConfigValue(roleConfig, "impalad_webserver_port");
+    return createServiceModel(String.format(Locale.getDefault(), 
"%s://%s:%s/", scheme, hostname, port));
+  }
 }
diff --git 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/livy/LivyServiceModelGenerator.java
 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/livy/LivyServiceModelGenerator.java
index 99b4b7b..dfa4aad 100644
--- 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/livy/LivyServiceModelGenerator.java
+++ 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/livy/LivyServiceModelGenerator.java
@@ -27,9 +27,9 @@ import java.util.Locale;
 
 public class LivyServiceModelGenerator extends AbstractServiceModelGenerator {
 
-  private static final String SERVICE = "LIVYSERVER";
-  private static final String SERVICE_TYPE = "LIVY";
-  private static final String ROLE_TYPE = "LIVY_SERVER";
+  public static final String SERVICE      = "LIVYSERVER";
+  public static final String SERVICE_TYPE = "LIVY";
+  public static final String ROLE_TYPE    = "LIVY_SERVER";
 
   @Override
   public String getService() {
@@ -52,11 +52,6 @@ public class LivyServiceModelGenerator extends 
AbstractServiceModelGenerator {
   }
 
   @Override
-  public boolean handles(ApiService service, ApiServiceConfig serviceConfig, 
ApiRole role, ApiConfigList roleConfig) {
-    return getServiceType().equals(service.getType()) && 
getRoleType().equals(role.getType());
-  }
-
-  @Override
   public ServiceModel generateService(ApiService       service,
                                       ApiServiceConfig serviceConfig,
                                       ApiRole          role,
diff --git 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/oozie/OozieServiceModelGenerator.java
 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/oozie/OozieServiceModelGenerator.java
index 17a1c1f..a6adf0f 100644
--- 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/oozie/OozieServiceModelGenerator.java
+++ 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/oozie/OozieServiceModelGenerator.java
@@ -27,9 +27,9 @@ import java.util.Locale;
 
 public class OozieServiceModelGenerator extends AbstractServiceModelGenerator {
 
-  private static final String SERVICE = "OOZIE";
-  private static final String SERVICE_TYPE = "OOZIE";
-  private static final String ROLE_TYPE = "OOZIE_SERVER";
+  public static final String SERVICE      = "OOZIE";
+  public static final String SERVICE_TYPE = "OOZIE";
+  public static final String ROLE_TYPE    = "OOZIE_SERVER";
 
   @Override
   public String getService() {
@@ -52,11 +52,6 @@ public class OozieServiceModelGenerator extends 
AbstractServiceModelGenerator {
   }
 
   @Override
-  public boolean handles(ApiService service, ApiServiceConfig serviceConfig, 
ApiRole role, ApiConfigList roleConfig) {
-    return getServiceType().equals(service.getType()) && 
getRoleType().equals(role.getType());
-  }
-
-  @Override
   public ServiceModel generateService(ApiService       service,
                                       ApiServiceConfig serviceConfig,
                                       ApiRole          role,
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 cf9fdd7..fcdbb21 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
@@ -27,9 +27,9 @@ import java.util.Locale;
 
 public class PhoenixServiceModelGenerator extends 
AbstractServiceModelGenerator {
 
-  private static final String SERVICE = "AVATICA";
-  private static final String SERVICE_TYPE = "PHOENIX";
-  private static final String ROLE_TYPE = "PHOENIX_QUERY_SERVER";
+  public static final String SERVICE      = "AVATICA";
+  public static final String SERVICE_TYPE = "PHOENIX";
+  public static final String ROLE_TYPE    = "PHOENIX_QUERY_SERVER";
 
   @Override
   public String getService() {
@@ -52,11 +52,6 @@ public class PhoenixServiceModelGenerator extends 
AbstractServiceModelGenerator
   }
 
   @Override
-  public boolean handles(ApiService service, ApiServiceConfig serviceConfig, 
ApiRole role, ApiConfigList roleConfig) {
-    return getServiceType().equals(service.getType()) && 
getRoleType().equals(role.getType());
-  }
-
-  @Override
   public ServiceModel generateService(ApiService       service,
                                       ApiServiceConfig serviceConfig,
                                       ApiRole          role,
diff --git 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/ranger/RangerServiceModelGenerator.java
 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/ranger/RangerServiceModelGenerator.java
index edb9621..236ef29 100644
--- 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/ranger/RangerServiceModelGenerator.java
+++ 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/ranger/RangerServiceModelGenerator.java
@@ -26,9 +26,9 @@ import 
org.apache.knox.gateway.topology.discovery.cm.model.AbstractServiceModelG
 import java.util.Locale;
 
 public class RangerServiceModelGenerator extends AbstractServiceModelGenerator 
{
-  private static final String SERVICE = "RANGER";
-  private static final String SERVICE_TYPE = "RANGER";
-  private static final String ROLE_TYPE = "RANGER_ADMIN";
+  public static final String SERVICE      = "RANGER";
+  public static final String SERVICE_TYPE = "RANGER";
+  public static final String ROLE_TYPE    = "RANGER_ADMIN";
 
   @Override
   public String getService() {
@@ -51,11 +51,6 @@ public class RangerServiceModelGenerator extends 
AbstractServiceModelGenerator {
   }
 
   @Override
-  public boolean handles(ApiService service, ApiServiceConfig serviceConfig, 
ApiRole role, ApiConfigList roleConfig) {
-    return getServiceType().equals(service.getType()) && 
getRoleType().equals(role.getType());
-  }
-
-  @Override
   public ServiceModel generateService(ApiService       service,
                                       ApiServiceConfig serviceConfig,
                                       ApiRole          role,
diff --git 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/solr/SolrServiceModelGenerator.java
 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/solr/SolrServiceModelGenerator.java
index 7f19653..cc6ae41 100644
--- 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/solr/SolrServiceModelGenerator.java
+++ 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/solr/SolrServiceModelGenerator.java
@@ -26,9 +26,9 @@ import 
org.apache.knox.gateway.topology.discovery.cm.model.AbstractServiceModelG
 import java.util.Locale;
 
 public class SolrServiceModelGenerator extends AbstractServiceModelGenerator {
-  private static final String SERVICE = "SOLR";
-  private static final String SERVICE_TYPE = "SOLR";
-  private static final String ROLE_TYPE = "SOLR_SERVER";
+  public static final String SERVICE      = "SOLR";
+  public static final String SERVICE_TYPE = "SOLR";
+  public static final String ROLE_TYPE    = "SOLR_SERVER";
 
   @Override
   public String getService() {
@@ -51,11 +51,6 @@ public class SolrServiceModelGenerator extends 
AbstractServiceModelGenerator {
   }
 
   @Override
-  public boolean handles(ApiService service, ApiServiceConfig serviceConfig, 
ApiRole role, ApiConfigList roleConfig) {
-    return getServiceType().equals(service.getType()) && 
getRoleType().equals(role.getType());
-  }
-
-  @Override
   public ServiceModel generateService(ApiService       service,
                                       ApiServiceConfig serviceConfig,
                                       ApiRole          role,
diff --git 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/spark/SparkHistoryUIServiceModelGenerator.java
 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/spark/SparkHistoryUIServiceModelGenerator.java
index 89d9d41..75c466f 100644
--- 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/spark/SparkHistoryUIServiceModelGenerator.java
+++ 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/spark/SparkHistoryUIServiceModelGenerator.java
@@ -26,9 +26,9 @@ import 
org.apache.knox.gateway.topology.discovery.cm.model.AbstractServiceModelG
 import java.util.Locale;
 
 public class SparkHistoryUIServiceModelGenerator extends 
AbstractServiceModelGenerator {
-  private static final String SERVICE = "SPARKHISTORYUI";
-  private static final String SERVICE_TYPE = "SPARK_ON_YARN";
-  private static final String ROLE_TYPE = "SPARK_YARN_HISTORY_SERVER";
+  public static final String SERVICE      = "SPARKHISTORYUI";
+  public static final String SERVICE_TYPE = "SPARK_ON_YARN";
+  public static final String ROLE_TYPE    = "SPARK_YARN_HISTORY_SERVER";
 
   @Override
   public String getService() {
@@ -51,11 +51,6 @@ public class SparkHistoryUIServiceModelGenerator extends 
AbstractServiceModelGen
   }
 
   @Override
-  public boolean handles(ApiService service, ApiServiceConfig serviceConfig, 
ApiRole role, ApiConfigList roleConfig) {
-    return getServiceType().equals(service.getType()) && 
getRoleType().equals(role.getType());
-  }
-
-  @Override
   public ServiceModel generateService(ApiService       service,
                                       ApiServiceConfig serviceConfig,
                                       ApiRole          role,
diff --git 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/yarn/JobHistoryUIServiceModelGenerator.java
 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/yarn/JobHistoryUIServiceModelGenerator.java
index 5dfdeab..9b7e637 100644
--- 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/yarn/JobHistoryUIServiceModelGenerator.java
+++ 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/yarn/JobHistoryUIServiceModelGenerator.java
@@ -53,11 +53,6 @@ public class JobHistoryUIServiceModelGenerator extends 
AbstractServiceModelGener
   }
 
   @Override
-  public boolean handles(ApiService service, ApiServiceConfig serviceConfig, 
ApiRole role, ApiConfigList roleConfig) {
-    return getServiceType().equals(service.getType()) && 
getRoleType().equals(role.getType());
-  }
-
-  @Override
   public ServiceModel generateService(ApiService       service,
                                       ApiServiceConfig serviceConfig,
                                       ApiRole          role,
diff --git 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/yarn/ResourceManagerServiceModelGeneratorBase.java
 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/yarn/ResourceManagerServiceModelGeneratorBase.java
index 6ca7b59..f73930d 100644
--- 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/yarn/ResourceManagerServiceModelGeneratorBase.java
+++ 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/yarn/ResourceManagerServiceModelGeneratorBase.java
@@ -16,10 +16,6 @@
  */
 package org.apache.knox.gateway.topology.discovery.cm.model.yarn;
 
-import com.cloudera.api.swagger.model.ApiConfigList;
-import com.cloudera.api.swagger.model.ApiRole;
-import com.cloudera.api.swagger.model.ApiService;
-import com.cloudera.api.swagger.model.ApiServiceConfig;
 import 
org.apache.knox.gateway.topology.discovery.cm.model.AbstractServiceModelGenerator;
 
 public abstract class ResourceManagerServiceModelGeneratorBase extends 
AbstractServiceModelGenerator {
@@ -37,9 +33,4 @@ public abstract class 
ResourceManagerServiceModelGeneratorBase extends AbstractS
     return ROLE_TYPE;
   }
 
-  @Override
-  public boolean handles(ApiService service, ApiServiceConfig serviceConfig, 
ApiRole role, ApiConfigList roleConfig) {
-    return getServiceType().equals(service.getType()) && 
getRoleType().equals(role.getType());
-  }
-
 }
diff --git 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/zeppelin/ZeppelinServiceModelGenerator.java
 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/zeppelin/ZeppelinServiceModelGenerator.java
index bd0789b..8e99afb 100644
--- 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/zeppelin/ZeppelinServiceModelGenerator.java
+++ 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/zeppelin/ZeppelinServiceModelGenerator.java
@@ -27,9 +27,9 @@ import 
org.apache.knox.gateway.topology.discovery.cm.model.AbstractServiceModelG
 import java.util.Locale;
 
 public class ZeppelinServiceModelGenerator extends 
AbstractServiceModelGenerator {
-  private static final String SERVICE = "ZEPPELIN";
-  protected static final String SERVICE_TYPE = "ZEPPELIN";
-  protected static final String ROLE_TYPE = "ZEPPELIN_SERVER";
+  public static final String SERVICE      = "ZEPPELIN";
+  public static final String SERVICE_TYPE = "ZEPPELIN";
+  public static final String ROLE_TYPE    = "ZEPPELIN_SERVER";
 
   @Override
   public String getService() {
@@ -52,11 +52,6 @@ public class ZeppelinServiceModelGenerator extends 
AbstractServiceModelGenerator
   }
 
   @Override
-  public boolean handles(ApiService service, ApiServiceConfig serviceConfig, 
ApiRole role, ApiConfigList roleConfig) {
-    return getServiceType().equals(service.getType()) && 
getRoleType().equals(role.getType());
-  }
-
-  @Override
   public ServiceModel generateService(ApiService       service,
                                       ApiServiceConfig serviceConfig,
                                       ApiRole          role,
diff --git 
a/gateway-discovery-cm/src/main/resources/META-INF/services/org.apache.knox.gateway.topology.discovery.cm.ServiceModelGenerator
 
b/gateway-discovery-cm/src/main/resources/META-INF/services/org.apache.knox.gateway.topology.discovery.cm.ServiceModelGenerator
index 39e53f6..d6ca1cf 100644
--- 
a/gateway-discovery-cm/src/main/resources/META-INF/services/org.apache.knox.gateway.topology.discovery.cm.ServiceModelGenerator
+++ 
b/gateway-discovery-cm/src/main/resources/META-INF/services/org.apache.knox.gateway.topology.discovery.cm.ServiceModelGenerator
@@ -28,6 +28,8 @@ 
org.apache.knox.gateway.topology.discovery.cm.model.hive.HiveOnTezServiceModelGe
 
org.apache.knox.gateway.topology.discovery.cm.model.hive.WebHCatServiceModelGenerator
 
org.apache.knox.gateway.topology.discovery.cm.model.hue.HueServiceModelGenerator
 
org.apache.knox.gateway.topology.discovery.cm.model.hue.HueLBServiceModelGenerator
+org.apache.knox.gateway.topology.discovery.cm.model.impala.ImpalaServiceModelGenerator
+org.apache.knox.gateway.topology.discovery.cm.model.impala.ImpalaUIServiceModelGenerator
 
org.apache.knox.gateway.topology.discovery.cm.model.yarn.JobTrackerServiceModelGenerator
 
org.apache.knox.gateway.topology.discovery.cm.model.livy.LivyServiceModelGenerator
 
org.apache.knox.gateway.topology.discovery.cm.model.oozie.OozieServiceModelGenerator
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 31419cf..ecf5520 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
@@ -32,6 +32,23 @@ import org.apache.knox.gateway.config.GatewayConfig;
 import org.apache.knox.gateway.services.security.AliasService;
 import org.apache.knox.gateway.topology.discovery.ServiceDiscovery;
 import org.apache.knox.gateway.topology.discovery.ServiceDiscoveryConfig;
+import 
org.apache.knox.gateway.topology.discovery.cm.model.atlas.AtlasAPIServiceModelGenerator;
+import 
org.apache.knox.gateway.topology.discovery.cm.model.atlas.AtlasServiceModelGenerator;
+import 
org.apache.knox.gateway.topology.discovery.cm.model.hbase.HBaseUIServiceModelGenerator;
+import 
org.apache.knox.gateway.topology.discovery.cm.model.hbase.WebHBaseServiceModelGenerator;
+import 
org.apache.knox.gateway.topology.discovery.cm.model.hdfs.NameNodeServiceModelGenerator;
+import 
org.apache.knox.gateway.topology.discovery.cm.model.hive.HiveOnTezServiceModelGenerator;
+import 
org.apache.knox.gateway.topology.discovery.cm.model.hive.HiveServiceModelGenerator;
+import 
org.apache.knox.gateway.topology.discovery.cm.model.hive.WebHCatServiceModelGenerator;
+import 
org.apache.knox.gateway.topology.discovery.cm.model.impala.ImpalaServiceModelGenerator;
+import 
org.apache.knox.gateway.topology.discovery.cm.model.impala.ImpalaUIServiceModelGenerator;
+import 
org.apache.knox.gateway.topology.discovery.cm.model.livy.LivyServiceModelGenerator;
+import 
org.apache.knox.gateway.topology.discovery.cm.model.oozie.OozieServiceModelGenerator;
+import 
org.apache.knox.gateway.topology.discovery.cm.model.phoenix.PhoenixServiceModelGenerator;
+import 
org.apache.knox.gateway.topology.discovery.cm.model.ranger.RangerServiceModelGenerator;
+import 
org.apache.knox.gateway.topology.discovery.cm.model.solr.SolrServiceModelGenerator;
+import 
org.apache.knox.gateway.topology.discovery.cm.model.spark.SparkHistoryUIServiceModelGenerator;
+import 
org.apache.knox.gateway.topology.discovery.cm.model.zeppelin.ZeppelinServiceModelGenerator;
 import org.easymock.EasyMock;
 import org.junit.Test;
 
@@ -99,7 +116,7 @@ public class ClouderaManagerServiceDiscoveryTest {
     final String port           = "21000";
     final String sslPort        = "21003";
     ServiceDiscovery.Cluster cluster = doTestAtlasDiscovery(hostName, port, 
sslPort, isSSL);
-    List<String> atlastURLs = cluster.getServiceURLs("ATLAS");
+    List<String> atlastURLs = 
cluster.getServiceURLs(AtlasServiceModelGenerator.SERVICE);
     assertEquals(1, atlastURLs.size());
     assertEquals((isSSL ? "https" : "http") + "://" + hostName + ":" + (isSSL 
? sslPort : port),
                  atlastURLs.get(0));
@@ -110,7 +127,7 @@ public class ClouderaManagerServiceDiscoveryTest {
     final String port           = "21000";
     final String sslPort        = "21003";
     ServiceDiscovery.Cluster cluster = doTestAtlasDiscovery(hostName, port, 
sslPort, isSSL);
-    List<String> atlastURLs = cluster.getServiceURLs("ATLAS-API");
+    List<String> atlastURLs = 
cluster.getServiceURLs(AtlasAPIServiceModelGenerator.SERVICE);
     assertEquals(1, atlastURLs.size());
     assertEquals((isSSL ? "https" : "http") + "://" + hostName + ":" + (isSSL 
? sslPort : port),
         atlastURLs.get(0));
@@ -335,9 +352,9 @@ public class ClouderaManagerServiceDiscoveryTest {
 
     ServiceDiscovery.Cluster cluster = doTestDiscovery(hostName,
                                                        "HIVE-1",
-                                                       "HIVE",
+                                                       
WebHCatServiceModelGenerator.SERVICE_TYPE,
                                                        "HIVE-1-WEBHCAT-1",
-                                                       "WEBHCAT",
+                                                       
WebHCatServiceModelGenerator.ROLE_TYPE,
                                                        Collections.emptyMap(),
                                                        roleProperties);
 
@@ -438,6 +455,92 @@ public class ClouderaManagerServiceDiscoveryTest {
     doTestZeppelinDiscovery("ZEPPELINWS", true);
   }
 
+  @Test
+  public void testImpalaDiscovery() {
+    doTestImpalaDiscovery(false);
+  }
+
+  @Test
+  public void testImpalaDiscoverySSL() {
+    doTestImpalaDiscovery(true);
+  }
+
+  @Test
+  public void testImpalaUIDiscoveryWebServerNotEnabled() {
+    doTestImpalaUIDiscovery(false, false);
+  }
+
+  @Test
+  public void testImpalaUIDiscovery() {
+    doTestImpalaUIDiscovery(false, true);
+  }
+
+  @Test
+  public void testImpalaUIDiscoverySSL() {
+    doTestImpalaUIDiscovery(true, true);
+  }
+
+  private void doTestImpalaDiscovery(boolean sslEnabled) {
+    final String hostName = "impalad-host";
+    final String port     = "28000";
+    final String expectedURL = (sslEnabled ? "https" : "http") + "://" + 
hostName + ":" + port + "/";
+
+    Map<String, String> serviceProperties = new HashMap<>();
+    if (sslEnabled) {
+      serviceProperties.put("client_services_ssl_enabled", "true");
+    }
+
+    // Configure the role
+    Map<String, String> roleProperties = new HashMap<>();
+    roleProperties.put("hs2_http_port", port);
+
+    ServiceDiscovery.Cluster cluster = doTestDiscovery(hostName,
+                                                       "IMPALA-1",
+                                                       
ImpalaServiceModelGenerator.SERVICE_TYPE,
+                                                       "IMAPALA-1-IMPALAD-1",
+                                                       
ImpalaServiceModelGenerator.ROLE_TYPE,
+                                                       serviceProperties,
+                                                       roleProperties);
+
+    List<String> urls = cluster.getServiceURLs("IMPALA");
+    assertEquals(1, urls.size());
+    assertEquals(expectedURL, urls.get(0));
+  }
+
+  private void doTestImpalaUIDiscovery(boolean sslEnabled, boolean 
webserverEnabled) {
+    final String hostName = "impalad-host";
+    final String port     = "25000";
+    final String expectedURL = (sslEnabled ? "https" : "http") + "://" + 
hostName + ":" + port + "/";
+
+    Map<String, String> serviceProperties = new HashMap<>();
+    if (sslEnabled) {
+      serviceProperties.put("client_services_ssl_enabled", "true");
+    }
+
+    // Configure the role
+    Map<String, String> roleProperties = new HashMap<>();
+    roleProperties.put("hs2_http_port", port);
+    if (webserverEnabled) {
+      roleProperties.put("impalad_enable_webserver", "true");
+      roleProperties.put("impalad_webserver_port", port);
+    }
+
+    ServiceDiscovery.Cluster cluster = doTestDiscovery(hostName,
+                                                       "IMPALA-1",
+                                                       
ImpalaUIServiceModelGenerator.SERVICE_TYPE,
+                                                       "IMAPALA-1-IMPALAD-1",
+                                                       
ImpalaUIServiceModelGenerator.ROLE_TYPE,
+                                                       serviceProperties,
+                                                       roleProperties);
+
+    List<String> urls = cluster.getServiceURLs("IMPALAUI");
+    if (webserverEnabled) {
+      assertEquals(1, urls.size());
+      assertEquals(expectedURL, urls.get(0));
+    } else {
+      assertEquals(0, urls.size());
+    }
+  }
 
   private void doTestOozieDiscovery(final String serviceName, final boolean 
isSSL) {
     final String hostName = "oozie-host";
@@ -467,14 +570,13 @@ public class ClouderaManagerServiceDiscoveryTest {
 
     return doTestDiscovery(hostName,
                            "OOZIE-1",
-                           "OOZIE",
+                           OozieServiceModelGenerator.SERVICE_TYPE,
                            "OOZIE-1-OOZIE_SERVER-12345",
-                           "OOZIE_SERVER",
+                           OozieServiceModelGenerator.ROLE_TYPE,
                            serviceProperties,
                            roleProperties);
   }
 
-
   private void doTestZeppelinDiscovery(final String serviceName, final boolean 
isSSL) {
     final String hostName = "zeppelin-host";
     final String port     = "8886";
@@ -517,9 +619,9 @@ public class ClouderaManagerServiceDiscoveryTest {
 
     return doTestDiscovery(hostName,
                            "ZEPPELIN-1",
-                           "ZEPPELIN",
+                           ZeppelinServiceModelGenerator.SERVICE_TYPE,
                            "ZEPPELIN-ZEPPELIN_SERVER-1",
-                           "ZEPPELIN_SERVER",
+                           ZeppelinServiceModelGenerator.ROLE_TYPE,
                            Collections.emptyMap(),
                            roleProperties);
   }
@@ -569,9 +671,9 @@ public class ClouderaManagerServiceDiscoveryTest {
 
     return doTestDiscovery(hostName,
                            "RANGER-1",
-                           "RANGER",
+                           RangerServiceModelGenerator.SERVICE_TYPE,
                            "RANGER-RANGER_ADMIN-1",
-                           "RANGER_ADMIN",
+                           RangerServiceModelGenerator.ROLE_TYPE,
                            serviceProperties,
                            roleProperties);
   }
@@ -591,9 +693,9 @@ public class ClouderaManagerServiceDiscoveryTest {
 
     return doTestDiscovery(hostName,
                            "SOLR-1",
-                           "SOLR",
+                           SolrServiceModelGenerator.SERVICE_TYPE,
                            "SOLR-SOLR_SERVER-1",
-                           "SOLR_SERVER",
+                           SolrServiceModelGenerator.ROLE_TYPE,
                            serviceProperties,
                            roleProperties);
   }
@@ -611,9 +713,9 @@ public class ClouderaManagerServiceDiscoveryTest {
 
     return doTestDiscovery(hostName,
                            "SPARK_ON_YARN-1",
-                           "SPARK_ON_YARN",
+                           SparkHistoryUIServiceModelGenerator.SERVICE_TYPE,
                            "SPAR4fcf419a-SPARK_YARN_HISTORY_SERVER-12345",
-                           "SPARK_YARN_HISTORY_SERVER",
+                           SparkHistoryUIServiceModelGenerator.ROLE_TYPE,
                            Collections.emptyMap(),
                            roleProperties);
   }
@@ -631,9 +733,9 @@ public class ClouderaManagerServiceDiscoveryTest {
 
     return doTestDiscovery(atlasHost,
                            "ATLAS-1",
-                           "ATLAS",
+                           AtlasServiceModelGenerator.SERVICE_TYPE,
                            "ATLAS-ATLAS_SERVER-1",
-                           "ATLAS_SERVER",
+                           AtlasServiceModelGenerator.ROLE_TYPE,
                            Collections.emptyMap(),
                            roleProperties);
   }
@@ -655,9 +757,9 @@ public class ClouderaManagerServiceDiscoveryTest {
 
     return doTestDiscovery(hostName,
                            "HIVE-1",
-                           "HIVE",
+                           HiveServiceModelGenerator.SERVICE_TYPE,
                            "HIVE-1-HIVESERVER2-12345",
-                           "HIVESERVER2",
+                           HiveServiceModelGenerator.ROLE_TYPE,
                            Collections.emptyMap(),
                            roleProperties);
   }
@@ -679,9 +781,9 @@ public class ClouderaManagerServiceDiscoveryTest {
 
     return doTestDiscovery(hostName,
                            "HIVE_ON_TEZ-1",
-                           "HIVE_ON_TEZ",
+                           HiveOnTezServiceModelGenerator.SERVICE_TYPE,
                            "HIVE_ON_TEZ-1-HIVESERVER2-12345",
-                           "HIVESERVER2",
+                           HiveServiceModelGenerator.ROLE_TYPE,
                            Collections.emptyMap(),
                            roleProperties);
   }
@@ -728,9 +830,9 @@ public class ClouderaManagerServiceDiscoveryTest {
 
     return doTestDiscovery(hostName,
                            "NAMENODE-1",
-                           "HDFS",
+                           NameNodeServiceModelGenerator.SERVICE_TYPE,
                            "HDFS-1-NAMENODE-12345",
-                           "NAMENODE",
+                           NameNodeServiceModelGenerator.ROLE_TYPE,
                            serviceProps,
                            roleProperties);
   }
@@ -749,9 +851,9 @@ public class ClouderaManagerServiceDiscoveryTest {
 
     return doTestDiscovery(hostName,
                            "HBASE-1",
-                           "HBASE",
+                           HBaseUIServiceModelGenerator.SERVICE_TYPE,
                            "HBASE-1-MASTER-12345",
-                           "MASTER",
+                           HBaseUIServiceModelGenerator.ROLE_TYPE,
                            serviceProps,
                            roleProperties);
   }
@@ -767,9 +869,9 @@ public class ClouderaManagerServiceDiscoveryTest {
 
     return doTestDiscovery(hostName,
                            "HBASE-1",
-                           "HBASE",
+                           WebHBaseServiceModelGenerator.SERVICE_TYPE,
                            "HBASE-1-RESTSERVER",
-                           "HBASERESTSERVER",
+                           WebHBaseServiceModelGenerator.ROLE_TYPE,
                            Collections.emptyMap(),
                            roleProperties);
   }
@@ -785,9 +887,9 @@ public class ClouderaManagerServiceDiscoveryTest {
 
     return doTestDiscovery(hostName,
                            "LIVY-1",
-                           "LIVY",
+                           LivyServiceModelGenerator.SERVICE_TYPE,
                            "LIVY-LIVY_SERVER-1",
-                           "LIVY_SERVER",
+                           LivyServiceModelGenerator.ROLE_TYPE,
                            Collections.emptyMap(),
                            roleProperties);
   }
@@ -801,8 +903,13 @@ public class ClouderaManagerServiceDiscoveryTest {
       roleProperties.put("phoenix_query_server_port", port);
       roleProperties.put("ssl_enabled", String.valueOf(isSSL));
 
-      return doTestDiscovery(hostName, "PHOENIX-1", "PHOENIX", 
"PHOENIX-PHOENIX_QUERY_SERVER-1", "PHOENIX_QUERY_SERVER", 
Collections.emptyMap(),
-              roleProperties);
+      return doTestDiscovery(hostName,
+                             "PHOENIX-1",
+                             PhoenixServiceModelGenerator.SERVICE_TYPE,
+                             "PHOENIX-PHOENIX_QUERY_SERVER-1",
+                             PhoenixServiceModelGenerator.ROLE_TYPE,
+                             Collections.emptyMap(),
+                             roleProperties);
   }
 
 

Reply via email to