[
https://issues.apache.org/jira/browse/KNOX-3003?focusedWorklogId=902772&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-902772
]
ASF GitHub Bot logged work on KNOX-3003:
----------------------------------------
Author: ASF GitHub Bot
Created on: 31/Jan/24 10:01
Start Date: 31/Jan/24 10:01
Worklog Time Spent: 10m
Work Description: smolnar82 opened a new pull request, #838:
URL: https://github.com/apache/knox/pull/838
## What changes were proposed in this pull request?
There are two important pieces of this PR:
1. the `getTopologies` REST API endpoint in `KnoxMetadataResource` was
modified in a way such that it includes only one item per service role
(IMPALAUI, WEBHDFS, HUE, HBASEUI, etc...) with a list of service URLs from now
on. In previous versions it was different: the response had `N` items per
service role with a unique service URL.
```
$ curl -H 'Accept: application/json' -iku admin:admin-password
https://localhost:8443/gateway/sandbox/api/v1/metadata/topologies?name=sandbox
HTTP/1.1 200 OK
Date: Wed, 31 Jan 2024 09:32:09 GMT
Set-Cookie: KNOXSESSIONID=node0pafwbogn50gjy2zjiaxuchwx0.node0;
Path=/gateway/sandbox; Secure; HttpOnly
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Set-Cookie: rememberMe=deleteMe; Path=/gateway/sandbox; Max-Age=0;
Expires=Tue, 30-Jan-2024 09:32:09 GMT; SameSite=lax
Content-Type: application/json
Transfer-Encoding: chunked
{
"topologyInformations": {
"topologyInformation": [
{
"topology": "sandbox",
"pinned": false,
"apiServicesViewVersion": "v1",
"apiServices": {
"service": [
{
"context": "/webhdfs",
"description": "An HTTP REST API which supports
the complete FileSystem interface for HDFS.",
"samples": {
"sample": [
{
"description": "List all files under
'testPath'",
"value": "curl -iv -X GET
\"https://localhost:8443/gateway/sandbox/webhdfs/v1/testPath?op=LISTSTATUS\""
},
{
"description": "Rename a
File/Directory under ",
"value": "curl -iv -X PUT
\"https://localhost:8443/gateway/sandbox/webhdfs/v1/testPath/testFile?op=RENAME&destination=testPath/renamedFile\""
},
{
"description": "Get Home Directory",
"value": "curl -iv -X GET
\"https://localhost:8443/gateway/sandbox/webhdfs/v1/?op=GETHOMEDIRECTORY\""
},
{
"description": "You may check out
Apache WebHDFS's REST API documentation here",
"value":
"https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/WebHDFS.html"
}
]
},
"serviceName": "WEBHDFS",
"serviceUrls": [
"https://localhost:8443/gateway/sandbox/webhdfs"
],
"shortDesc": "Web HDFS",
"type": "API",
"version": ""
}
]
},
"uiServices": {
"service": [
{
"context":
"/hbase/webui/master?&host={{HOST}}&port={{PORT}}",
"description": "The HBase Master web UI is a
simple but useful tool, to get an overview of the current status of the
cluster...",
"samples": {
"sample": []
},
"serviceName": "HBASEUI",
"serviceUrls": [
"https://localhost:8443/gateway/sandbox/hbase/webui/master?&host=localhost1&port=8889",
"https://localhost:8443/gateway/sandbox/hbase/webui/master?&host=localhost10&port=8889",
"https://localhost:8443/gateway/sandbox/hbase/webui/master?&host=localhost11&port=8889",
"https://localhost:8443/gateway/sandbox/hbase/webui/master?&host=localhost12&port=8889",
"https://localhost:8443/gateway/sandbox/hbase/webui/master?&host=localhost13&port=8889",
...
"https://localhost:8443/gateway/sandbox/hbase/webui/master?&host=localhost6&port=8889",
"https://localhost:8443/gateway/sandbox/hbase/webui/master?&host=localhost7&port=8889",
"https://localhost:8443/gateway/sandbox/hbase/webui/master?&host=localhost8&port=8889",
"https://localhost:8443/gateway/sandbox/hbase/webui/master?&host=localhost9&port=8889"
],
"shortDesc": "HBase UI",
"type": "UI",
"version": "2.1.0"
},
{
"context": "/hdfs/?host={{BACKEND_HOST}}",
"description": "The namenode UI or the namenode
web interface is used to monitor the status of the namenode.",
"samples": {
"sample": []
},
"serviceName": "HDFSUI",
"serviceUrls": [
"https://localhost:8443/gateway/sandbox/hdfs/?host=http://localhost10:8889",
"https://localhost:8443/gateway/sandbox/hdfs/?host=http://localhost11:8889",
"https://localhost:8443/gateway/sandbox/hdfs/?host=http://localhost12:8889",
"https://localhost:8443/gateway/sandbox/hdfs/?host=http://localhost13:8889",
...
"https://localhost:8443/gateway/sandbox/hdfs/?host=http://localhost6:8889",
"https://localhost:8443/gateway/sandbox/hdfs/?host=http://localhost7:8889",
"https://localhost:8443/gateway/sandbox/hdfs/?host=http://localhost8:8889",
"https://localhost:8443/gateway/sandbox/hdfs/?host=http://localhost9:8889"
],
"shortDesc": "HDFS Namenode UI",
"type": "UI",
"version": ""
},
{
"context": "/hue/",
"description": "Hue UI is a Web interface for
analyzing data with Apache Hadoop",
"samples": {
"sample": []
},
"serviceName": "HUE",
"serviceUrls": [
"https://localhost:8443/gateway/sandbox/hue/"
],
"shortDesc": "Hue UI",
"type": "UI",
"version": ""
},
{
"context":
"/impalaui?scheme={{SCHEME}}&host={{HOST}}&port={{PORT}}",
"description": "Each of the Impala daemons
(impalad, statestored, and catalogd) includes a built-in web server that
displays diagnostic and status information.",
"samples": {
"sample": []
},
"serviceName": "IMPALAUI",
"serviceUrls": [
"https://localhost:8443/gateway/sandbox/impalaui?scheme=http&host=localhost1&port=8889",
"https://localhost:8443/gateway/sandbox/impalaui?scheme=http&host=localhost10&port=8889",
"https://localhost:8443/gateway/sandbox/impalaui?scheme=http&host=localhost11&port=8889",
"https://localhost:8443/gateway/sandbox/impalaui?scheme=http&host=localhost12&port=8889",
"https://localhost:8443/gateway/sandbox/impalaui?scheme=http&host=localhost13&port=8889",
...
"https://localhost:8443/gateway/sandbox/impalaui?scheme=http&host=localhost6&port=8889",
"https://localhost:8443/gateway/sandbox/impalaui?scheme=http&host=localhost7&port=8889",
"https://localhost:8443/gateway/sandbox/impalaui?scheme=http&host=localhost8&port=8889",
"https://localhost:8443/gateway/sandbox/impalaui?scheme=http&host=localhost9&port=8889"
],
"shortDesc": "Impala UI",
"type": "UI",
"version": ""
}
]
}
}
]
}
}
```
2. The Knox Home page is also modified: if a service role has more than one
service URL, the number of instances is visible next to the service role name
within the `Topologies` section. Clicking the service icon or the service name
will result in a modal window that lists all instances of the given service
role.
I also added a filter box where end-users can search by hostname and/or port
to make it easier for them to narrow down those instances precisely for what
they are looking for.
<img width="1775" alt="Screenshot 2024-01-31 at 10 56 22"
src="https://github.com/apache/knox/assets/34065904/3dda9ddf-7314-41f3-8198-e0729cf7d5d1">
<img width="1777" alt="Screenshot 2024-01-31 at 10 59 15"
src="https://github.com/apache/knox/assets/34065904/8bfb95dc-4b18-4feb-9945-f7974dbc766c">
## How was this patch tested?
Updated existing unit tests to cover the changes in `ServiceModel` and
tested the new feature E2E locally (see sample JSON response and the new Home
page layout above).
Issue Time Tracking
-------------------
Worklog Id: (was: 902772)
Remaining Estimate: 0h
Time Spent: 10m
> Group UI services of the same type
> ----------------------------------
>
> Key: KNOX-3003
> URL: https://issues.apache.org/jira/browse/KNOX-3003
> Project: Apache Knox
> Issue Type: Improvement
> Components: Homepage
> Affects Versions: 2.0.0, 1.6.0, 1.6.1
> Reporter: Sandor Molnar
> Assignee: Sandor Molnar
> Priority: Critical
> Time Spent: 10m
> Remaining Estimate: 0h
>
> Currently, if a UI service has multiple instances with different URLs in a
> given topology, that UI service will be listed on the Knox Home page as many
> times as the number of URLs it has. This makes the user experience a lot
> worse if we are talking about hundreds of occurrences of this case.
> We learned from some real-life use cases that IMPALA is one of these
> services, and there are 1000+ node clusters out there with more than 100
> Impala Daemon roles. In that particular case, the Knox Home page was a mess.
> To address this issue, the following UI improvement should be implemented:
> * if a UI service has more than one URL in the given topology, individual
> tiles should not be displayed. Instead, one "group" tile must be added with a
> clear indication this is a group of URLs of the same service.
> * clicking the group tile should open a modal window with separate tiles for
> each service URL
> * in this modal window, a search field will be added to give our end-users
> the chance to narrow down results (by hostname for instance)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)