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";

Reply via email to