]
Darran Lofthouse commented on WFCORE-1742:
------------------------------------------
Related to this did start some ideas about moving this into a subsystem: -
These are all just random brain dumps for issues I was thinking about at the time but
hopefully they do flag up some of the possible problems that may need to be solved around
the management interfaces.
The management interfaces were originally designed to be very simple resources, as more
and more requirements have been identified they have evolved to have more and more added
to them. Personally I think it would be a good time for a redesign now to meet the needs
going forward, a move to a subsystem could be a good way to support old and new as
mutually exclusive options to allow a complete redesign with less worry about
compatibility.
Allow registering a custom handler for management interface
-----------------------------------------------------------
Key: WFCORE-1742
URL:
https://issues.jboss.org/browse/WFCORE-1742
Project: WildFly Core
Issue Type: Feature Request
Components: Domain Management
Reporter: Sebastian Ćaskawiec
When building [HealthCheck API for
Infisnispan|https://github.com/infinispan/infinispan/pull/4499] we noticed there is no way
to register a custom endpoint on Management REST interface. Without it, calling the API
requires using HTTP POST method (since it includes runtime parameters) and the URL is very
long (and not intuitive for our users):
{noformat}
curl --digest -L -D -
"http://localhost:9990/management/subsystem/datagrid-infinispan/cache-container/clustered/health/HEALTH?operation=resource&include-runtime=true&json.pretty=1"
--header "Content-Type: application/json" -u ispnadmin:ispnadmin
HTTP/1.1 401 Unauthorized
Connection: keep-alive
WWW-Authenticate: Digest
realm="ManagementRealm",domain="/management",nonce="AuZzFxz7uC4NMTQ3MDgyNTU1NTQ3OCfIJBHXVpPHPBdzGUy7Qts=",opaque="00000000000000000000000000000000",algorithm=MD5,qop="auth"
Content-Length: 77
Content-Type: text/html
Date: Wed, 10 Aug 2016 10:39:15 GMT
HTTP/1.1 200 OK
Connection: keep-alive
Authentication-Info:
nextnonce="AuZzFxz7uC4NMTQ3MDgyNTU1NTQ3OCfIJBHXVpPHPBdzGUy7Qts=",qop="auth",rspauth="b518c3170e627bd732055c382ce5d970",cnonce="NGViOWM0NDY5OGJmNjY0MjcyOWE4NDkyZDU3YzNhYjY=",nc=00000001
Content-Type: application/json; charset=utf-8
Content-Length: 1927
Date: Wed, 10 Aug 2016 10:39:15 GMT
{
"cache-health" : "GREEN",
"cluster-health" : ["test"],
"cluster-name" : "clustered",
"free-memory" : 96778,
"log-tail" : [
"2016-08-10 11:54:14,706 INFO [org.infinispan.server.endpoint] (MSC service
thread 1-5) DGENDPT10001: HotRodServer listening on 127.0.0.1:11222",
"2016-08-10 11:54:14,706 INFO [org.infinispan.server.endpoint] (MSC service
thread 1-1) DGENDPT10001: MemcachedServer listening on 127.0.0.1:11211",
"2016-08-10 11:54:14,785 INFO [org.jboss.as.clustering.infinispan] (MSC
service thread 1-6) DGISPN0001: Started ___protobuf_metadata cache from clustered
container",
"2016-08-10 11:54:14,800 INFO [org.jboss.as.clustering.infinispan] (MSC
service thread 1-6) DGISPN0001: Started ___script_cache cache from clustered
container",
"2016-08-10 11:54:15,159 INFO [org.jboss.as.clustering.infinispan] (MSC
service thread 1-5) DGISPN0001: Started ___hotRodTopologyCache cache from clustered
container",
"2016-08-10 11:54:15,210 INFO [org.infinispan.rest.NettyRestServer] (MSC
service thread 1-6) ISPN012003: REST server starting, listening on 127.0.0.1:8080",
"2016-08-10 11:54:15,210 INFO [org.infinispan.server.endpoint] (MSC service
thread 1-6) DGENDPT10002: REST mapped to /rest",
"2016-08-10 11:54:15,306 INFO [org.jboss.as] (Controller Boot Thread)
WFLYSRV0060: Http management interface listening on
http://127.0.0.1:9990/management",
"2016-08-10 11:54:15,307 INFO [org.jboss.as] (Controller Boot Thread)
WFLYSRV0051: Admin console listening on
http://127.0.0.1:9990",
"2016-08-10 11:54:15,307 INFO [org.jboss.as] (Controller Boot Thread)
WFLYSRV0025: Infinispan Server 9.0.0-SNAPSHOT (WildFly Core 2.2.0.CR9) started in 8681ms -
Started 196 of 237 services (121 services are lazy, passive or on-demand)"
],
"number-of-cpus" : 8,
"number-of-nodes" : 1,
"total-memory" : 235520
}%
{noformat}
It would be very convenient to allow exposing such endpoints with optional authorization
and using custom URLs (e.g. something like
http://localhost:9990/health).