[
https://issues.apache.org/jira/browse/CAMEL-26436?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Work on CAMEL-26436 started by shashank.
----------------------------------------
> camel-chaos - control a running application from the Camel CLI: a chaos dev
> console, camel cmd chaos-*, camel get chaos
> -----------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-26436
> URL: https://issues.apache.org/jira/browse/CAMEL-26436
> Project: Camel
> Issue Type: Improvement
> Components: camel-cli-connector, camel-jbang
> Reporter: shashank
> Assignee: shashank
> Priority: Major
>
> Next stage of CAMEL-26330 (design/chaos.adoc, section "Control", step 3 of
> "Order of work"), after CAMEL-26330 (apache/camel#28716) and CAMEL-26418
> (apache/camel#28754) put {{components/camel-chaos}} on main. So far rules can
> only be added with {{camel.chaos.rules}} at startup or from Java
> ({{ChaosManager}}); the design adds them to a running application from the
> Camel CLI.
> *Proposal*
> * A {{chaos}} dev console in camel-chaos, read only ({{@DevConsole}},
> {{isReadOnly()}} true): the current rules (id, version, state, matches,
> faults, end), the report (verdict, final, seed, all versions of every rule,
> counts per route), or why chaos is off. It has no option that adds, changes
> or removes a rule: {{/q/dev/*}} passes any query parameter as an option, so
> over HTTP chaos only lists and reports.
> * A {{chaos}} action in the CLI connector ({{LocalCliConnector}}): add,
> change, remove and clear through {{ChaosManager}}, with the same parser as
> {{camel.chaos.rules}}; a rule that is not valid is refused with the reason,
> an id that does not exist (change or remove) is "not found". It works only
> when chaos is switched on (profile {{dev}} or {{camel.chaos.enabled=true}},
> never profile {{prod}}): the action never creates a {{ChaosManager}}, so it
> cannot switch chaos on. camel-cli-connector does not depend on camel-chaos
> (with {{camel run}} the JAR comes in the class loader of the integration), so
> the manager is found by class name and called by reflection. The status of
> the CLI connector carries the console, for {{camel get chaos}}.
> * camel-jbang: {{camel cmd chaos-add|chaos-change|chaos-remove|chaos-clear}}
> (flat verb-noun commands like {{stop-route}}; add, change and remove need the
> name or pid of exactly one integration, as {{camel cmd sql}}, since rule ids
> are per integration; clear acts without one on all integrations that have
> chaos switched on), {{camel get chaos [--report] [--json]}}, and {{camel run
> --chaos}} (adds {{camel:chaos}}, as {{--observe}} adds
> observability-services; also with {{--runtime=main}} and for a Maven project;
> refused with Spring Boot and Quarkus for now, as the run would have to add
> camel-chaos to the exported project and give it Camel profile {{dev}}), with
> help text and the generated command docs.
> * Docs: the chaos page gets "Control while it runs"; the security model lists
> the chaos rules as a development opt-in and says that {{exception=}} can name
> any public {{Throwable}} class on the classpath; {{design/chaos.adoc}}
> catches up with what #28716 and #28754 built (poll strategy wrapped once,
> counting in the route policy, netty-http {{status=}} in CAMEL-26432), as
> asked in the review of #28754.
> The MCP tool group ({{camel_runtime_chaos_*}}, with {{destructiveHint=true}}
> on add and change and both in {{ToolConfirms}}, as agreed in the review of
> #28716) is the next step (design "Order of work", the MCP tool group), in its
> own pull request. Until then {{camel ask}} reaches the commands only through
> its {{camel}} command tool, which asks the user before {{camel cmd chaos-*}}
> (a {{camel cmd}} changes something).
> _Filed with Claude Code on behalf of allthingssecurity._
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)