-
Notifications
You must be signed in to change notification settings - Fork 712
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Details panel redesign #752
Conversation
ab97e1f
to
5e26db9
Compare
Some feedback on go code (high level, not line by line):
|
Responses inline:
d'oh!
Sounds nicer, will have a look into how much shared code there is
Agree!
Without the
A better structure for parents sounds nice. Unfortunately, gathering parents recursively is no good. For a container, it would grab all the parents of the container image which will include all hosts running that image.
ack |
f2f discussion with @tomwilkie brought up that we should maybe try to set parents on the Node, not on RenderableNode, then aggregate them when merging. Doing it on the Probe would be nice, but not possible in all cases (k8s). Also, that possibly |
239a83d
to
77e6dd9
Compare
Some more feedback (its looking awesome, but...)
|
More feedback:
This one might be hard:
Going to look at code now. |
for id, node := range topology.Nodes { | ||
topology.AddNode(id, node.WithMetadata(metadata)) | ||
for id, node := range t.Nodes { | ||
t.AddNode(id, node.WithID(id).WithTopology(name)) |
This comment was marked as abuse.
This comment was marked as abuse.
Sorry, something went wrong.
@tomwilkie you can see the parent PID on hover, good enough? Is that the same as "PID" in that context (if so, maybe we drop the "Parent")? |
return nil | ||
} | ||
|
||
func processNodeMetrics(nmd report.Node) []MetricRow { |
This comment was marked as abuse.
This comment was marked as abuse.
Sorry, something went wrong.
This comment was marked as abuse.
This comment was marked as abuse.
Sorry, something went wrong.
Last |
Wow looks awesome!
Stuff thats already been mentioned:
|
Also PID sorting seems to be doing it alphabetically, which is a bit strange. |
Whether it is a link or not is determined by the process having connections. Processes without any connections don't show up in the process view, so there's not really anything to link to. We could link them to a process details panel, but hide the link to "go to topology" (or just show the process topology with a details panel for a non-existing node). |
778852c
to
7ae4491
Compare
I hypothesise that it may be this bug: #815 We merge all the processes and containers into the host (to get the children), but that brings the metrics with it, and since some of those keys happen to overlap, they all get merged in, and a random number is chosen. |
Roger, please file a ticket against 0.13 and we'll do that then.
Ditto, we can fix in 0.13
Okay we need to fix this before the merge - I think dropping the metrics when we create new "Derived" nodes in the rendering will be enough for now. I'll take a look today. |
|
Megasquish: [app] remove unused edge endpoint [WIP] refactoring node details api endpoint [WIP] plumbing the children through the rendering process adding IDList.Remove and StringSet.Remove [WIP] working on adding parents to detailed node renderings WIP UI components with mock backend data for new details grouping children by type UI components for node details health and info metric formatters for details panel Column headers and links for details table [WIP] started on rendering node metadata and metrics in the detail view DetailedNode.LabelMajor -> DetailedNode.Label rendering decent labels for parents of detailed nodes render metrics onto the top-level detailed node removing dead code Links to relatives metrics have a Format not Unit Show more/less actions for tables and relatives adjusted metric formatter TopologyTagger should tag k8s topology nodes make renderablenode ids more consistent, e.g. container:abcd1234 working on rendering correct summaries for each node adding report.Node.Rank, so that merging is independent of order rendering children and parents correctly output child renderableNode ids, so we can link to them add group field to metrics, so they can be grouped Refactored details health items to prepare for grouping add metrics to processNodeSummaries hide summary section if there is no data for it fixing up tests moving detailed node rendering into a separate package Node ID/Topology are fields not metadata - This way I think we don't have to care about Metadata being non-commutative. - ID and topology are still non-commutative, as I'm not sure how to sanely merge them, but it's possible we don't care. host memory usage is a filesize, not a percent working on fixing some tests adding children to hosts detail panel - Had to redo how parents are calculated, so that children wouldn't interfere with it - have to have the host at the end because it is non-commutative only render links for linkable children (i.e. not unconnected processes) resolving TODOs fixing up lint errors make nil a valid value for render.Children so tests are cleaner working on backend tests make client handle missing metrics property Stop rendering container image nodes with process summaries/parents fix parent link to container images Calculate parents as a set on report.Node (except k8s) refactoring detailed.NodeSummary stuff removing RenderableNode.Summary*, we already track it on report.Node working on tests add Columns field to NodeSummaryGroup fixing up render/topologies_test fix children links to container images get children of hosts rendering right working on host renderer tests Change container report.Node.ID to a1b2c3;<container> The id should be globally unique, so we don't need the host id. This lets the kubernetes probe return a container node with the pod id, which will get merged into the real containers with other reports. The catch is that the kubernetes api doesn't tell us which hostname the container is running on, so we can't populate the old-style node ids. change terminology of system pods and services Fix kubernetes services with no selector Fixes handling of kubernetes service, which has no pods fix parent links for pods/services refactor detailed metadata to include sets and latest data fixing up host rendering tests fleshing out tests for node metadata and metrics don't render container pseudo-nodes as processes Update test for id format change.
Refactored nodedetails to support multiple data sets, probably broke some tests Allow api requests to out-of-view topologies Fix ESC behavior with details panel Stack details panel like cards Details pain side-by-side Details panel piles Fix node details table header styles Render load and not-found captions like relatives Fix topology click action Make node detail tables sortable Grouped metrics for details health Group metrics in same style Link node details children Fix scroll issues on double-details Fix DESC sort order for node details table Save selected node labels in state - allows rendering of node labels from other topologies before details are loaded Change detail card UX, newest one at top, pile at bottom Details panel one pile w/ animation Sort details table nodes by metadata too Animate sidepanel from children too Fix radial layout Dont set origin if a node was already selected, suppresses animation stack effect: shift top cards to the left, shrink lower cards vertically Clear details card stack if sibling is selected Check if node is still selected on API response Make detail table sorters robust against non-uniform metadata Dont show scrollbar all the time, fix sort icon issue Button to show topology for relative Overflow metrics for details panel health Fix JS error when no metrics are available for container image details Column-based rendering of node details table Fix JS tests Review feedback (UI)
They stopped working because of the change to container node IDs (and rendered nodes IDs for containers). The UI was comparing the IDs, which was never safe. I have just removed that code. This does leave the possibility of us having the pipe control operation take a long time, the user navigate to a different node, and then the terminal pop up, but I think thats better that teaching the UI to understand the format of the node IDs.
- Treat control objects that come back from the server as little black boxes. - Pass our local client nodeId around more instead, use that for comparisons etc, (vs. inspecting the control object and doing brittle magic w/ the ids).
af5f2e4
to
27300af
Compare
27300af
to
e877f3d
Compare
e877f3d
to
c43abd6
Compare
We've LGTMed and agreed in chat to merge this, then continue working, as rebasing is becoming painful. |
This PR is to redesign the details panel that appears when clicking on a node. Fixes #382, fixes #301.
add connections summary section(pushed to Consider deduping connections by client port numbers in the details panel #680)<none>:<none>
as a parent (also containers with no name displaying as<none>
)