[ 
https://issues.apache.org/jira/browse/CAMEL-22378?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen resolved CAMEL-22378.
---------------------------------
    Resolution: Won't Fix

there is various APIs to gather such details already.

Camel is used primary as a microcontainer app where you dont install and 
uninstall "routes" or "apps". That is an app server ala tomcat / jboss / karaf 
job to do.

> Installation report
> -------------------
>
>                 Key: CAMEL-22378
>                 URL: https://issues.apache.org/jira/browse/CAMEL-22378
>             Project: Camel
>          Issue Type: Wish
>          Components: came-core
>    Affects Versions: 4.14.0
>            Reporter: Raymond
>            Priority: Major
>
> This ticket is basically a wish/idea to better information after installation 
> of routes or a route group.
> The routeController actions, such as start/stop/suspend/resume currently are 
> void and don't return the status/result of the action. Sometimes however one 
> would like to have more information. 
> There is the 
> {{[hasUnhealthyRoutes|https://www.javadoc.io/static/org.apache.camel/camel-api/4.14.0/org/apache/camel/spi/RouteController.html#hasUnhealthyRoutes()]()}}
>  method and {{getRouteStatus(routeId). But hasUnhealthyRoutes only return a 
> boolean, while the getRouteStatus }}returns a {{ServiceStatus}} enum 
> ({{{}Started{}}}, {{{}Starting{}}}, {{{}Stopped{}}}, {{{}Failed{}}}, etc.).
> Of course there are indirect ways to get more information such as 
> EventNotifier or RoutePolicy, but I think the routeController could provide 
> an easier access to such information.
> I would like to have a report with information like:
> 1. Route ID
> 2. Group
> 3. From uri
> 4. Time (Either a unix timestamp or an ISO 8601 date)
> 5. ServiceStatus
> 6. Unhealhy (true/false)
> 7. Error message
> A method such as "getInstallationReport("routeId")" could return:
> {
>     "routeId": "123",
>     "group": "order",
>     "time": "2025-08-27T09:04:32.456",
>     "fromUri": "sql:somesql",
>     "unhealthy": true,
>     "status": "failed",
>     "error": "Database error"
> }
> For a group or all routes it can be put in a JSONArray. For example 
> getInstallationReportByGroup("myGroup")
> [{
>     "routeId": "123",
>     "group": "order",
>     "time": "2025-08-27T09:04:32.456",
>     "fromUri": "sql:somesql",
>     "unhealthy": true,
>     "status": "failed",
>     "error": "Database error"
> },
> {
>     "routeId": "456",
>     "group": "order",
>     "time": "2025-08-27T09:04:34.362",
>     "fromUri": "direct:validate",
>     "unhealthy": false,
>     "status": "started",
>     "error": ""
> }]
> This can be either per route or route group. To give an idea, here is an 
> example installation report that is returned by Assimbly (a flow in this case 
> is group, while step a route):
> {code:java}
> {"flow": {
>     "stepsLoaded": {
>         "total": 5,
>         "successfully": 5,
>         "failed": 0
>     },
>     "name": "686e726ecd40200007000004",
>     "id": "686e726ecd40200007000004",
>     "time": "1535 milliseconds",
>     "event": "start",
>     "message": "Started flow successfully",
>     "version": "",
>     "steps": [
>         {
>             "id": "0",
>             "type": "error",
>             "uri": "",
>             "status": "success"
>         },
>         {
>             "id": "94bd94b8efa7",
>             "type": "routeTemplate",
>             "uri": "texttobase64",
>             "status": "success"
>         },
>         {
>             "id": "886fd5a7817d",
>             "type": "routeTemplate",
>             "uri": "setbody?language=simple&expression=1234",
>             "status": "success"
>         },
>         {
>             "id": "706c927a3480",
>             "type": "routeTemplate",
>             "uri": "log?showBody=true&showException=false&showHeaders=false",
>             "status": "success"
>         },
>         {
>             "id": "22fe3e66c3cc",
>             "type": "routeTemplate",
>             "uri": "https://0.0.0.0:9001/test/inbound_http/_new/textToBase64";,
>             "status": "success"
>         }
>     ]
> }} {code}
>  
> I guess such a report would be handy whether you start route or route group 
> through the routecontroller, routeloader or context.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to