This is an automated email from the ASF dual-hosted git repository.
smolnar 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 5c46e4c KNOX-2259 KNOX-2260 KNOX-2261 - Fixed Impala/Kudu/HBase UI
context path in service metadata (#282)
5c46e4c is described below
commit 5c46e4c1f4436de224bb6c5c408c3849d8ed784b
Author: Sandor Molnar <[email protected]>
AuthorDate: Mon Mar 9 21:52:48 2020 +0100
KNOX-2259 KNOX-2260 KNOX-2261 - Fixed Impala/Kudu/HBase UI context path in
service metadata (#282)
---
.../src/main/resources/services/hbaseui/2.1.0/service.xml | 4 ++--
.../src/main/resources/services/impalaui/1.0.0/service.xml | 2 +-
.../src/main/resources/services/kuduui/1.0.0/service.xml | 2 +-
.../knox/gateway/service/metadata/KnoxMetadataResource.java | 4 +++-
.../apache/knox/gateway/service/metadata/ServiceModel.java | 13 +++++++++++--
5 files changed, 18 insertions(+), 7 deletions(-)
diff --git
a/gateway-service-definitions/src/main/resources/services/hbaseui/2.1.0/service.xml
b/gateway-service-definitions/src/main/resources/services/hbaseui/2.1.0/service.xml
index b5efb27..1063f33 100644
---
a/gateway-service-definitions/src/main/resources/services/hbaseui/2.1.0/service.xml
+++
b/gateway-service-definitions/src/main/resources/services/hbaseui/2.1.0/service.xml
@@ -18,9 +18,9 @@
<service role="HBASEUI" name="hbaseui" version="2.1.0">
<metadata>
<type>UI</type>
- <context>/hbase/webui</context>
+
<context>/hbase/webui/master?&host={{HOST}}&port={{PORT}}</context>
<shortDesc>HBase UI</shortDesc>
- <description>The HBase Master web UI is a simple but useful tool, to
get an overview of the current status of the cluster.
+ <description>The HBase Master web UI is a simple but useful tool, to
get an overview of the current status of the cluster.
From its page, you can get the version of the running HBase, its
basic configuration, including the root HDFS path and ZooKeeper quorum,
load average of the cluster, and a table, region, and region
server list.</description>
</metadata>
diff --git
a/gateway-service-definitions/src/main/resources/services/impalaui/1.0.0/service.xml
b/gateway-service-definitions/src/main/resources/services/impalaui/1.0.0/service.xml
index 1a17098..d6efa7c 100644
---
a/gateway-service-definitions/src/main/resources/services/impalaui/1.0.0/service.xml
+++
b/gateway-service-definitions/src/main/resources/services/impalaui/1.0.0/service.xml
@@ -18,7 +18,7 @@ limitations under the License.
<service role="IMPALAUI" name="impalaui" version="1.0.0">
<metadata>
<type>UI</type>
- <context>/impalaui</context>
+
<context>/impalaui?scheme={{SCHEME}}&host={{HOST}}&port={{PORT}}</context>
<shortDesc>Impala UI</shortDesc>
<description>Each of the Impala daemons (impalad, statestored, and
catalogd) includes a built-in web server that displays diagnostic and status
information.</description>
</metadata>
diff --git
a/gateway-service-definitions/src/main/resources/services/kuduui/1.0.0/service.xml
b/gateway-service-definitions/src/main/resources/services/kuduui/1.0.0/service.xml
index 884982c..82f863c 100644
---
a/gateway-service-definitions/src/main/resources/services/kuduui/1.0.0/service.xml
+++
b/gateway-service-definitions/src/main/resources/services/kuduui/1.0.0/service.xml
@@ -18,7 +18,7 @@ limitations under the License.
<service role="KUDUUI" name="kuduui" version="1.0.0">
<metadata>
<type>UI</type>
- <context>/kuduui</context>
+
<context>/kuduui?scheme={{SCHEME}}&host={{HOST}}&port={{PORT}}</context>
<shortDesc>Kudu UI</shortDesc>
<description>Kudu is a columnar storage manager developed for the
Apache Hadoop platform. Kudu shares the common technical properties of Hadoop
ecosystem applications: it runs on commodity hardware, is horizontally
scalable, and supports highly available operation.</description>
</metadata>
diff --git
a/gateway-service-metadata/src/main/java/org/apache/knox/gateway/service/metadata/KnoxMetadataResource.java
b/gateway-service-metadata/src/main/java/org/apache/knox/gateway/service/metadata/KnoxMetadataResource.java
index 1bd0870..f66418f 100644
---
a/gateway-service-metadata/src/main/java/org/apache/knox/gateway/service/metadata/KnoxMetadataResource.java
+++
b/gateway-service-metadata/src/main/java/org/apache/knox/gateway/service/metadata/KnoxMetadataResource.java
@@ -215,7 +215,9 @@ public class KnoxMetadataResource {
private Metadata getServiceMetadata(ServiceDefinitionRegistry
serviceDefinitionRegistry, Service service) {
final Optional<ServiceDefinitionPair> serviceDefinition =
serviceDefinitionRegistry.getServiceDefinitions().stream()
- .filter(serviceDefinitionPair ->
serviceDefinitionPair.getService().getRole().equalsIgnoreCase(service.getRole())).findFirst();
+ .filter(serviceDefinitionPair ->
serviceDefinitionPair.getService().getRole().equalsIgnoreCase(service.getRole()))
+ .filter(serviceDefinitionPair -> service.getVersion() == null ||
service.getVersion().toString().equalsIgnoreCase(serviceDefinitionPair.getService().getVersion()))
+ .findFirst();
return serviceDefinition.isPresent() ?
serviceDefinition.get().getService().getMetadata() : null;
}
diff --git
a/gateway-service-metadata/src/main/java/org/apache/knox/gateway/service/metadata/ServiceModel.java
b/gateway-service-metadata/src/main/java/org/apache/knox/gateway/service/metadata/ServiceModel.java
index e631a7d..c54352b 100644
---
a/gateway-service-metadata/src/main/java/org/apache/knox/gateway/service/metadata/ServiceModel.java
+++
b/gateway-service-metadata/src/main/java/org/apache/knox/gateway/service/metadata/ServiceModel.java
@@ -17,6 +17,8 @@
*/
package org.apache.knox.gateway.service.metadata;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
@@ -101,14 +103,21 @@ public class ServiceModel {
}
@XmlElement
- public String getServiceUrl() {
+ public String getServiceUrl() throws MalformedURLException {
String context = getContext();
if ("HIVE".equals(getServiceName())) {
return String.format(Locale.ROOT,
"jdbc:hive2://%s:%d/;?hive.server2.transport.mode=http;hive.server2.thrift.http.path=/%s/%s%s",
request.getServerName(),
request.getServerPort(), gatewayPath, topologyName, context);
} else {
+ final String backendUrlString = getBackendServiceUrl();
if (context.indexOf("{{BACKEND_HOST}}") > -1) {
- context = context.replace("{{BACKEND_HOST}}", getBackendServiceUrl());
+ context = context.replace("{{BACKEND_HOST}}", backendUrlString);
+ }
+ if (context.indexOf("{{SCHEME}}") > -1 || context.indexOf("{{HOST}}") >
-1 || context.indexOf("{{PORT}}") > -1) {
+ final URL backendUrl = new URL(backendUrlString);
+ context = context.replace("{{SCHEME}}", backendUrl.getProtocol());
+ context = context.replace("{{HOST}}", backendUrl.getHost());
+ context = context.replace("{{PORT}}",
String.valueOf(backendUrl.getPort()));
}
return String.format(Locale.ROOT, "%s://%s:%s/%s/%s%s",
request.getScheme(), request.getServerName(), request.getServerPort(),
gatewayPath, topologyName, context);
}