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 3be8d5d KNOX-1949 - CM discovery - Improve efficiency of discovery
3be8d5d is described below
commit 3be8d5d0642f957601f70ffd8180f0fd3fa64a49
Author: pzampino <[email protected]>
AuthorDate: Wed Jul 24 13:57:50 2019 -0400
KNOX-1949 - CM discovery - Improve efficiency of discovery
---
.../cm/ClouderaManagerServiceDiscovery.java | 26 +-
.../discovery/cm/ServiceModelGenerator.java | 17 +
.../cm/model/AbstractServiceModelGenerator.java | 5 +
.../model/atlas/AtlasAPIServiceModelGenerator.java | 19 +-
.../cm/model/atlas/AtlasServiceModelGenerator.java | 26 +-
.../model/hbase/HBaseUIServiceModelGenerator.java | 28 +-
.../model/hbase/WebHBaseServiceModelGenerator.java | 26 +-
.../cm/model/hdfs/HdfsUIServiceModelGenerator.java | 12 +-
.../model/hdfs/NameNodeServiceModelGenerator.java | 24 +-
.../model/hdfs/WebHdfsServiceModelGenerator.java | 12 +-
.../cm/model/hive/HiveServiceModelGenerator.java | 26 +-
.../cm/model/hue/HueLBServiceModelGenerator.java | 26 +-
.../cm/model/hue/HueServiceModelGenerator.java | 26 +-
.../cm/model/livy/LivyServiceModelGenerator.java | 26 +-
.../cm/model/livy/LivyUIServiceModelGenerator.java | 39 --
.../cm/model/oozie/OozieServiceModelGenerator.java | 26 +-
.../model/oozie/OozieUIServiceModelGenerator.java | 17 +-
.../model/ranger/RangerServiceModelGenerator.java | 26 +-
.../ranger/RangerUIServiceModelGenerator.java | 16 +-
.../cm/model/solr/SolrServiceModelGenerator.java | 26 +-
.../spark/SparkHistoryUIServiceModelGenerator.java | 26 +-
.../yarn/JobHistoryUIServiceModelGenerator.java | 26 +-
.../ResourceManagerUIServiceModelGenerator.java | 19 +-
.../cm/model/yarn/YarnUIServiceModelGenerator.java | 34 +-
.../model/yarn/YarnUIv2ServiceModelGenerator.java | 15 +-
.../zeppelin/ZeppelinServiceModelGenerator.java | 46 +-
.../zeppelin/ZeppelinUIServiceModelGenerator.java | 13 +-
.../zeppelin/ZeppelinWSServiceModelGenerator.java | 21 +-
...way.topology.discovery.cm.ServiceModelGenerator | 1 -
.../cm/ClouderaManagerServiceDiscoveryTest.java | 629 ++++++++++++++++++---
30 files changed, 1007 insertions(+), 272 deletions(-)
diff --git
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/ClouderaManagerServiceDiscovery.java
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/ClouderaManagerServiceDiscovery.java
index 6b53095..0a7ba47 100644
---
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/ClouderaManagerServiceDiscovery.java
+++
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/ClouderaManagerServiceDiscovery.java
@@ -63,6 +63,16 @@ public class ClouderaManagerServiceDiscovery implements
ServiceDiscovery {
static final String DEFAULT_USER_ALIAS = "cm.discovery.user";
static final String DEFAULT_PWD_ALIAS = "cm.discovery.password";
+ private static Map<String, List<ServiceModelGenerator>>
serviceModelGenerators = new HashMap<>();
+ static {
+ ServiceLoader<ServiceModelGenerator> loader =
ServiceLoader.load(ServiceModelGenerator.class);
+ for (ServiceModelGenerator serviceModelGenerator : loader) {
+ List<ServiceModelGenerator> smgList =
+
serviceModelGenerators.computeIfAbsent(serviceModelGenerator.getServiceType(),
k -> new ArrayList<>());
+ smgList.add(serviceModelGenerator);
+ }
+ }
+
private boolean debug;
@GatewayService
@@ -162,7 +172,6 @@ public class ClouderaManagerServiceDiscovery implements
ServiceDiscovery {
cluster = new ClouderaManagerCluster(clusterName);
Set<ServiceModel> serviceModels = new HashSet<>();
- ServiceLoader<ServiceModelGenerator> loader =
ServiceLoader.load(ServiceModelGenerator.class);
ApiServiceList serviceList = getClusterServices(servicesResourceApi,
clusterName);
if (serviceList != null) {
@@ -179,11 +188,16 @@ public class ClouderaManagerServiceDiscovery implements
ServiceDiscovery {
ApiConfigList roleConfig =
getRoleConfig(rolesResourceApi, clusterName, serviceName,
roleName);
- for (ServiceModelGenerator serviceModelGenerator : loader) {
- if (serviceModelGenerator.handles(service, serviceConfig, role,
roleConfig)) {
- serviceModelGenerator.setApiClient(client);
- ServiceModel serviceModel =
serviceModelGenerator.generateService(service, serviceConfig, role, roleConfig);
- serviceModels.add(serviceModel);
+ List<ServiceModelGenerator> smgList =
serviceModelGenerators.get(service.getType());
+ if (smgList != null) {
+ for (ServiceModelGenerator serviceModelGenerator : smgList) {
+ if (serviceModelGenerator != null) {
+ if (serviceModelGenerator.handles(service, serviceConfig,
role, roleConfig)) {
+ serviceModelGenerator.setApiClient(client);
+ ServiceModel serviceModel =
serviceModelGenerator.generateService(service, serviceConfig, role, roleConfig);
+ serviceModels.add(serviceModel);
+ }
+ }
}
}
}
diff --git
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/ServiceModelGenerator.java
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/ServiceModelGenerator.java
index 6c0cdc8..6249174 100644
---
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/ServiceModelGenerator.java
+++
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/ServiceModelGenerator.java
@@ -24,6 +24,23 @@ import com.cloudera.api.swagger.model.ApiServiceConfig;
public interface ServiceModelGenerator {
+ /**
+ * @return The name of the Knox service for which the implementation will
generate a model.
+ */
+ String getService();
+
+ /**
+ * @return The Cloudera Manager configuration service type.
+ */
+ String getServiceType();
+
+ /**
+ * @return The Cloudera Manager configuration role type.
+ */
+ String getRoleType();
+
+ ServiceModel.Type getModelType();
+
void setApiClient(DiscoveryApiClient client);
boolean handles(ApiService service,
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 e4badc9..95d1bfd 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
@@ -21,6 +21,7 @@ import com.cloudera.api.swagger.model.ApiConfig;
import com.cloudera.api.swagger.model.ApiConfigList;
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;
import org.apache.knox.gateway.topology.discovery.cm.ServiceModelGenerator;
import java.util.List;
@@ -73,4 +74,8 @@ public abstract class AbstractServiceModelGenerator
implements ServiceModelGener
return val;
}
+ protected ServiceModel createServiceModel(final String url) {
+ return new ServiceModel(getModelType(), getService(), url);
+ }
+
}
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 32edd66..d4ae063 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
@@ -16,24 +16,19 @@
*/
package org.apache.knox.gateway.topology.discovery.cm.model.atlas;
-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;
-import com.cloudera.api.swagger.model.ApiServiceConfig;
import org.apache.knox.gateway.topology.discovery.cm.ServiceModel;
public class AtlasAPIServiceModelGenerator extends AtlasServiceModelGenerator {
private static final String SERVICE = "ATLAS-API";
@Override
- public ServiceModel generateService(ApiService service,
- ApiServiceConfig serviceConfig,
- ApiRole role,
- ApiConfigList roleConfig) throws
ApiException {
- return new ServiceModel(ServiceModel.Type.API,
- SERVICE,
- super.generateService(service, serviceConfig, role,
roleConfig).getServiceUrl());
+ public String getService() {
+ return SERVICE;
+ }
+
+ @Override
+ public ServiceModel.Type getModelType() {
+ return ServiceModel.Type.API;
}
}
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 3888d2e..415a9c8 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
@@ -32,8 +32,28 @@ public class AtlasServiceModelGenerator extends
AbstractServiceModelGenerator {
private static final String ROLE_TYPE = "ATLAS_SERVER";
@Override
+ public String getService() {
+ return SERVICE;
+ }
+
+ @Override
+ public String getServiceType() {
+ return SERVICE_TYPE;
+ }
+
+ @Override
+ public String getRoleType() {
+ return ROLE_TYPE;
+ }
+
+ @Override
+ public ServiceModel.Type getModelType() {
+ return ServiceModel.Type.UI;
+ }
+
+ @Override
public boolean handles(ApiService service, ApiServiceConfig serviceConfig,
ApiRole role, ApiConfigList roleConfig) {
- return SERVICE_TYPE.equals(service.getType()) &&
ROLE_TYPE.equals(role.getType());
+ return getServiceType().equals(service.getType()) &&
getRoleType().equals(role.getType());
}
@Override
@@ -52,8 +72,8 @@ public class AtlasServiceModelGenerator extends
AbstractServiceModelGenerator {
scheme = "http";
port = getRoleConfigValue(roleConfig, "atlas_server_http_port");
}
- return new ServiceModel(ServiceModel.Type.UI,
- SERVICE,
+ return new ServiceModel(getModelType(),
+ getService(),
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/hbase/HBaseUIServiceModelGenerator.java
index 59fbf7d..55e631f 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
@@ -32,8 +32,28 @@ public class HBaseUIServiceModelGenerator extends
AbstractServiceModelGenerator
private static final String ROLE_TYPE = "MASTER";
@Override
+ public String getService() {
+ return SERVICE;
+ }
+
+ @Override
+ public String getServiceType() {
+ return SERVICE_TYPE;
+ }
+
+ @Override
+ public String getRoleType() {
+ return ROLE_TYPE;
+ }
+
+ @Override
+ public ServiceModel.Type getModelType() {
+ return ServiceModel.Type.UI;
+ }
+
+ @Override
public boolean handles(ApiService service, ApiServiceConfig serviceConfig,
ApiRole role, ApiConfigList roleConfig) {
- return SERVICE_TYPE.equals(service.getType()) &&
ROLE_TYPE.equals(role.getType());
+ return getServiceType().equals(service.getType()) &&
getRoleType().equals(role.getType());
}
@Override
@@ -43,16 +63,14 @@ public class HBaseUIServiceModelGenerator extends
AbstractServiceModelGenerator
ApiConfigList roleConfig) {
String hostname = role.getHostRef().getHostname();
String scheme;
- String port = getRoleConfigValue(roleConfig, "hbase_master_info_port");
+ 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 new ServiceModel(ServiceModel.Type.UI,
- SERVICE,
- String.format(Locale.getDefault(), "%s://%s:%s",
scheme, hostname, 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/WebHBaseServiceModelGenerator.java
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hbase/WebHBaseServiceModelGenerator.java
index c47babd..f38d7a5 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
@@ -32,8 +32,28 @@ public class WebHBaseServiceModelGenerator extends
AbstractServiceModelGenerator
private static final String ROLE_TYPE = "HBASERESTSERVER";
@Override
+ public String getService() {
+ return SERVICE;
+ }
+
+ @Override
+ public String getServiceType() {
+ return SERVICE_TYPE;
+ }
+
+ @Override
+ public String getRoleType() {
+ return ROLE_TYPE;
+ }
+
+ @Override
+ public ServiceModel.Type getModelType() {
+ return ServiceModel.Type.API;
+ }
+
+ @Override
public boolean handles(ApiService service, ApiServiceConfig serviceConfig,
ApiRole role, ApiConfigList roleConfig) {
- return SERVICE_TYPE.equals(service.getType()) &&
ROLE_TYPE.equals(role.getType());
+ return getServiceType().equals(service.getType()) &&
getRoleType().equals(role.getType());
}
@Override
@@ -50,9 +70,7 @@ public class WebHBaseServiceModelGenerator extends
AbstractServiceModelGenerator
} else {
scheme = "http";
}
- return new ServiceModel(ServiceModel.Type.API,
- SERVICE,
- String.format(Locale.getDefault(), "%s://%s:%s",
scheme, hostname, 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/hdfs/HdfsUIServiceModelGenerator.java
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/HdfsUIServiceModelGenerator.java
index 522f958..19d74b0 100644
---
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/HdfsUIServiceModelGenerator.java
+++
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/HdfsUIServiceModelGenerator.java
@@ -29,6 +29,16 @@ public class HdfsUIServiceModelGenerator extends
NameNodeServiceModelGenerator {
private static final String SERVICE = "HDFSUI";
@Override
+ public String getService() {
+ return SERVICE;
+ }
+
+ @Override
+ public ServiceModel.Type getModelType() {
+ return ServiceModel.Type.UI;
+ }
+
+ @Override
public ServiceModel generateService(ApiService service,
ApiServiceConfig serviceConfig,
ApiRole role,
@@ -45,7 +55,7 @@ public class HdfsUIServiceModelGenerator extends
NameNodeServiceModelGenerator {
port = getRoleConfigValue(roleConfig, "dfs_http_port");
}
String namenodeUrl = String.format(Locale.getDefault(), "%s://%s:%s",
scheme, hostname, port);
- return new ServiceModel(ServiceModel.Type.UI, SERVICE, namenodeUrl);
+ return createServiceModel(namenodeUrl);
}
}
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 230a1f3..075c94e 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
@@ -32,11 +32,31 @@ public class NameNodeServiceModelGenerator extends
AbstractServiceModelGenerator
private static final String ROLE_TYPE = "NAMENODE";
@Override
+ public String getServiceType() {
+ return SERVICE_TYPE;
+ }
+
+ @Override
+ public String getService() {
+ return SERVICE;
+ }
+
+ @Override
+ public String getRoleType() {
+ return ROLE_TYPE;
+ }
+
+ @Override
+ public ServiceModel.Type getModelType() {
+ return ServiceModel.Type.API;
+ }
+
+ @Override
public boolean handles(ApiService service,
ApiServiceConfig serviceConfig,
ApiRole role,
ApiConfigList roleConfig) {
- return SERVICE_TYPE.equals(service.getType()) &&
ROLE_TYPE.equals(role.getType());
+ return getServiceType().equals(service.getType()) &&
getRoleType().equals(role.getType());
}
@Override
@@ -54,7 +74,7 @@ public class NameNodeServiceModelGenerator extends
AbstractServiceModelGenerator
String port = getRoleConfigValue(roleConfig, "namenode_port");
serviceUrl = String.format(Locale.getDefault(), "hdfs://%s:%s",
hostname, port);
}
- return new ServiceModel(ServiceModel.Type.API, SERVICE, serviceUrl);
+ return createServiceModel(serviceUrl);
}
}
diff --git
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/WebHdfsServiceModelGenerator.java
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/WebHdfsServiceModelGenerator.java
index 469ac39..62909ec 100644
---
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/WebHdfsServiceModelGenerator.java
+++
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/WebHdfsServiceModelGenerator.java
@@ -28,6 +28,16 @@ public class WebHdfsServiceModelGenerator extends
HdfsUIServiceModelGenerator {
private static final String WEBHDFS_SUFFIX = "/webhdfs";
@Override
+ public String getService() {
+ return SERVICE;
+ }
+
+ @Override
+ public ServiceModel.Type getModelType() {
+ return ServiceModel.Type.API;
+ }
+
+ @Override
public boolean handles(ApiService service,
ApiServiceConfig serviceConfig,
ApiRole role,
@@ -43,7 +53,7 @@ public class WebHdfsServiceModelGenerator extends
HdfsUIServiceModelGenerator {
ApiConfigList roleConfig) throws
ApiException {
String serviceUrl =
super.generateService(service, serviceConfig, role,
roleConfig).getServiceUrl() + WEBHDFS_SUFFIX;
- return new ServiceModel(ServiceModel.Type.API, SERVICE, serviceUrl);
+ return createServiceModel(serviceUrl);
}
}
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 f01ff02..7cb787d 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
@@ -33,8 +33,28 @@ public class HiveServiceModelGenerator extends
AbstractServiceModelGenerator {
private static final String ROLE_TYPE = "HIVESERVER2";
@Override
+ public String getService() {
+ return SERVICE;
+ }
+
+ @Override
+ public String getServiceType() {
+ return SERVICE_TYPE;
+ }
+
+ @Override
+ public String getRoleType() {
+ return ROLE_TYPE;
+ }
+
+ @Override
+ public ServiceModel.Type getModelType() {
+ return ServiceModel.Type.API;
+ }
+
+ @Override
public boolean handles(ApiService service, ApiServiceConfig serviceConfig,
ApiRole role, ApiConfigList roleConfig) {
- return SERVICE_TYPE.equals(service.getType()) &&
ROLE_TYPE.equals(role.getType()) && checkHiveServer2HTTPMode(roleConfig);
+ return getServiceType().equals(service.getType()) &&
getRoleType().equals(role.getType()) && checkHiveServer2HTTPMode(roleConfig);
}
@Override
@@ -48,9 +68,7 @@ public class HiveServiceModelGenerator extends
AbstractServiceModelGenerator {
String httpPath = getSafetyValveValue(hs2SafetyValve,
"hive.server2.thrift.http.path");
boolean sslEnabled = Boolean.parseBoolean(getRoleConfigValue(roleConfig,
"hive.server2.use.SSL"));
String scheme = sslEnabled ? "https" : "http";
- return new ServiceModel(ServiceModel.Type.API,
- SERVICE,
- String.format(Locale.getDefault(),
"%s://%s:%s/%s", scheme, hostname, port, httpPath));
+ return createServiceModel(String.format(Locale.getDefault(),
"%s://%s:%s/%s", scheme, hostname, port, httpPath));
}
private boolean checkHiveServer2HTTPMode(ApiConfigList roleConfig) {
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 63eb0b6..19a4647 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
@@ -32,8 +32,28 @@ public class HueLBServiceModelGenerator extends
AbstractServiceModelGenerator {
private static final String ROLE_TYPE = "HUE_LOAD_BALANCER";
@Override
+ public String getService() {
+ return SERVICE;
+ }
+
+ @Override
+ public String getServiceType() {
+ return SERVICE_TYPE;
+ }
+
+ @Override
+ public String getRoleType() {
+ return ROLE_TYPE;
+ }
+
+ @Override
+ public ServiceModel.Type getModelType() {
+ return ServiceModel.Type.UI;
+ }
+
+ @Override
public boolean handles(ApiService service, ApiServiceConfig serviceConfig,
ApiRole role, ApiConfigList roleConfig) {
- return SERVICE_TYPE.equals(service.getType()) &&
ROLE_TYPE.equals(role.getType());
+ return getServiceType().equals(service.getType()) &&
getRoleType().equals(role.getType());
}
@Override
@@ -44,9 +64,7 @@ public class HueLBServiceModelGenerator extends
AbstractServiceModelGenerator {
String hostname = role.getHostRef().getHostname();
String scheme = "http";
String port = getRoleConfigValue(roleConfig, "listen");
- return new ServiceModel(ServiceModel.Type.UI,
- SERVICE,
- String.format(Locale.getDefault(), "%s://%s:%s",
scheme, hostname, 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/hue/HueServiceModelGenerator.java
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hue/HueServiceModelGenerator.java
index 12e4eb3..adf70fa 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
@@ -32,8 +32,28 @@ public class HueServiceModelGenerator extends
AbstractServiceModelGenerator {
private static final String ROLE_TYPE = "HUE_SERVER";
@Override
+ public String getService() {
+ return SERVICE;
+ }
+
+ @Override
+ public String getServiceType() {
+ return SERVICE_TYPE;
+ }
+
+ @Override
+ public String getRoleType() {
+ return ROLE_TYPE;
+ }
+
+ @Override
+ public ServiceModel.Type getModelType() {
+ return ServiceModel.Type.UI;
+ }
+
+ @Override
public boolean handles(ApiService service, ApiServiceConfig serviceConfig,
ApiRole role, ApiConfigList roleConfig) {
- return SERVICE_TYPE.equals(service.getType()) &&
ROLE_TYPE.equals(role.getType());
+ return getServiceType().equals(service.getType()) &&
getRoleType().equals(role.getType());
}
@Override
@@ -50,9 +70,7 @@ public class HueServiceModelGenerator extends
AbstractServiceModelGenerator {
} else {
scheme = "http";
}
- return new ServiceModel(ServiceModel.Type.UI,
- SERVICE,
- String.format(Locale.getDefault(), "%s://%s:%s",
scheme, hostname, 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 48c3f9d..99b4b7b 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
@@ -32,8 +32,28 @@ public class LivyServiceModelGenerator extends
AbstractServiceModelGenerator {
private static final String ROLE_TYPE = "LIVY_SERVER";
@Override
+ public String getService() {
+ return SERVICE;
+ }
+
+ @Override
+ public String getServiceType() {
+ return SERVICE_TYPE;
+ }
+
+ @Override
+ public String getRoleType() {
+ return ROLE_TYPE;
+ }
+
+ @Override
+ public ServiceModel.Type getModelType() {
+ return ServiceModel.Type.API;
+ }
+
+ @Override
public boolean handles(ApiService service, ApiServiceConfig serviceConfig,
ApiRole role, ApiConfigList roleConfig) {
- return SERVICE_TYPE.equals(service.getType()) &&
ROLE_TYPE.equals(role.getType());
+ return getServiceType().equals(service.getType()) &&
getRoleType().equals(role.getType());
}
@Override
@@ -50,9 +70,7 @@ public class LivyServiceModelGenerator extends
AbstractServiceModelGenerator {
} else {
scheme = "http";
}
- return new ServiceModel(ServiceModel.Type.API,
- SERVICE,
- String.format(Locale.getDefault(), "%s://%s:%s",
scheme, hostname, 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/LivyUIServiceModelGenerator.java
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/livy/LivyUIServiceModelGenerator.java
deleted file mode 100644
index 3c8160a..0000000
---
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/livy/LivyUIServiceModelGenerator.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with this
- * work for additional information regarding copyright ownership. The ASF
- * licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
under
- * the License.
- */
-package org.apache.knox.gateway.topology.discovery.cm.model.livy;
-
-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.ServiceModel;
-
-public class LivyUIServiceModelGenerator extends LivyServiceModelGenerator {
-
- private static final String SERVICE = "LIVYSERVER";
-
- @Override
- public ServiceModel generateService(ApiService service,
- ApiServiceConfig serviceConfig,
- ApiRole role,
- ApiConfigList roleConfig) {
- String serviceUrl = super.generateService(service, serviceConfig, role,
roleConfig).getServiceUrl();
- return new ServiceModel(ServiceModel.Type.UI, SERVICE, serviceUrl);
- }
-
-
-}
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 d31c020..17a1c1f 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
@@ -32,8 +32,28 @@ public class OozieServiceModelGenerator extends
AbstractServiceModelGenerator {
private static final String ROLE_TYPE = "OOZIE_SERVER";
@Override
+ public String getService() {
+ return SERVICE;
+ }
+
+ @Override
+ public String getServiceType() {
+ return SERVICE_TYPE;
+ }
+
+ @Override
+ public String getRoleType() {
+ return ROLE_TYPE;
+ }
+
+ @Override
+ public ServiceModel.Type getModelType() {
+ return ServiceModel.Type.API;
+ }
+
+ @Override
public boolean handles(ApiService service, ApiServiceConfig serviceConfig,
ApiRole role, ApiConfigList roleConfig) {
- return SERVICE_TYPE.equals(service.getType()) &&
ROLE_TYPE.equals(role.getType());
+ return getServiceType().equals(service.getType()) &&
getRoleType().equals(role.getType());
}
@Override
@@ -52,9 +72,7 @@ public class OozieServiceModelGenerator extends
AbstractServiceModelGenerator {
scheme = "http";
port = getRoleConfigValue(roleConfig, "oozie_http_port");
}
- return new ServiceModel(ServiceModel.Type.API,
- SERVICE,
- String.format(Locale.getDefault(),
"%s://%s:%s/oozie/", scheme, hostname, port));
+ return createServiceModel(String.format(Locale.getDefault(),
"%s://%s:%s/oozie/", scheme, hostname, port));
}
}
diff --git
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/oozie/OozieUIServiceModelGenerator.java
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/oozie/OozieUIServiceModelGenerator.java
index d5d8b27..e07c586 100644
---
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/oozie/OozieUIServiceModelGenerator.java
+++
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/oozie/OozieUIServiceModelGenerator.java
@@ -16,24 +16,19 @@
*/
package org.apache.knox.gateway.topology.discovery.cm.model.oozie;
-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.ServiceModel;
public class OozieUIServiceModelGenerator extends OozieServiceModelGenerator {
private static final String SERVICE = "OOZIEUI";
@Override
- public ServiceModel generateService(ApiService service,
- ApiServiceConfig serviceConfig,
- ApiRole role,
- ApiConfigList roleConfig) {
- return new ServiceModel(ServiceModel.Type.UI,
- SERVICE,
- super.generateService(service, serviceConfig,
role, roleConfig).getServiceUrl());
+ public String getService() {
+ return SERVICE;
}
+ @Override
+ public ServiceModel.Type getModelType() {
+ return ServiceModel.Type.UI;
+ }
}
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 f39f707..edb9621 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
@@ -31,8 +31,28 @@ public class RangerServiceModelGenerator extends
AbstractServiceModelGenerator {
private static final String ROLE_TYPE = "RANGER_ADMIN";
@Override
+ public String getService() {
+ return SERVICE;
+ }
+
+ @Override
+ public String getServiceType() {
+ return SERVICE_TYPE;
+ }
+
+ @Override
+ public String getRoleType() {
+ return ROLE_TYPE;
+ }
+
+ @Override
+ public ServiceModel.Type getModelType() {
+ return ServiceModel.Type.API;
+ }
+
+ @Override
public boolean handles(ApiService service, ApiServiceConfig serviceConfig,
ApiRole role, ApiConfigList roleConfig) {
- return SERVICE_TYPE.equals(service.getType()) &&
ROLE_TYPE.equals(role.getType());
+ return getServiceType().equals(service.getType()) &&
getRoleType().equals(role.getType());
}
@Override
@@ -51,9 +71,7 @@ public class RangerServiceModelGenerator extends
AbstractServiceModelGenerator {
scheme = "http";
port = getServiceConfigValue(serviceConfig, "ranger_service_http_port");
}
- return new ServiceModel(ServiceModel.Type.API,
- SERVICE,
- String.format(Locale.getDefault(), "%s://%s:%s",
scheme, hostname, 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/ranger/RangerUIServiceModelGenerator.java
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/ranger/RangerUIServiceModelGenerator.java
index 5ffd097..d1ef9b3 100644
---
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/ranger/RangerUIServiceModelGenerator.java
+++
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/ranger/RangerUIServiceModelGenerator.java
@@ -16,23 +16,19 @@
*/
package org.apache.knox.gateway.topology.discovery.cm.model.ranger;
-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.ServiceModel;
public class RangerUIServiceModelGenerator extends RangerServiceModelGenerator
{
private static final String SERVICE = "RANGERUI";
@Override
- public ServiceModel generateService(ApiService service,
- ApiServiceConfig serviceConfig,
- ApiRole role,
- ApiConfigList roleConfig) {
- String serviceUrl = super.generateService(service, serviceConfig, role,
roleConfig).getServiceUrl();
- return new ServiceModel(ServiceModel.Type.UI, SERVICE, serviceUrl);
+ public String getService() {
+ return SERVICE;
}
+ @Override
+ public ServiceModel.Type getModelType() {
+ return ServiceModel.Type.UI;
+ }
}
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 bc6472b..7f19653 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
@@ -31,8 +31,28 @@ public class SolrServiceModelGenerator extends
AbstractServiceModelGenerator {
private static final String ROLE_TYPE = "SOLR_SERVER";
@Override
+ public String getService() {
+ return SERVICE;
+ }
+
+ @Override
+ public String getServiceType() {
+ return SERVICE_TYPE;
+ }
+
+ @Override
+ public String getRoleType() {
+ return ROLE_TYPE;
+ }
+
+ @Override
+ public ServiceModel.Type getModelType() {
+ return ServiceModel.Type.API;
+ }
+
+ @Override
public boolean handles(ApiService service, ApiServiceConfig serviceConfig,
ApiRole role, ApiConfigList roleConfig) {
- return SERVICE_TYPE.equals(service.getType()) &&
ROLE_TYPE.equals(role.getType());
+ return getServiceType().equals(service.getType()) &&
getRoleType().equals(role.getType());
}
@Override
@@ -51,9 +71,7 @@ public class SolrServiceModelGenerator extends
AbstractServiceModelGenerator {
scheme = "http";
port = getRoleConfigValue(roleConfig, "solr_http_port");
}
- return new ServiceModel(ServiceModel.Type.API,
- SERVICE,
- String.format(Locale.getDefault(),
"%s://%s:%s/solr/", scheme, hostname, port));
+ return createServiceModel(String.format(Locale.getDefault(),
"%s://%s:%s/solr/", scheme, hostname, port));
}
}
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 62b122c..89d9d41 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
@@ -31,8 +31,28 @@ public class SparkHistoryUIServiceModelGenerator extends
AbstractServiceModelGen
private static final String ROLE_TYPE = "SPARK_YARN_HISTORY_SERVER";
@Override
+ public String getService() {
+ return SERVICE;
+ }
+
+ @Override
+ public String getServiceType() {
+ return SERVICE_TYPE;
+ }
+
+ @Override
+ public String getRoleType() {
+ return ROLE_TYPE;
+ }
+
+ @Override
+ public ServiceModel.Type getModelType() {
+ return ServiceModel.Type.UI;
+ }
+
+ @Override
public boolean handles(ApiService service, ApiServiceConfig serviceConfig,
ApiRole role, ApiConfigList roleConfig) {
- return SERVICE_TYPE.equals(service.getType()) &&
ROLE_TYPE.equals(role.getType());
+ return getServiceType().equals(service.getType()) &&
getRoleType().equals(role.getType());
}
@Override
@@ -51,9 +71,7 @@ public class SparkHistoryUIServiceModelGenerator extends
AbstractServiceModelGen
scheme = "http";
port = getRoleConfigValue(roleConfig, "history_server_web_port");
}
- return new ServiceModel(ServiceModel.Type.UI,
- SERVICE,
- String.format(Locale.getDefault(), "%s://%s:%s",
scheme, hostname, 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/yarn/JobHistoryUIServiceModelGenerator.java
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/yarn/JobHistoryUIServiceModelGenerator.java
index b9f5609..5dfdeab 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
@@ -33,8 +33,28 @@ public class JobHistoryUIServiceModelGenerator extends
AbstractServiceModelGener
private static final String ROLE_TYPE = "JOBHISTORY";
@Override
+ public String getService() {
+ return SERVICE;
+ }
+
+ @Override
+ public String getServiceType() {
+ return SERVICE_TYPE;
+ }
+
+ @Override
+ public String getRoleType() {
+ return ROLE_TYPE;
+ }
+
+ @Override
+ public ServiceModel.Type getModelType() {
+ return ServiceModel.Type.UI;
+ }
+
+ @Override
public boolean handles(ApiService service, ApiServiceConfig serviceConfig,
ApiRole role, ApiConfigList roleConfig) {
- return SERVICE_TYPE.equals(service.getType()) &&
ROLE_TYPE.equals(role.getType());
+ return getServiceType().equals(service.getType()) &&
getRoleType().equals(role.getType());
}
@Override
@@ -53,9 +73,7 @@ public class JobHistoryUIServiceModelGenerator extends
AbstractServiceModelGener
scheme = "http";
port = getRoleConfigValue(roleConfig,
"mapreduce_jobhistory_webapp_address");
}
- return new ServiceModel(ServiceModel.Type.UI,
- SERVICE,
- String.format(Locale.getDefault(), "%s://%s:%s",
scheme, hostname, port));
+ return createServiceModel(String.format(Locale.getDefault(), "%s://%s:%s",
scheme, hostname, port));
}
private boolean isSSLEnabled(ApiService service, ApiServiceConfig
serviceConfig)
diff --git
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/yarn/ResourceManagerUIServiceModelGenerator.java
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/yarn/ResourceManagerUIServiceModelGenerator.java
index 6954045..e05b80d 100644
---
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/yarn/ResourceManagerUIServiceModelGenerator.java
+++
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/yarn/ResourceManagerUIServiceModelGenerator.java
@@ -28,13 +28,20 @@ public class ResourceManagerUIServiceModelGenerator extends
YarnUIServiceModelGe
private static final String RM_WS_SUFFIX = "/ws";
@Override
- public ServiceModel generateService(ApiService service,
- ApiServiceConfig serviceConfig,
- ApiRole role,
- ApiConfigList roleConfig) throws
ApiException {
- String url = super.generateService(service, serviceConfig, role,
roleConfig).getServiceUrl() + RM_WS_SUFFIX;
- return new ServiceModel(ServiceModel.Type.API, SERVICE, url);
+ public String getService() {
+ return SERVICE;
}
+ @Override
+ public ServiceModel.Type getModelType() {
+ return ServiceModel.Type.API;
+ }
+ @Override
+ protected String generateURL(ApiService service,
+ ApiServiceConfig serviceConfig,
+ ApiRole role,
+ ApiConfigList roleConfig) throws
ApiException {
+ return (super.generateURL(service, serviceConfig, role, roleConfig) +
RM_WS_SUFFIX);
+ }
}
diff --git
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/yarn/YarnUIServiceModelGenerator.java
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/yarn/YarnUIServiceModelGenerator.java
index 25136cb..3f060c1 100644
---
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/yarn/YarnUIServiceModelGenerator.java
+++
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/yarn/YarnUIServiceModelGenerator.java
@@ -33,8 +33,28 @@ public class YarnUIServiceModelGenerator extends
AbstractServiceModelGenerator {
private static final String ROLE_TYPE = "RESOURCEMANAGER";
@Override
+ public String getService() {
+ return SERVICE;
+ }
+
+ @Override
+ public String getServiceType() {
+ return SERVICE_TYPE;
+ }
+
+ @Override
+ public String getRoleType() {
+ return ROLE_TYPE;
+ }
+
+ @Override
+ public ServiceModel.Type getModelType() {
+ return ServiceModel.Type.UI;
+ }
+
+ @Override
public boolean handles(ApiService service, ApiServiceConfig serviceConfig,
ApiRole role, ApiConfigList roleConfig) {
- return SERVICE_TYPE.equals(service.getType()) &&
ROLE_TYPE.equals(role.getType());
+ return getServiceType().equals(service.getType()) &&
getRoleType().equals(role.getType());
}
@Override
@@ -42,6 +62,14 @@ public class YarnUIServiceModelGenerator extends
AbstractServiceModelGenerator {
ApiServiceConfig serviceConfig,
ApiRole role,
ApiConfigList roleConfig) throws
ApiException {
+ return createServiceModel(generateURL(service, serviceConfig, role,
roleConfig));
+ }
+
+ protected String generateURL(ApiService service,
+ ApiServiceConfig serviceConfig,
+ ApiRole role,
+ ApiConfigList roleConfig) throws
ApiException {
+
String hostname = role.getHostRef().getHostname();
String scheme;
String port;
@@ -53,9 +81,7 @@ public class YarnUIServiceModelGenerator extends
AbstractServiceModelGenerator {
scheme = "http";
port = getRoleConfigValue(roleConfig, "resourcemanager_webserver_port");
}
- return new ServiceModel(ServiceModel.Type.UI,
- SERVICE,
- String.format(Locale.getDefault(), "%s://%s:%s",
scheme, hostname, port));
+ return String.format(Locale.getDefault(), "%s://%s:%s", scheme, hostname,
port);
}
private boolean isSSLEnabled(ApiService service, ApiServiceConfig
serviceConfig)
diff --git
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/yarn/YarnUIv2ServiceModelGenerator.java
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/yarn/YarnUIv2ServiceModelGenerator.java
index b71a7fe..101737d 100644
---
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/yarn/YarnUIv2ServiceModelGenerator.java
+++
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/yarn/YarnUIv2ServiceModelGenerator.java
@@ -16,23 +16,12 @@
*/
package org.apache.knox.gateway.topology.discovery.cm.model.yarn;
-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;
-import com.cloudera.api.swagger.model.ApiServiceConfig;
-import org.apache.knox.gateway.topology.discovery.cm.ServiceModel;
-
public class YarnUIv2ServiceModelGenerator extends YarnUIServiceModelGenerator
{
private static final String SERVICE = "YARNUIV2";
@Override
- public ServiceModel generateService(ApiService service,
- ApiServiceConfig serviceConfig,
- ApiRole role,
- ApiConfigList roleConfig) throws
ApiException {
- String serviceUrl = super.generateService(service, serviceConfig, role,
roleConfig).getServiceUrl();
- return new ServiceModel(ServiceModel.Type.UI, SERVICE, serviceUrl);
+ public String getService() {
+ return SERVICE;
}
}
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 b6a4f9e..bd0789b 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
@@ -32,8 +32,28 @@ public class ZeppelinServiceModelGenerator extends
AbstractServiceModelGenerator
protected static final String ROLE_TYPE = "ZEPPELIN_SERVER";
@Override
+ public String getService() {
+ return SERVICE;
+ }
+
+ @Override
+ public String getServiceType() {
+ return SERVICE_TYPE;
+ }
+
+ @Override
+ public String getRoleType() {
+ return ROLE_TYPE;
+ }
+
+ @Override
+ public ServiceModel.Type getModelType() {
+ return ServiceModel.Type.UI;
+ }
+
+ @Override
public boolean handles(ApiService service, ApiServiceConfig serviceConfig,
ApiRole role, ApiConfigList roleConfig) {
- return SERVICE_TYPE.equals(service.getType()) &&
ROLE_TYPE.equals(role.getType());
+ return getServiceType().equals(service.getType()) &&
getRoleType().equals(role.getType());
}
@Override
@@ -44,16 +64,26 @@ public class ZeppelinServiceModelGenerator extends
AbstractServiceModelGenerator
String hostname = role.getHostRef().getHostname();
String scheme;
String port;
- boolean sslEnabled = Boolean.parseBoolean(getRoleConfigValue(roleConfig,
"ssl_enabled"));
- if(sslEnabled) {
+ if(isSSL(roleConfig)) {
scheme = "https";
- port = getRoleConfigValue(roleConfig, "zeppelin_server_ssl_port");
+ port = getSSLPort(roleConfig);
} else {
scheme = "http";
- port = getRoleConfigValue(roleConfig, "zeppelin_server_port");
+ port = getPort(roleConfig);
}
- return new ServiceModel(ServiceModel.Type.UI,
- SERVICE,
- String.format(Locale.getDefault(), "%s://%s:%s",
scheme, hostname, port));
+ return createServiceModel(String.format(Locale.getDefault(), "%s://%s:%s",
scheme, hostname, port));
}
+
+ protected boolean isSSL(ApiConfigList roleConfig) {
+ return Boolean.parseBoolean(getRoleConfigValue(roleConfig, "ssl_enabled"));
+ }
+
+ protected String getPort(ApiConfigList roleConfig) {
+ return getRoleConfigValue(roleConfig, "zeppelin_server_port");
+ }
+
+ protected String getSSLPort(ApiConfigList roleConfig) {
+ return getRoleConfigValue(roleConfig, "zeppelin_server_ssl_port");
+ }
+
}
diff --git
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/zeppelin/ZeppelinUIServiceModelGenerator.java
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/zeppelin/ZeppelinUIServiceModelGenerator.java
index 1f2b2d8..3c43b69 100644
---
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/zeppelin/ZeppelinUIServiceModelGenerator.java
+++
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/zeppelin/ZeppelinUIServiceModelGenerator.java
@@ -17,19 +17,12 @@
package org.apache.knox.gateway.topology.discovery.cm.model.zeppelin;
-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;
-import com.cloudera.api.swagger.model.ApiServiceConfig;
-import org.apache.knox.gateway.topology.discovery.cm.ServiceModel;
-
public class ZeppelinUIServiceModelGenerator extends
ZeppelinServiceModelGenerator {
private static final String SERVICE = "ZEPPELINUI";
@Override
- public ServiceModel generateService(ApiService service, ApiServiceConfig
serviceConfig, ApiRole role, ApiConfigList roleConfig) throws ApiException {
- ServiceModel sm = super.generateService(service, serviceConfig, role,
roleConfig);
- return new ServiceModel(sm.getType(), SERVICE, sm.getServiceUrl());
+ public String getService() {
+ return SERVICE;
}
+
}
diff --git
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/zeppelin/ZeppelinWSServiceModelGenerator.java
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/zeppelin/ZeppelinWSServiceModelGenerator.java
index 9f89412..5b5f526 100644
---
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/zeppelin/ZeppelinWSServiceModelGenerator.java
+++
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/zeppelin/ZeppelinWSServiceModelGenerator.java
@@ -28,6 +28,16 @@ public class ZeppelinWSServiceModelGenerator extends
ZeppelinServiceModelGenerat
private static final String SERVICE = "ZEPPELINWS";
@Override
+ public String getService() {
+ return SERVICE;
+ }
+
+ @Override
+ public ServiceModel.Type getModelType() {
+ return ServiceModel.Type.API;
+ }
+
+ @Override
public ServiceModel generateService(ApiService service,
ApiServiceConfig serviceConfig,
ApiRole role,
@@ -35,17 +45,14 @@ public class ZeppelinWSServiceModelGenerator extends
ZeppelinServiceModelGenerat
String hostname = role.getHostRef().getHostname();
String scheme;
String port;
- boolean sslEnabled = Boolean.parseBoolean(getRoleConfigValue(roleConfig,
"ssl_enabled"));
- if(sslEnabled) {
+ if(isSSL(roleConfig)) {
scheme = "wss";
- port = getRoleConfigValue(roleConfig, "zeppelin_server_ssl_port");
+ port = getSSLPort(roleConfig);
} else {
scheme = "ws";
- port = getRoleConfigValue(roleConfig, "zeppelin_server_port");
+ port = getPort(roleConfig);
}
- return new ServiceModel(ServiceModel.Type.API,
- SERVICE,
- String.format(Locale.getDefault(),
"%s://%s:%s/ws", scheme, hostname, port));
+ return createServiceModel(String.format(Locale.getDefault(),
"%s://%s:%s/ws", scheme, hostname, port));
}
}
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 4835681..64f56ad 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
@@ -27,7 +27,6 @@
org.apache.knox.gateway.topology.discovery.cm.model.hive.HiveServiceModelGenerat
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.livy.LivyServiceModelGenerator
-org.apache.knox.gateway.topology.discovery.cm.model.livy.LivyUIServiceModelGenerator
org.apache.knox.gateway.topology.discovery.cm.model.oozie.OozieServiceModelGenerator
org.apache.knox.gateway.topology.discovery.cm.model.oozie.OozieUIServiceModelGenerator
org.apache.knox.gateway.topology.discovery.cm.model.ranger.RangerServiceModelGenerator
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 e7dcfc4..fa520be 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
@@ -49,6 +49,48 @@ import static org.junit.Assert.assertNotNull;
public class ClouderaManagerServiceDiscoveryTest {
@Test
+ public void testAtlasDiscovery() {
+ doTestAtlasDiscovery(false);
+ }
+
+ @Test
+ public void testAtlasDiscoverySSL() {
+ doTestAtlasDiscovery(true);
+ }
+
+ @Test
+ public void testAtlasAPIDiscovery() {
+ doTestAtlasAPIDiscovery(false);
+ }
+
+ @Test
+ public void testAtlasAPIDiscoverySSL() {
+ doTestAtlasAPIDiscovery(true);
+ }
+
+ private void doTestAtlasDiscovery(final boolean isSSL) {
+ final String hostName = "atlas-host-1";
+ final String port = "21000";
+ final String sslPort = "21003";
+ ServiceDiscovery.Cluster cluster = doTestAtlasDiscovery(hostName, port,
sslPort, isSSL);
+ List<String> atlastURLs = cluster.getServiceURLs("ATLAS");
+ assertEquals(1, atlastURLs.size());
+ assertEquals((isSSL ? "https" : "http") + "://" + hostName + ":" + (isSSL
? sslPort : port),
+ atlastURLs.get(0));
+ }
+
+ private void doTestAtlasAPIDiscovery(final boolean isSSL) {
+ final String hostName = "atlas-host-1";
+ final String port = "21000";
+ final String sslPort = "21003";
+ ServiceDiscovery.Cluster cluster = doTestAtlasDiscovery(hostName, port,
sslPort, isSSL);
+ List<String> atlastURLs = cluster.getServiceURLs("ATLAS-API");
+ assertEquals(1, atlastURLs.size());
+ assertEquals((isSSL ? "https" : "http") + "://" + hostName + ":" + (isSSL
? sslPort : port),
+ atlastURLs.get(0));
+ }
+
+ @Test
public void testHiveServiceDiscovery() {
doTestHiveServiceDiscovery(false);
}
@@ -59,15 +101,13 @@ public class ClouderaManagerServiceDiscoveryTest {
}
private void doTestHiveServiceDiscovery(final boolean enableSSL) {
- final String clusterName = "test-cluster-1";
final String hostName = "test-host-1";
final String thriftPort = "10001";
final String thriftPath = "cliService";
final String expectedScheme = (enableSSL ? "https" : "http");
ServiceDiscovery.Cluster cluster =
- doTestHiveServiceDiscovery(clusterName, hostName, thriftPort,
thriftPath, enableSSL);
- assertEquals(clusterName, cluster.getName());
+ doTestHiveServiceDiscovery(hostName, thriftPort, thriftPath,
enableSSL);
List<String> hiveURLs = cluster.getServiceURLs("HIVE");
assertNotNull(hiveURLs);
assertEquals(1, hiveURLs.size());
@@ -76,14 +116,12 @@ public class ClouderaManagerServiceDiscoveryTest {
@Test
public void testWebHDFSServiceDiscovery() {
- final String clusterName = "test-cluster-1";
final String hostName = "test-host-1";
final String nameService = "nameservice1";
final String nnPort = "50070";
final String dfsHttpPort = "50075";
- ServiceDiscovery.Cluster cluster = doTestHDFSDiscovery(clusterName,
hostName, nameService, nnPort, dfsHttpPort);
- assertEquals(clusterName, cluster.getName());
+ ServiceDiscovery.Cluster cluster = doTestHDFSDiscovery(hostName,
nameService, nnPort, dfsHttpPort);
List<String> webhdfsURLs = cluster.getServiceURLs("WEBHDFS");
assertNotNull(webhdfsURLs);
assertEquals(1, webhdfsURLs.size());
@@ -93,7 +131,6 @@ public class ClouderaManagerServiceDiscoveryTest {
@Test
public void testWebHDFSServiceDiscoveryWithSSL() {
- final String clusterName = "test-cluster-1";
final String hostName = "test-host-1";
final String nameService = "nameservice1";
final String nnPort = "50070";
@@ -101,8 +138,7 @@ public class ClouderaManagerServiceDiscoveryTest {
final String dfsHttpsPort = "50079";
ServiceDiscovery.Cluster cluster =
- doTestHDFSDiscovery(clusterName, hostName, nameService, nnPort,
dfsHttpPort, dfsHttpsPort);
- assertEquals(clusterName, cluster.getName());
+ doTestHDFSDiscovery(hostName, nameService, nnPort, dfsHttpPort,
dfsHttpsPort);
List<String> webhdfsURLs = cluster.getServiceURLs("WEBHDFS");
assertNotNull(webhdfsURLs);
assertEquals(1, webhdfsURLs.size());
@@ -112,14 +148,12 @@ public class ClouderaManagerServiceDiscoveryTest {
@Test
public void testNameNodeServiceDiscovery() {
- final String clusterName = "test-cluster-2";
final String hostName = "test-host-2";
final String nameService = "nameservice2";
final String nnPort = "50070";
final String dfsHttpPort = "50071";
- ServiceDiscovery.Cluster cluster = doTestHDFSDiscovery(clusterName,
hostName, nameService, nnPort, dfsHttpPort);
- assertEquals(clusterName, cluster.getName());
+ ServiceDiscovery.Cluster cluster = doTestHDFSDiscovery(hostName,
nameService, nnPort, dfsHttpPort);
List<String> nnURLs = cluster.getServiceURLs("NAMENODE");
assertNotNull(nnURLs);
assertEquals(1, nnURLs.size());
@@ -128,15 +162,13 @@ public class ClouderaManagerServiceDiscoveryTest {
@Test
public void testNameNodeServiceDiscoveryHA() {
- final String clusterName = "test-cluster-2";
final String hostName = "test-host-2";
final String nameService = "nameservice2";
final String nnPort = "50070";
final String dfsHttpPort = "50071";
ServiceDiscovery.Cluster cluster =
- doTestHDFSDiscovery(clusterName, hostName, nameService, nnPort,
dfsHttpPort, null, true);
- assertEquals(clusterName, cluster.getName());
+ doTestHDFSDiscovery(hostName, nameService, nnPort, dfsHttpPort, null,
true);
List<String> nnURLs = cluster.getServiceURLs("NAMENODE");
assertNotNull(nnURLs);
assertEquals(1, nnURLs.size());
@@ -145,22 +177,384 @@ public class ClouderaManagerServiceDiscoveryTest {
@Test
public void testHdfsUIServiceDiscovery() {
- final String clusterName = "test-cluster-3";
final String hostName = "test-host-3";
final String nameService = "nameservice3";
final String nnPort = "50070";
final String dfsHttpPort = "50071";
- ServiceDiscovery.Cluster cluster = doTestHDFSDiscovery(clusterName,
hostName, nameService, nnPort, dfsHttpPort);
- assertEquals(clusterName, cluster.getName());
+ ServiceDiscovery.Cluster cluster = doTestHDFSDiscovery(hostName,
nameService, nnPort, dfsHttpPort);
List<String> hdfsUIURLs = cluster.getServiceURLs("HDFSUI");
assertNotNull(hdfsUIURLs);
assertEquals(1, hdfsUIURLs.size());
assertEquals(("http://" + hostName + ":" + dfsHttpPort),
hdfsUIURLs.get(0));
}
- private ServiceDiscovery.Cluster doTestHiveServiceDiscovery(final String
clusterName,
- final String
hostName,
+ @Test
+ public void testHBaseUIDiscovery() {
+ final String hostName = "hbase-host";
+ final String port = "22002";
+ ServiceDiscovery.Cluster cluster = doTestHBaseUIDiscovery(hostName, port,
false);
+ assertNotNull(cluster);
+ List<String> hbaseURLs = cluster.getServiceURLs("HBASEUI");
+ assertNotNull(hbaseURLs);
+ assertEquals(1, hbaseURLs.size());
+ assertEquals("http://" + hostName + ":" + port, hbaseURLs.get(0));
+ }
+
+ @Test
+ public void testHBaseUIDiscoverySSL() {
+ final String hostName = "hbase-host";
+ final String port = "22003";
+ ServiceDiscovery.Cluster cluster = doTestHBaseUIDiscovery(hostName, port,
true);
+ assertNotNull(cluster);
+ List<String> hbaseURLs = cluster.getServiceURLs("HBASEUI");
+ assertNotNull(hbaseURLs);
+ assertEquals(1, hbaseURLs.size());
+ assertEquals("https://" + hostName + ":" + port, hbaseURLs.get(0));
+ }
+
+ @Test
+ public void testWebHBaseDiscovery() {
+ final String hostName = "hbase-host";
+ final String port = "22008";
+ ServiceDiscovery.Cluster cluster = doTestWebHBaseDiscovery(hostName, port,
false);
+ assertNotNull(cluster);
+ List<String> hbaseURLs = cluster.getServiceURLs("WEBHBASE");
+ assertNotNull(hbaseURLs);
+ assertEquals(1, hbaseURLs.size());
+ assertEquals("http://" + hostName + ":" + port, hbaseURLs.get(0));
+ }
+
+ @Test
+ public void testWebHBaseDiscoverySSL() {
+ final String hostName = "hbase-host";
+ final String port = "22009";
+ ServiceDiscovery.Cluster cluster = doTestWebHBaseDiscovery(hostName, port,
true);
+ assertNotNull(cluster);
+ List<String> hbaseURLs = cluster.getServiceURLs("WEBHBASE");
+ assertNotNull(hbaseURLs);
+ assertEquals(1, hbaseURLs.size());
+ assertEquals("https://" + hostName + ":" + port, hbaseURLs.get(0));
+ }
+
+ @Test
+ public void testLivyDiscovery() {
+ final String hostName = "livy-host";
+ final String port = "8998";
+ ServiceDiscovery.Cluster cluster = doTestLivyDiscovery(hostName, port,
false);
+ assertNotNull(cluster);
+ List<String> livyURLs = cluster.getServiceURLs("LIVYSERVER");
+ assertNotNull(livyURLs);
+ assertEquals(1, livyURLs.size());
+ assertEquals("http://" + hostName + ":" + port, livyURLs.get(0));
+ }
+
+ @Test
+ public void testLivyDiscoverySSL() {
+ final String hostName = "livy-host";
+ final String port = "8998";
+ ServiceDiscovery.Cluster cluster = doTestLivyDiscovery(hostName, port,
true);
+ assertNotNull(cluster);
+ List<String> livyURLs = cluster.getServiceURLs("LIVYSERVER");
+ assertNotNull(livyURLs);
+ assertEquals(1, livyURLs.size());
+ assertEquals("https://" + hostName + ":" + port, livyURLs.get(0));
+ }
+
+
+ @Test
+ public void testOozieDiscovery() {
+ doTestOozieDiscovery("OOZIE", false);
+ }
+
+ @Test
+ public void testOozieDiscoverySSL() {
+ doTestOozieDiscovery("OOZIE", true);
+ }
+
+
+ @Test
+ public void testOozieUIDiscovery() {
+ doTestOozieDiscovery("OOZIEUI", false);
+ }
+
+ @Test
+ public void testOozieUIDiscoverySSL() {
+ doTestOozieDiscovery("OOZIEUI", true);
+ }
+
+ @Test
+ public void testRangerDiscovery() {
+ doTestRangerDiscovery("RANGER", false);
+ }
+
+ @Test
+ public void testRangerDiscoverySSL() {
+ doTestRangerDiscovery("RANGER", true);
+ }
+
+ @Test
+ public void testRangerUIDiscovery() {
+ doTestRangerDiscovery("RANGERUI", false);
+ }
+
+ @Test
+ public void testRangerUIDiscoverySSL() {
+ doTestRangerDiscovery("RANGERUI", true);
+ }
+
+ @Test
+ public void testSolrDiscovery() {
+ doTestSolrDiscovery(false);
+ }
+
+ @Test
+ public void testSolrDiscoverySSL() {
+ doTestSolrDiscovery(true);
+ }
+
+ @Test
+ public void testSparkHistoryUIDiscovery() {
+ doTestSparkHistoryUIDiscovery("spark-history-host", "18088", "18083",
false);
+ }
+
+ @Test
+ public void testSparkHistoryUIDiscoverySSL() {
+ doTestSparkHistoryUIDiscovery("spark-history-host", "18088", "18083",
true);
+ }
+
+ @Test
+ public void testZeppelinDiscovery() {
+ doTestZeppelinDiscovery("ZEPPELIN", false);
+ }
+
+ @Test
+ public void testZeppelinDiscoverySSL() {
+ doTestZeppelinDiscovery("ZEPPELIN", true);
+ }
+
+ @Test
+ public void testZeppelinUIDiscovery() {
+ doTestZeppelinDiscovery("ZEPPELINUI", false);
+ }
+
+ @Test
+ public void testZeppelinUIDiscoverySSL() {
+ doTestZeppelinDiscovery("ZEPPELINUI", true);
+ }
+
+ @Test
+ public void testZeppelinWSDiscovery() {
+ doTestZeppelinDiscovery("ZEPPELINWS", false);
+ }
+
+ @Test
+ public void testZeppelinWSDiscoverySSL() {
+ doTestZeppelinDiscovery("ZEPPELINWS", true);
+ }
+
+
+ private void doTestOozieDiscovery(final String serviceName, final boolean
isSSL) {
+ final String hostName = "oozie-host";
+ final String port = "11000";
+ final String sslPort = "11003";
+ final String expectedURL =
+ (isSSL ? "https" : "http") + "://" + hostName + ":" + (isSSL ?
sslPort : port) + "/oozie/";
+ ServiceDiscovery.Cluster cluster = doTestOozieDiscovery(hostName, port,
sslPort, isSSL);
+ assertNotNull(cluster);
+ List<String> oozieURLs = cluster.getServiceURLs(serviceName);
+ assertNotNull(oozieURLs);
+ assertEquals(1, oozieURLs.size());
+ assertEquals(expectedURL, oozieURLs.get(0));
+ }
+
+ private ServiceDiscovery.Cluster doTestOozieDiscovery(final String hostName,
+ final String port,
+ final String sslPort,
+ final boolean isSSL) {
+ Map<String, String> serviceProperties = new HashMap<>();
+ serviceProperties.put("oozie_use_ssl", String.valueOf(isSSL));
+
+ // Configure the role
+ Map<String, String> roleProperties = new HashMap<>();
+ roleProperties.put("oozie_http_port", port);
+ roleProperties.put("oozie_https_port", sslPort);
+
+ return doTestDiscovery(hostName,
+ "OOZIE-1",
+ "OOZIE",
+ "OOZIE-1-OOZIE_SERVER-12345",
+ "OOZIE_SERVER",
+ serviceProperties,
+ roleProperties);
+ }
+
+
+ private void doTestZeppelinDiscovery(final String serviceName, final boolean
isSSL) {
+ final String hostName = "zeppelin-host";
+ final String port = "8886";
+ final String sslPort = "8887";
+
+ String expectedScheme;
+ String expectedContextPath;
+
+ if ("ZEPPELINWS".equals(serviceName)) {
+ expectedScheme = "ws";
+ expectedContextPath = "/ws";
+ } else {
+ expectedScheme = "http";
+ expectedContextPath = "";
+ }
+ if (isSSL) {
+ expectedScheme += "s";
+ }
+
+ final String expectedURL =
+ expectedScheme + "://" + hostName + ":" + (isSSL ? sslPort : port) +
expectedContextPath;
+ ServiceDiscovery.Cluster cluster = doTestZeppelinDiscovery(hostName, port,
sslPort, isSSL);
+ assertNotNull(cluster);
+ List<String> zeppelinURLs = cluster.getServiceURLs(serviceName);
+ assertNotNull(zeppelinURLs);
+ assertEquals(1, zeppelinURLs.size());
+ assertEquals(expectedURL, zeppelinURLs.get(0));
+ }
+
+
+ private ServiceDiscovery.Cluster doTestZeppelinDiscovery(final String
hostName,
+ final String port,
+ final String
sslPort,
+ final boolean
isSSL) {
+ // Configure the role
+ Map<String, String> roleProperties = new HashMap<>();
+ roleProperties.put("zeppelin_server_port", port);
+ roleProperties.put("zeppelin_server_ssl_port", sslPort);
+ roleProperties.put("ssl_enabled", String.valueOf(isSSL));
+
+ return doTestDiscovery(hostName,
+ "ZEPPELIN-1",
+ "ZEPPELIN",
+ "ZEPPELIN-ZEPPELIN_SERVER-1",
+ "ZEPPELIN_SERVER",
+ Collections.emptyMap(),
+ roleProperties);
+ }
+
+
+ private void doTestRangerDiscovery(final String serviceName, final boolean
isSSL) {
+ final String hostName = "ranger-host";
+ final String port = "6080";
+ final String sslPort = "6083";
+ final String expectedURL =
+ (isSSL ? "https" : "http") + "://" + hostName + ":" + (isSSL ? sslPort
: port);
+ ServiceDiscovery.Cluster cluster = doTestRangerDiscovery(hostName, port,
sslPort, isSSL);
+ assertNotNull(cluster);
+ List<String> rangerURLs = cluster.getServiceURLs(serviceName);
+ assertNotNull(rangerURLs);
+ assertEquals(1, rangerURLs.size());
+ assertEquals(expectedURL, rangerURLs.get(0));
+ }
+
+
+ private void doTestSolrDiscovery(final boolean isSSL) {
+ final String hostName = "solr-host";
+ final String port = "8983";
+ final String sslPort = "8985";
+ final String expectedURL =
+ (isSSL ? "https" : "http") + "://" + hostName + ":" + (isSSL ? sslPort
: port) + "/solr/";
+ ServiceDiscovery.Cluster cluster = doTestSolrDiscovery(hostName, port,
sslPort, isSSL);
+ assertNotNull(cluster);
+ List<String> solrURLs = cluster.getServiceURLs("SOLR");
+ assertNotNull(solrURLs);
+ assertEquals(1, solrURLs.size());
+ assertEquals(expectedURL, solrURLs.get(0));
+ }
+
+
+ private ServiceDiscovery.Cluster doTestRangerDiscovery(final String
hostName,
+ final String port,
+ final String sslPort,
+ final boolean isSSL) {
+ Map<String, String> serviceProperties = new HashMap<>();
+ serviceProperties.put("ranger_service_http_port", port);
+ serviceProperties.put("ranger_service_https_port", sslPort);
+
+ // Configure the role
+ Map<String, String> roleProperties = new HashMap<>();
+ roleProperties.put("ssl_enabled", String.valueOf(isSSL));
+
+ return doTestDiscovery(hostName,
+ "RANGER-1",
+ "RANGER",
+ "RANGER-RANGER_ADMIN-1",
+ "RANGER_ADMIN",
+ serviceProperties,
+ roleProperties);
+ }
+
+
+ private ServiceDiscovery.Cluster doTestSolrDiscovery(final String hostName,
+ final String port,
+ final String sslPort,
+ final boolean isSSL) {
+ Map<String, String> serviceProperties = new HashMap<>();
+ serviceProperties.put("solr_use_ssl", String.valueOf(isSSL));
+
+ // Configure the role
+ Map<String, String> roleProperties = new HashMap<>();
+ roleProperties.put("solr_http_port", port);
+ roleProperties.put("solr_https_port", sslPort);
+
+ return doTestDiscovery(hostName,
+ "SOLR-1",
+ "SOLR",
+ "SOLR-SOLR_SERVER-1",
+ "SOLR_SERVER",
+ serviceProperties,
+ roleProperties);
+ }
+
+
+ private ServiceDiscovery.Cluster doTestSparkHistoryUIDiscovery(final String
hostName,
+ final String
port,
+ final String
sslPort,
+ final boolean
isSSL) {
+ // Configure the role
+ Map<String, String> roleProperties = new HashMap<>();
+ roleProperties.put("ssl_enabled", String.valueOf(isSSL));
+ roleProperties.put("history_server_web_port", port);
+ roleProperties.put("ssl_server_port", sslPort);
+
+ return doTestDiscovery(hostName,
+ "SPARK_ON_YARN-1",
+ "SPARK_ON_YARN",
+ "SPAR4fcf419a-SPARK_YARN_HISTORY_SERVER-12345",
+ "SPARK_YARN_HISTORY_SERVER",
+ Collections.emptyMap(),
+ roleProperties);
+ }
+
+
+ private ServiceDiscovery.Cluster doTestAtlasDiscovery(final String
atlasHost,
+ final String port,
+ final String sslPort,
+ final boolean isSSL) {
+ // Configure the role
+ Map<String, String> roleProperties = new HashMap<>();
+ roleProperties.put("atlas_server_http_port", port);
+ roleProperties.put("atlas_server_https_port", sslPort);
+ roleProperties.put("ssl_enabled", String.valueOf(isSSL));
+
+ return doTestDiscovery(atlasHost,
+ "ATLAS-1",
+ "ATLAS",
+ "ATLAS-ATLAS_SERVER-1",
+ "ATLAS_SERVER",
+ Collections.emptyMap(),
+ roleProperties);
+ }
+
+
+ private ServiceDiscovery.Cluster doTestHiveServiceDiscovery(final String
hostName,
final String
thriftPort,
final String
thriftPath,
final boolean
enableSSL) {
@@ -169,73 +563,136 @@ public class ClouderaManagerServiceDiscoveryTest {
"<property><name>hive.server2.thrift.http.port</name><value>" +
thriftPort + "</value></property>\n" +
"<property><name>hive.server2.thrift.http.path</name><value>" +
thriftPath + "</value></property>";
- GatewayConfig gwConf = EasyMock.createNiceMock(GatewayConfig.class);
- EasyMock.replay(gwConf);
-
- ServiceDiscoveryConfig sdConfig = createMockDiscoveryConfig();
-
- // Create the test client for providing test response content
- TestDiscoveryApiClient mockClient = new TestDiscoveryApiClient(sdConfig,
null);
-
- // Prepare the service list response for the cluster
- ApiServiceList serviceList = EasyMock.createNiceMock(ApiServiceList.class);
- EasyMock.expect(serviceList.getItems())
- .andReturn(Collections.singletonList(createMockApiService("HIVE-1",
"HIVE")))
- .anyTimes();
- EasyMock.replay(serviceList);
- mockClient.addResponse(ApiServiceList.class, new
TestApiServiceListResponse(serviceList));
-
- // Prepare the HIVE service config response for the cluster
- ApiServiceConfig hiveServiceConfig = createMockApiServiceConfig();
- mockClient.addResponse(ApiServiceConfig.class, new
TestApiServiceConfigResponse(hiveServiceConfig));
-
- // Prepare the HS2 role
- ApiRole hs2Role =
-
createMockApiRole("HIVE-1-HIVESERVER2-d0b64dd7b7611e22bc976ede61678d9e",
"HIVESERVER2", hostName);
- ApiRoleList hiveRoleList = EasyMock.createNiceMock(ApiRoleList.class);
-
EasyMock.expect(hiveRoleList.getItems()).andReturn(Collections.singletonList(hs2Role)).anyTimes();
- EasyMock.replay(hiveRoleList);
- mockClient.addResponse(ApiRoleList.class, new
TestApiRoleListResponse(hiveRoleList));
-
- // Configure the HS2 role
+ // Configure the role
Map<String, String> roleProperties = new HashMap<>();
roleProperties.put("hive_hs2_config_safety_valve", hs2SafetyValveValue);
roleProperties.put("hive.server2.use.SSL", String.valueOf(enableSSL));
- ApiConfigList hiveRoleConfigList = createMockApiConfigList(roleProperties);
- mockClient.addResponse(ApiConfigList.class, new
TestApiConfigListResponse(hiveRoleConfigList));
- // Invoke the service discovery
- ClouderaManagerServiceDiscovery cmsd = new
ClouderaManagerServiceDiscovery(true);
- ServiceDiscovery.Cluster cluster = cmsd.discover(gwConf, sdConfig,
clusterName, mockClient);
- assertNotNull(cluster);
- return cluster;
+ return doTestDiscovery(hostName,
+ "HIVE-1",
+ "HIVE",
+ "HIVE-1-HIVESERVER2-12345",
+ "HIVESERVER2",
+ Collections.emptyMap(),
+ roleProperties);
}
- private ServiceDiscovery.Cluster doTestHDFSDiscovery(final String
clusterName,
- final String hostName,
+
+ private ServiceDiscovery.Cluster doTestHDFSDiscovery(final String hostName,
final String
nameService,
final String nnPort,
final String
dfsHttpPort) {
- return doTestHDFSDiscovery(clusterName, hostName, nameService, nnPort,
dfsHttpPort, null);
+ return doTestHDFSDiscovery(hostName, nameService, nnPort, dfsHttpPort,
null);
}
- private ServiceDiscovery.Cluster doTestHDFSDiscovery(final String
clusterName,
- final String hostName,
+
+ private ServiceDiscovery.Cluster doTestHDFSDiscovery(final String hostName,
final String
nameService,
final String nnPort,
final String
dfsHttpPort,
final String
dfsHttpsPort) {
- return doTestHDFSDiscovery(clusterName, hostName, nameService, nnPort,
dfsHttpPort, dfsHttpsPort, false);
+ return doTestHDFSDiscovery(hostName, nameService, nnPort, dfsHttpPort,
dfsHttpsPort, false);
}
- private ServiceDiscovery.Cluster doTestHDFSDiscovery(final String
clusterName,
- final String hostName,
+
+ private ServiceDiscovery.Cluster doTestHDFSDiscovery(final String hostName,
final String
nameService,
final String nnPort,
final String
dfsHttpPort,
final String
dfsHttpsPort,
final boolean enableHA)
{
+ // Prepare the HDFS service config response for the cluster
+ Map<String, String> serviceProps = new HashMap<>();
+ serviceProps.put("hdfs_hadoop_ssl_enabled", String.valueOf(dfsHttpsPort !=
null && !dfsHttpsPort.isEmpty()));
+ serviceProps.put("dfs_webhdfs_enabled", "true");
+
+ // Configure the role
+ Map<String, String> roleProperties = new HashMap<>();
+ roleProperties.put("dfs_federation_namenode_nameservice", nameService);
+ roleProperties.put("autofailover_enabled", String.valueOf(enableHA));
+ roleProperties.put("namenode_port", nnPort);
+ roleProperties.put("dfs_http_port", dfsHttpPort);
+ if (dfsHttpsPort != null && !dfsHttpsPort.isEmpty()) {
+ roleProperties.put("dfs_https_port", dfsHttpsPort);
+ }
+
+ return doTestDiscovery(hostName,
+ "NAMENODE-1",
+ "HDFS",
+ "HDFS-1-NAMENODE-12345",
+ "NAMENODE",
+ serviceProps,
+ roleProperties);
+ }
+
+
+ private ServiceDiscovery.Cluster doTestHBaseUIDiscovery(final String
hostName,
+ final String port,
+ final boolean isSSL)
{
+ // Prepare the HBase service config response for the cluster
+ Map<String, String> serviceProps = new HashMap<>();
+ serviceProps.put("hbase_hadoop_ssl_enabled", String.valueOf(isSSL));
+
+ // Configure the role
+ Map<String, String> roleProperties = new HashMap<>();
+ roleProperties.put("hbase_master_info_port", port);
+
+ return doTestDiscovery(hostName,
+ "HBASE-1",
+ "HBASE",
+ "HBASE-1-MASTER-12345",
+ "MASTER",
+ serviceProps,
+ roleProperties);
+ }
+
+
+ private ServiceDiscovery.Cluster doTestWebHBaseDiscovery(final String
hostName,
+ final String port,
+ final boolean
isSSL) {
+ // Configure the role
+ Map<String, String> roleProperties = new HashMap<>();
+ roleProperties.put("hbase_restserver_port", port);
+ roleProperties.put("hbase_restserver_ssl_enable", String.valueOf(isSSL));
+
+ return doTestDiscovery(hostName,
+ "HBASE-1",
+ "HBASE",
+ "HBASE-1-RESTSERVER",
+ "HBASERESTSERVER",
+ Collections.emptyMap(),
+ roleProperties);
+ }
+
+
+ private ServiceDiscovery.Cluster doTestLivyDiscovery(final String hostName,
+ final String port,
+ final boolean isSSL) {
+ // Configure the role
+ Map<String, String> roleProperties = new HashMap<>();
+ roleProperties.put("livy_server_port", port);
+ roleProperties.put("ssl_enabled", String.valueOf(isSSL));
+
+ return doTestDiscovery(hostName,
+ "LIVY-1",
+ "LIVY",
+ "LIVY-LIVY_SERVER-1",
+ "LIVY_SERVER",
+ Collections.emptyMap(),
+ roleProperties);
+ }
+
+
+ private ServiceDiscovery.Cluster doTestDiscovery(final String hostName,
+ final String serviceName,
+ final String serviceType,
+ final String roleName,
+ final String roleType,
+ final Map<String, String>
serviceProperties,
+ final Map<String, String>
roleProperties) {
+ final String clusterName = "cluster-1";
+
GatewayConfig gwConf = EasyMock.createNiceMock(GatewayConfig.class);
EasyMock.replay(gwConf);
@@ -247,36 +704,25 @@ public class ClouderaManagerServiceDiscoveryTest {
// Prepare the service list response for the cluster
ApiServiceList serviceList = EasyMock.createNiceMock(ApiServiceList.class);
EasyMock.expect(serviceList.getItems())
-
.andReturn(Collections.singletonList(createMockApiService("NAMENODE-1",
"HDFS")))
- .anyTimes();
+
.andReturn(Collections.singletonList(createMockApiService(serviceName,
serviceType)))
+ .anyTimes();
EasyMock.replay(serviceList);
mockClient.addResponse(ApiServiceList.class, new
TestApiServiceListResponse(serviceList));
- // Prepare the HDFS service config response for the cluster
- Map<String, String> serviceProps = new HashMap<>();
- serviceProps.put("hdfs_hadoop_ssl_enabled", String.valueOf(dfsHttpsPort !=
null && !dfsHttpsPort.isEmpty()));
- serviceProps.put("dfs_webhdfs_enabled", "true");
- ApiServiceConfig hdfsServiceConfig =
createMockApiServiceConfig(serviceProps);
- mockClient.addResponse(ApiServiceConfig.class, new
TestApiServiceConfigResponse(hdfsServiceConfig));
+ // Prepare the Livy service config response for the cluster
+ ApiServiceConfig hbase = createMockApiServiceConfig(serviceProperties);
+ mockClient.addResponse(ApiServiceConfig.class, new
TestApiServiceConfigResponse(hbase));
- // Prepare the NameNode role
- ApiRole nnRole =
createMockApiRole("HDFS-1-NAMENODE-d0b64dd7b7611e22bc976ede61678d9e",
"NAMENODE", hostName);
- ApiRoleList nnRoleList = EasyMock.createNiceMock(ApiRoleList.class);
-
EasyMock.expect(nnRoleList.getItems()).andReturn(Collections.singletonList(nnRole)).anyTimes();
- EasyMock.replay(nnRoleList);
- mockClient.addResponse(ApiRoleList.class, new
TestApiRoleListResponse(nnRoleList));
+ // Prepare the Livy Server role
+ ApiRole livyServerRole = createMockApiRole(roleName, roleType, hostName);
+ ApiRoleList livyServerRoleList =
EasyMock.createNiceMock(ApiRoleList.class);
+
EasyMock.expect(livyServerRoleList.getItems()).andReturn(Collections.singletonList(livyServerRole)).anyTimes();
+ EasyMock.replay(livyServerRoleList);
+ mockClient.addResponse(ApiRoleList.class, new
TestApiRoleListResponse(livyServerRoleList));
- // Configure the NameNode role
- Map<String, String> roleProperties = new HashMap<>();
- roleProperties.put("dfs_federation_namenode_nameservice", nameService);
- roleProperties.put("autofailover_enabled", String.valueOf(enableHA));
- roleProperties.put("namenode_port", nnPort);
- roleProperties.put("dfs_http_port", dfsHttpPort);
- if (dfsHttpsPort != null && !dfsHttpsPort.isEmpty()) {
- roleProperties.put("dfs_https_port", dfsHttpsPort);
- }
- ApiConfigList nnRoleConfigList = createMockApiConfigList(roleProperties);
- mockClient.addResponse(ApiConfigList.class, new
TestApiConfigListResponse(nnRoleConfigList));
+ // Configure the Livy Server role
+ ApiConfigList atlasServerRoleConfigList =
createMockApiConfigList(roleProperties);
+ mockClient.addResponse(ApiConfigList.class, new
TestApiConfigListResponse(atlasServerRoleConfigList));
// Invoke the service discovery
ClouderaManagerServiceDiscovery cmsd = new
ClouderaManagerServiceDiscovery(true);
@@ -286,6 +732,7 @@ public class ClouderaManagerServiceDiscoveryTest {
return cluster;
}
+
private static ServiceDiscoveryConfig createMockDiscoveryConfig() {
return createMockDiscoveryConfig("http://localhost:1234", "itsme");
}
@@ -319,10 +766,6 @@ public class ClouderaManagerServiceDiscoveryTest {
return r;
}
- private static ApiServiceConfig createMockApiServiceConfig() {
- return createMockApiServiceConfig(Collections.emptyMap());
- }
-
private static ApiServiceConfig createMockApiServiceConfig(Map<String,
String> properties) {
ApiServiceConfig serviceConfig =
EasyMock.createNiceMock(ApiServiceConfig.class);
List<ApiConfig> serviceConfigs = new ArrayList<>();