Skip to content

NETOBSERV-428: Edges aggregation automation - #1697

Merged
Amoghrd merged 8 commits into
netobserv:mainfrom
Amoghrd:netobserv-428
Aug 13, 2026
Merged

Amoghrd merged 8 commits into
netobserv:mainfrom
Amoghrd:netobserv-428

Conversation

@Amoghrd

@Amoghrd Amoghrd commented Aug 11, 2026

Copy link
Copy Markdown
Member

Description

Automation for edges groups aggregation automation

Dependencies

#1618

Checklist

  • Does the changes in PR need specific configuration or environment set up for testing?
    • if so please describe it in PR description.
  • I have added thorough unit tests for the change.
  • QE requirements (check 1 from the list):
    • Standard QE validation, with pre-merge tests unless stated otherwise.
    • Regression tests only (e.g. refactoring with no user-facing change).
    • No QE (e.g. trivial change with high reviewer's confidence, or per agreement with the QE team).

Summary by CodeRabbit

  • New Features

    • Added a Group edges option to topology display settings.
    • Topology now groups parallel connections between selected groups by default, with aggregated edges showing bridge and endpoint connections.
    • Group-edge behavior updates when changing group types, hiding edges, collapsing groups, or changing metrics.
    • Grouped topology settings persist between sessions.
  • Bug Fixes

    • Improved edge layout, positioning, highlighting, and selection for grouped connections.
  • Tests

    • Expanded coverage for grouping, toggling, persistence, collapsing, and edge visibility.

jpinsonneau and others added 6 commits July 27, 2026 15:47
…licker

Clear fixed endpoints and force-resnap only on collapse and layout end,
and wrap group collapse mutations in MobX action without deep-importing
DefaultGroup (avoids duplicate ElementContext vs Console vendors).

Co-authored-by: Cursor <cursoragent@cursor.com>
Clear unset endpoints before early-return in applySnapPlan, fall back from
bridgeId to bridgeKey, and mirror Ctrl/Meta multi-select for related segments.

Co-authored-by: Cursor <cursoragent@cursor.com>
@openshift-ci-robot

openshift-ci-robot commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

@Amoghrd: This pull request references NETOBSERV-428 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Description

Automation for edges groups aggregation automation

Dependencies

#1618

Checklist

  • Does the changes in PR need specific configuration or environment set up for testing?
    • if so please describe it in PR description.
  • I have added thorough unit tests for the change.
  • QE requirements (check 1 from the list):
  • Standard QE validation, with pre-merge tests unless stated otherwise.
  • Regression tests only (e.g. refactoring with no user-facing change).
  • No QE (e.g. trivial change with high reviewer's confidence, or per agreement with the QE team).

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@Amoghrd, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 50 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 2c5f9531-9985-4fb8-a1ac-f692a1ec6535

📥 Commits

Reviewing files that changed from the base of the PR and between 4e33a82 and 744b723.

📒 Files selected for processing (2)
  • web/cypress/integration-tests/topology_edges_labels.cy.ts
  • web/cypress/integration-tests/topology_groups.cy.ts
📝 Walkthrough

Walkthrough

The topology now supports grouped aggregate edges with configurable controls, model aggregation, resnapping, layout filtering, aggregate selection, persistence, and Cypress coverage for toggling and collapse behavior.

Changes

Aggregate topology edges

Layer / File(s) Summary
Aggregate edge model
web/src/utils/create-aggregate-edges.ts, web/src/model/topology.ts, web/src/model/__tests__/topology.spec.ts
The model creates exit, bridge, and entry segments, merges parallel edges, applies metrics and visual state, and bypasses aggregation when disabled.
Topology integration and controls
web/src/components/dropdowns/topology-display-options.tsx, web/src/components/tabs/netflow-topology/2d/topology-content.tsx, web/src/components/tabs/netflow-topology/2d/styles/styleGroup.tsx, web/locales/en/plugin__netobserv-plugin.json
The UI adds the “Group edges” option. Topology updates rebuild, highlight, and resnap aggregate edges during layout and collapse changes.
Aggregate edge rendering and layout
web/src/components/tabs/netflow-topology/2d/componentFactories/*, web/src/components/tabs/netflow-topology/2d/styles/*, web/src/components/tabs/netflow-topology/2d/layouts/*
Factories render aggregate edges with role-specific styles. Layout helpers filter invalid links, and aggregate edges support snapping and grouped selection.
Topology control and behavior validation
web/cypress/e2e/topology/topology.spec.ts, web/cypress/integration-tests/topology_*.cy.ts, web/cypress/views/netflow-page.ts
Cypress coverage verifies defaults, dependencies, toggling, persistence, edge counts, visibility, and collapse behavior.

Estimated code review effort: 5 (Critical) | ~120 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the primary change: automated aggregation of topology edges.
Description check ✅ Passed The description includes the required sections, dependency, and QE decision, but it does not explain the implementation or testing details.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Amoghrd
Amoghrd requested a review from jpinsonneau August 11, 2026 21:50

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (9)
web/src/components/tabs/netflow-topology/2d/topology-content.tsx (3)

521-527: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

The prefix and suffix checks are redundant.

id.includes(highlightedId) already matches id.startsWith(\${highlightedId}.`)andid.endsWith(`.${highlightedId}`). If the intent is to avoid substring false positives, invert the logic: drop includes` and keep the two anchored checks.

♻️ Anchored matching without the broad `includes`
             const leafIds = (data.aggregatedEdgeIds as string[] | undefined) || [];
             if (!highlighted && leafIds.length) {
-              highlighted = leafIds.some(
-                id =>
-                  id.includes(highlightedId) || id.startsWith(`${highlightedId}.`) || id.endsWith(`.${highlightedId}`)
-              );
+              highlighted = leafIds.some(
+                id => id === highlightedId || id.startsWith(`${highlightedId}.`) || id.endsWith(`.${highlightedId}`)
+              );
             }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/src/components/tabs/netflow-topology/2d/topology-content.tsx` around
lines 521 - 527, Update the highlighted leaf-ID matching in the highlighted
check to remove the broad id.includes(highlightedId) condition and retain only
the anchored startsWith and endsWith checks, preventing substring false
positives.

289-297: 🚀 Performance & Scalability | 🔵 Trivial | 💤 Low value

bumpSnapGeneration re-renders the whole topology subtree on every layout end.

graphLayoutEndEvent fires each time a layout completes, including repeated Cola settle events during drag. Each bump sets state, which re-renders TopologyContent and every consumer of AggregateEdgeSnapContext.

Consider skipping the bump when no aggregate edge exists, or throttling it. clearAggregateEdgeEndpoints already walks the element list, so it can return whether it touched anything.

As per coding guidelines: "Optimize frontend performance by avoiding unnecessary re-renders and optimizing query patterns".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/src/components/tabs/netflow-topology/2d/topology-content.tsx` around
lines 289 - 297, Update clearAggregateEdgeEndpoints and onLayoutEnd so snap
generation is bumped only when stale aggregate edge endpoints were actually
removed; have clearAggregateEdgeEndpoints return whether it changed anything,
and conditionally call bumpSnapGeneration based on that result to avoid
unnecessary topology subtree re-renders.

Source: Coding guidelines


489-539: 🚀 Performance & Scalability | 🔵 Trivial | 💤 Low value

The highlight effect scans every element on each hover event.

selectedIds is a new array reference on each setSelectedIds call, so the effect re-runs even when the contents are unchanged. Combined with controller.getElements(), this is an O(elements) pass per hover and per selection update.

Consider deriving a stable key such as selectedIds.join('|') for the dependency, and building an element index once instead of a full scan.

As per coding guidelines: "Optimize frontend performance by avoiding unnecessary re-renders and optimizing query patterns".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/src/components/tabs/netflow-topology/2d/topology-content.tsx` around
lines 489 - 539, Optimize the highlight effect around controller.getElements()
to avoid rerunning for unchanged selection contents and scanning all elements on
every hover. Derive a stable selectedIds key such as selectedIds.join('|') for
the effect dependency, and build or reuse an element index so highlighting
updates only relevant nodes, groups, and edges while preserving shadow and
multi-selection behavior.

Source: Coding guidelines

web/src/model/__tests__/topology.spec.ts (1)

123-141: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add a collapsed-group test case.

The suite covers expanded groups only. maybeAggregateEdges always passes collapsedGroups: true, and the collapse path is where endpoints get remapped. Add a case with collapsed: true on the group nodes and assert that no aggregate segment references a hidden leaf node. This also pins the behavior discussed in web/src/utils/create-aggregate-edges.ts lines 403-411.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/src/model/__tests__/topology.spec.ts` around lines 123 - 141, Add a
collapsed-group test alongside the existing maybeAggregateEdges coverage,
marking the relevant group nodes as collapsed and invoking the same aggregation
path. Assert that every aggregate segment’s endpoints avoid hidden leaf node
IDs, covering endpoint remapping while preserving the existing expanded-group
expectations.
web/cypress/integration-tests/topology_groups.cy.ts (1)

112-142: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Add settle waits and tighten the assertion in both toggle tests.

Two stability problems:

  1. After uncheck(), the topology resets the graph and re-runs layout asynchronously. cy.get(...).its('length').then(...) does not retry the .then body, so leafCount can capture the pre-toggle DOM. Call topologyPage.isViewRendered() after each toggle.
  2. should('not.eq', leafCount) passes on any difference, including an increase. The test titles state that group edges "reduce edge count". Assert be.lessThan.

As per path instructions: "Verify E2E test stability, proper waits, and selector resilience".

💚 Proposed fix (apply the same shape to both tests)
         // disable group edges and record leaf count
         cy.get(topologySelectors.groupEdgesToggle).uncheck()
+        topologyPage.isViewRendered()
 
         cy.get('`#drawer` ' + topologySelectors.edge).its('length').then(leafCount => {
             // enable group edges and verify count changes
             cy.get(topologySelectors.groupEdgesToggle).check()
-            cy.get('`#drawer` ' + topologySelectors.edge).its('length').should('not.eq', leafCount)
+            topologyPage.isViewRendered()
+            cy.get('`#drawer` ' + topologySelectors.edge).should('have.length.lessThan', leafCount)
         })
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/cypress/integration-tests/topology_groups.cy.ts` around lines 112 - 142,
Update both group-edge toggle tests around the existing uncheck/check calls:
invoke topologyPage.isViewRendered() after each toggle so the graph settles
before measuring or asserting edge counts, and replace the final not.eq
comparison with a be.lessThan assertion to verify enabling group edges reduces
the count.

Source: Path instructions

web/src/utils/create-aggregate-edges.ts (2)

178-199: 🎯 Functional Correctness | 🔵 Trivial | 💤 Low value

Opposite-direction leaf edges create duplicate stub geometry.

Stub ids encode direction (aggregate_exit_a_b_<key> vs aggregate_entry_b_a_<key>). For a leaf pair a1→b1 and b1→a1, the same node/group hop produces one exit stub and one entry stub that overlap visually. The bridge merges correctly, but the stubs do not.

Consider keying stubs by the unordered node/group pair and deriving the arrow from the merged bidirectional flag. Confirm the intended visual before changing.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/src/utils/create-aggregate-edges.ts` around lines 178 - 199, Update the
exit/entry stub generation around segments so opposite-direction leaf edges
share one stub keyed by the unordered node/group pair rather than
direction-specific IDs. Merge matching stubs and derive their arrow direction
from the resulting bidirectional flag, while preserving the existing bridge
segment behavior and distinct geometry for unrelated pairs.

242-268: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Remove the unused leafSource parameter. createSegmentEdge never reads it. Remove it and update both call sites.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/src/utils/create-aggregate-edges.ts` around lines 242 - 268, Remove the
unused leafSource parameter from createSegmentEdge and update both call sites to
stop passing that argument, preserving the existing edge construction and
labeling behavior.
web/src/components/tabs/netflow-topology/2d/layouts/layoutFactory.ts (1)

20-23: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick win

Cola and the default case still use the unfiltered PatternFly layout.

BreadthFirst and ColaGroups now filter exit/entry stubs and self-loops. Cola, ColaNoForce, and the default branch still use ColaLayout from @patternfly/react-topology, so aggregate stub edges keep producing self-loop constraints there. Cola is also the default layout. Confirm this is intentional, or extend the same collectLayoutLinks override to ColaLayout.

Also applies to: 36-37

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/src/components/tabs/netflow-topology/2d/layouts/layoutFactory.ts` around
lines 20 - 23, Update the Cola and default layout branches in the layout factory
to use the filtered collectLayoutLinks behavior already applied to BreadthFirst
and ColaGroups, including the ColaNoForce variant. Ensure aggregate stub edges
and self-loops are excluded while preserving the existing Cola layout options.
web/src/components/tabs/netflow-topology/2d/styles/styleAggregateEdge.tsx (1)

341-354: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick win

Render-path bridge lookup can scan all edges on every render.

findRelatedBridge runs during render for every exit/entry edge. When bridgeId is absent, it falls back to a full getGraph().getEdges() scan, so the cost is O(E) per edge and O(E²) per frame during Cola ticks. The comment above states that the render path must stay cheap. Cache the resolved bridge per edge, or guarantee that bridgeId is always set by the model layer so the fallback never runs on the hot path.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/src/components/tabs/netflow-topology/2d/styles/styleAggregateEdge.tsx`
around lines 341 - 354, Update the render-path bridge resolution around
findRelatedBridge in the hasController exit/entry branch so it cannot scan
getGraph().getEdges() on every render. Prefer caching the resolved bridge per
edge; alternatively, enforce bridgeId in the model layer and remove or bypass
the full-edge fallback, while preserving the existing geoKey construction.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@web/cypress/integration-tests/topology_edges_labels.cy.ts`:
- Around line 66-77: Update the edge-count assertions in the topology test
around the groupEdgesToggle flow to wait for deterministic aggregate-marker
state before reading counts: after uncheck(), wait for aggregate-edge-bridge,
aggregate-edge-exit, and aggregate-edge-entry elements to be absent; after
check(), wait for them to be present. Then compare the post-render leaf count
with aggregatedCount, preferably asserting the expected direction, and retain
the final aggregate count validation only after the presence gate.

In `@web/cypress/integration-tests/topology_groups.cy.ts`:
- Around line 112-142: Update the topology group edge tests in
web/cypress/integration-tests/topology_groups.cy.ts at lines 112-142 by calling
topologyPage.isViewRendered() after each groupEdgesToggle check() and uncheck(),
and assert the grouped edge count with have.length.lessThan rather than not.eq.
At lines 153-163, call topologyPage.isViewRendered() after each groupToggle
click and require at least one edge with have.length.gte, 1 instead of the
tautological zero-or-more assertion.

In `@web/src/components/tabs/netflow-topology/2d/styles/styleGroup.tsx`:
- Around line 39-54: Update useMobxSafeCollapseMutations to avoid direct
assignment to the non-writable prototype method setDimensions. If retaining the
patch, install both setCollapsed and setDimensions wrappers as own properties
via Object.defineProperty, and remove those own properties during cleanup so the
original prototype methods are restored; otherwise wrap the mutations at their
call site.

In `@web/src/utils/create-aggregate-edges.ts`:
- Around line 403-411: The no-segment branch of aggregateByGroupEdges must
preserve collapsed-group remapping: in web/src/utils/create-aggregate-edges.ts
lines 403-411, emit a bridge segment between the remapped source and target and
hide the original leaf when either endpoint changes, matching
aggregateByCollapsedGroups. Add coverage in
web/src/model/__tests__/topology.spec.ts lines 123-141 with sibling group nodes
marked collapsed, asserting that no returned segment references a hidden leaf
node.

---

Nitpick comments:
In `@web/cypress/integration-tests/topology_groups.cy.ts`:
- Around line 112-142: Update both group-edge toggle tests around the existing
uncheck/check calls: invoke topologyPage.isViewRendered() after each toggle so
the graph settles before measuring or asserting edge counts, and replace the
final not.eq comparison with a be.lessThan assertion to verify enabling group
edges reduces the count.

In `@web/src/components/tabs/netflow-topology/2d/layouts/layoutFactory.ts`:
- Around line 20-23: Update the Cola and default layout branches in the layout
factory to use the filtered collectLayoutLinks behavior already applied to
BreadthFirst and ColaGroups, including the ColaNoForce variant. Ensure aggregate
stub edges and self-loops are excluded while preserving the existing Cola layout
options.

In `@web/src/components/tabs/netflow-topology/2d/styles/styleAggregateEdge.tsx`:
- Around line 341-354: Update the render-path bridge resolution around
findRelatedBridge in the hasController exit/entry branch so it cannot scan
getGraph().getEdges() on every render. Prefer caching the resolved bridge per
edge; alternatively, enforce bridgeId in the model layer and remove or bypass
the full-edge fallback, while preserving the existing geoKey construction.

In `@web/src/components/tabs/netflow-topology/2d/topology-content.tsx`:
- Around line 521-527: Update the highlighted leaf-ID matching in the
highlighted check to remove the broad id.includes(highlightedId) condition and
retain only the anchored startsWith and endsWith checks, preventing substring
false positives.
- Around line 289-297: Update clearAggregateEdgeEndpoints and onLayoutEnd so
snap generation is bumped only when stale aggregate edge endpoints were actually
removed; have clearAggregateEdgeEndpoints return whether it changed anything,
and conditionally call bumpSnapGeneration based on that result to avoid
unnecessary topology subtree re-renders.
- Around line 489-539: Optimize the highlight effect around
controller.getElements() to avoid rerunning for unchanged selection contents and
scanning all elements on every hover. Derive a stable selectedIds key such as
selectedIds.join('|') for the effect dependency, and build or reuse an element
index so highlighting updates only relevant nodes, groups, and edges while
preserving shadow and multi-selection behavior.

In `@web/src/model/__tests__/topology.spec.ts`:
- Around line 123-141: Add a collapsed-group test alongside the existing
maybeAggregateEdges coverage, marking the relevant group nodes as collapsed and
invoking the same aggregation path. Assert that every aggregate segment’s
endpoints avoid hidden leaf node IDs, covering endpoint remapping while
preserving the existing expanded-group expectations.

In `@web/src/utils/create-aggregate-edges.ts`:
- Around line 178-199: Update the exit/entry stub generation around segments so
opposite-direction leaf edges share one stub keyed by the unordered node/group
pair rather than direction-specific IDs. Merge matching stubs and derive their
arrow direction from the resulting bidirectional flag, while preserving the
existing bridge segment behavior and distinct geometry for unrelated pairs.
- Around line 242-268: Remove the unused leafSource parameter from
createSegmentEdge and update both call sites to stop passing that argument,
preserving the existing edge construction and labeling behavior.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 711c494c-2261-4127-b3c0-41fc2cf3679e

📥 Commits

Reviewing files that changed from the base of the PR and between 1436ffe and 4e33a82.

📒 Files selected for processing (24)
  • web/cypress/e2e/topology/topology.spec.ts
  • web/cypress/integration-tests/topology_edges_labels.cy.ts
  • web/cypress/integration-tests/topology_groups.cy.ts
  • web/cypress/integration-tests/topology_view.cy.ts
  • web/cypress/views/netflow-page.ts
  • web/locales/en/plugin__netobserv-plugin.json
  • web/src/components/dropdowns/topology-display-options.tsx
  • web/src/components/tabs/netflow-topology/2d/aggregate-edge-snap-context.tsx
  • web/src/components/tabs/netflow-topology/2d/componentFactories/componentFactory.ts
  • web/src/components/tabs/netflow-topology/2d/componentFactories/stylesComponentFactory.tsx
  • web/src/components/tabs/netflow-topology/2d/components/edge.tsx
  • web/src/components/tabs/netflow-topology/2d/layouts/__tests__/layout-edges.spec.ts
  • web/src/components/tabs/netflow-topology/2d/layouts/baseLayout.ts
  • web/src/components/tabs/netflow-topology/2d/layouts/breadthFirstLayout.ts
  • web/src/components/tabs/netflow-topology/2d/layouts/colaGroupsLayout.ts
  • web/src/components/tabs/netflow-topology/2d/layouts/layout-edges.ts
  • web/src/components/tabs/netflow-topology/2d/layouts/layoutFactory.ts
  • web/src/components/tabs/netflow-topology/2d/styles/styleAggregateEdge.tsx
  • web/src/components/tabs/netflow-topology/2d/styles/styleEdge.tsx
  • web/src/components/tabs/netflow-topology/2d/styles/styleGroup.tsx
  • web/src/components/tabs/netflow-topology/2d/topology-content.tsx
  • web/src/model/__tests__/topology.spec.ts
  • web/src/model/topology.ts
  • web/src/utils/create-aggregate-edges.ts
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • netobserv/netobserv-operator (manual)
  • netobserv/flowlogs-pipeline (manual)

Comment thread web/cypress/integration-tests/topology_edges_labels.cy.ts
Comment thread web/cypress/integration-tests/topology_groups.cy.ts
Comment thread web/src/components/tabs/netflow-topology/2d/styles/styleGroup.tsx
Comment thread web/src/utils/create-aggregate-edges.ts
Comment on lines +58 to 59
cy.get('#drawer ' + topologySelectors.edge).should('have.length', 29)
cy.get('#drawer ' + topologySelectors.node).should('have.length', 15)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if there is a better way than just counting edges here 🤔

Do you often change those values ?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, dont change it often. Very rarely when new features are developed around it and the numbers update.
As far as I remember, I have updated it twice until now from when I started working😅

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's keep as is then ! Thx

jpinsonneau
jpinsonneau previously approved these changes Aug 12, 2026

@jpinsonneau jpinsonneau left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, just rebase and ensure all tests pass 😃

@Amoghrd

Amoghrd commented Aug 12, 2026

Copy link
Copy Markdown
Member Author

@jpinsonneau I have 2 questions regarding #1618:

  • All the coderabbit review comments on this PR are related to the above PR changes, do you want to incorporate them?
  • Second, you are going to backport to pf-5 branch as well right?

@jpinsonneau

jpinsonneau commented Aug 12, 2026

Copy link
Copy Markdown
Member

@jpinsonneau I have 2 questions regarding #1618:

  • All the coderabbit review comments on this PR are related to the above PR changes, do you want to incorporate them?

The 🐰 didn't produced the same feedback on my PR 😢 I already addressed what I wanted to cover so I guess we should just rebase and see what's produced with your changes only.

  • Second, you are going to backport to pf-5 branch as well right?

Yes, let me open a PR for that 👍
=> #1698

@Amoghrd

Amoghrd commented Aug 12, 2026

Copy link
Copy Markdown
Member Author

Okay that means these rabbit review comments are not necessary for your PR right?
After rebase if there are comments based on my PR changes, I will add/fix those

@openshift-ci openshift-ci Bot removed the lgtm label Aug 12, 2026
@openshift-ci

openshift-ci Bot commented Aug 12, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please ask for approval from jpinsonneau. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@jpinsonneau

Copy link
Copy Markdown
Member

/test integration-tests

@jpinsonneau jpinsonneau left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@openshift-ci openshift-ci Bot added the lgtm label Aug 13, 2026
@openshift-ci

openshift-ci Bot commented Aug 13, 2026

Copy link
Copy Markdown

@Amoghrd: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/integration-tests 744b723 link false /test integration-tests

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@Amoghrd
Amoghrd merged commit f1ab7e6 into netobserv:main Aug 13, 2026
8 of 10 checks passed
@Amoghrd

Amoghrd commented Aug 13, 2026

Copy link
Copy Markdown
Member Author

/cherry-pick main-pf5

@openshift-cherrypick-robot

Copy link
Copy Markdown
Contributor

@Amoghrd: new pull request created: #1701

Details

In response to this:

/cherry-pick main-pf5

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

jpinsonneau added a commit to jpinsonneau/network-observability-console-plugin that referenced this pull request Aug 13, 2026
Wait for demo Loki pods before Ready, type adminCLI exec results,
make checkDashboards detach-safe, and wait for eBPF accordion panels.
Topology edge counts are covered by Amogh's netobserv#1697 group-edges updates.

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants