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 6aab5de KNOX-2156 - CM discovery - KUDUUI discovery (#228)
6aab5de is described below
commit 6aab5dec949d0f053c822e9c51a7faf167d60cfd
Author: Phil Zampino <[email protected]>
AuthorDate: Fri Dec 20 16:04:00 2019 -0500
KNOX-2156 - CM discovery - KUDUUI discovery (#228)
---
.../cm/model/kudu/KuduUIServiceModelGenerator.java | 66 ++++++++++++++++++++++
...way.topology.discovery.cm.ServiceModelGenerator | 1 +
.../cm/ClouderaManagerServiceDiscoveryTest.java | 35 ++++++++++++
3 files changed, 102 insertions(+)
diff --git
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/kudu/KuduUIServiceModelGenerator.java
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/kudu/KuduUIServiceModelGenerator.java
new file mode 100644
index 0000000..017cacf
--- /dev/null
+++
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/kudu/KuduUIServiceModelGenerator.java
@@ -0,0 +1,66 @@
+/*
+ * 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.kudu;
+
+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;
+import
org.apache.knox.gateway.topology.discovery.cm.model.AbstractServiceModelGenerator;
+
+import java.util.Locale;
+
+public class KuduUIServiceModelGenerator extends AbstractServiceModelGenerator
{
+
+ public static final String SERVICE = "KUDUUI";
+ public static final String SERVICE_TYPE = "KUDU";
+ public static final String ROLE_TYPE = "KUDU_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 ServiceModel generateService(ApiService service, ApiServiceConfig
serviceConfig, ApiRole role, ApiConfigList roleConfig) throws ApiException {
+ String hostname = role.getHostRef().getHostname();
+
+ boolean sslEnabled = Boolean.parseBoolean(getRoleConfigValue(roleConfig,
"ssl_enabled"));
+ String scheme = sslEnabled ? "https" : "http";
+
+ String port = getRoleConfigValue(roleConfig, "webserver_port");
+ return createServiceModel(String.format(Locale.getDefault(),
"%s://%s:%s/", 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 d6ca1cf..8729e22 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
@@ -31,6 +31,7 @@
org.apache.knox.gateway.topology.discovery.cm.model.hue.HueLBServiceModelGenerat
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.kudu.KuduUIServiceModelGenerator
org.apache.knox.gateway.topology.discovery.cm.model.livy.LivyServiceModelGenerator
org.apache.knox.gateway.topology.discovery.cm.model.oozie.OozieServiceModelGenerator
org.apache.knox.gateway.topology.discovery.cm.model.oozie.OozieUIServiceModelGenerator
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 e9166ab..7819c2d 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
@@ -42,6 +42,7 @@ import
org.apache.knox.gateway.topology.discovery.cm.model.hive.HiveServiceModel
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.kudu.KuduUIServiceModelGenerator;
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;
@@ -480,6 +481,40 @@ public class ClouderaManagerServiceDiscoveryTest {
doTestImpalaUIDiscovery(true, true);
}
+
+ @Test
+ public void testKuduUIDiscovery() {
+ doTestKuduUIDiscovery(false);
+ }
+
+ @Test
+ public void testKuduUIDiscoverySSL() {
+ doTestKuduUIDiscovery(true);
+ }
+
+ private void doTestKuduUIDiscovery(final boolean isSSL) {
+ final String hostName = "kudu-host";
+ final String port = "8051";
+ final String expectedURL = (isSSL ? "https" : "http") + "://" + hostName +
":" + port + "/";
+
+ // Configure the role
+ Map<String, String> roleProperties = new HashMap<>();
+ roleProperties.put("ssl_enabled", String.valueOf(isSSL));
+ roleProperties.put("webserver_port", port);
+
+ ServiceDiscovery.Cluster cluster = doTestDiscovery(hostName,
+ "KUDU-1",
+
KuduUIServiceModelGenerator.SERVICE_TYPE,
+
"KUDU-KUDU_MASTER-12345",
+
KuduUIServiceModelGenerator.ROLE_TYPE,
+ Collections.emptyMap(),
+ roleProperties);
+
+ List<String> urls =
cluster.getServiceURLs(KuduUIServiceModelGenerator.SERVICE);
+ assertEquals(1, urls.size());
+ assertEquals(expectedURL, urls.get(0));
+ }
+
private void doTestImpalaDiscovery(boolean sslEnabled) {
final String hostName = "impalad-host";
final String port = "28000";