feat(topology): add controls to filter report results from Topology decorator #1609
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Welcome to Cryostat! 👋
Before contributing, make sure you have:
main
branch[chore, ci, docs, feat, fix, test]
To recreate commits with GPG signature
git fetch upstream && git rebase --force --gpg-sign upstream/main
Depends on cryostatio/cryostat#880
Description of the change:
Adds a Settings tab for Topology configuration. This tab currently just contains this dual-list selector. The available rules to be analyzed come from the backend's new
/api/v4.1/reports_rules
endpoint, which provides a list of JMC analysis rules known to the current Cryostat server (which should match any configured sidecar report generators as well). The backend provides these as a flat list, and the frontend organizes them into a tree based on thetopic
keys forming parent nodes to children of the same topic. The selected rules to be ignored in the Topology view context are just selections from that list of available rules. The screenshot shows the default state set up in this PR, which will be the default for any browser client on first run after this PR. The actual client-side representation of these selections is simply a flat list of the rule IDs (this presumes no rules have null or duplicate IDs), which is stored in the Redux store and therefore persisted to localstorage and restored whenever the frontend is reopened.Motivation for the change:
Some automated analysis rules report about dynamic performance issues (ex. heap allocation, CPU usage) whereas others report about potential JVM configuration issues (ex. the ones ignored by default here). For the purposes of the Topology view, which is intended more to give a performance-oriented overview of the entire deployment scenario, it is more useful for the node health decorator to be colour-coded and display information that only accounts for dynamic performance rules and ignores configuration rules. In particular, in Kubernetes environments, rules about PID 1 or passwords being present in environment variables/system properties/JVM arguments are probably unwanted noise for users, especially in a Topology overview context.
How to manually test:
./smoketest.bash -O -t quarkus-cryostat-agent
(in the Cryostat project directory)