Skip to content

Conversation

@tanushree-akamai
Copy link
Contributor

Description 📝

Implement Nodes Table in Network LoadBalancer Listener Detail page

Scope 🚢

Upon production release, changes in this PR will be visible to:

  • All customers
  • Some customers (e.g. in Beta or Limited Availability)
  • No customers / Not applicable

Preview 📷

Screenshot 2025-12-01 at 6 02 43 PM

How to test 🧪

Verification steps

  • Turn on the Network Load Balancer feature flag
  • Turn on Legacy Server Handlers MSW
  • Navigate to localhost:3000/netloadbalancers/1/listeners/1/nodes
  • Verify that you are able to see the Nodes Table
Author Checklists

As an Author, to speed up the review process, I considered 🤔

👀 Doing a self review
❔ Our contribution guidelines
🤏 Splitting feature into small PRs
➕ Adding a changeset
🧪 Providing/improving test coverage
🔐 Removing all sensitive information from the code and PR description
🚩 Using a feature flag to protect the release
👣 Providing comprehensive reproduction steps
📑 Providing or updating our documentation
🕛 Scheduling a pair reviewing session
📱 Providing mobile support
♿ Providing accessibility support


  • I have read and considered all applicable items listed above.

As an Author, before moving this PR from Draft to Open, I confirmed ✅

  • All tests and CI checks are passing
  • TypeScript compilation succeeded without errors
  • Code passes all linting rules

@tanushree-akamai tanushree-akamai added the Network Load Balancers Related to Network Load Balancers label Dec 1, 2025
Copy link
Member

@bnussman-akamai bnussman-akamai left a comment

Choose a reason for hiding this comment

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

Looks good, just left some things to keep in mind regarding API filtering

const { filter: searchFilter, error: searchError } = getAPIFilterFromQuery(
search?.query,
{
searchableFieldsWithoutOperator: ['id', 'linode_id', 'address_v6'],
Copy link
Member

@bnussman-akamai bnussman-akamai Dec 1, 2025

Choose a reason for hiding this comment

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

Usually we allow users to search by label by default because label is more user-friendly than numerical IDs. Is there a reason we're not doing that here? Looking at the API source code, label looks like it is filterable.

Suggested change
searchableFieldsWithoutOperator: ['id', 'linode_id', 'address_v6'],
searchableFieldsWithoutOperator: ['id', 'label', 'linode_id', 'address_v6'],

Copy link
Member

Choose a reason for hiding this comment

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

If we haven't done so already, we should make sure we test this with the real API because X-Filtering can have limitations. If the API doesn't like this query, we may need to simplify this to the following later on

Suggested change
searchableFieldsWithoutOperator: ['id', 'linode_id', 'address_v6'],
searchableFieldsWithoutOperator: ['label'],

Copy link
Contributor

Choose a reason for hiding this comment

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

The API doesn't support filtering on label for now.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes @bnussman-akamai, I have validated filtering with real time data as well.

Copy link
Member

Choose a reason for hiding this comment

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

Thanks!

@harsh-akamai harsh-akamai changed the title upcoming: [UIE-9564] - Implement Listener Detail - Nodes table. upcoming: [UIE-9564] - Implement Listener Detail - Nodes table Dec 2, 2025
},
to: '/netloadbalancers/$id/listeners',
});
},
Copy link
Contributor

Choose a reason for hiding this comment

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

Is there a reason this was removed?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

On merging with develop we updated this config.

@tanushree-akamai tanushree-akamai force-pushed the feature/UIE-9564-nodes-table branch from 677c8a2 to fa002a0 Compare December 3, 2025 13:17
@tanushree-akamai tanushree-akamai added the Add'tl Approval Needed Waiting on another approval! label Dec 3, 2025
Copy link
Contributor

@grevanak-akamai grevanak-akamai left a comment

Choose a reason for hiding this comment

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

Changes looks good to me. Thanks @tanushree-akamai

@github-project-automation github-project-automation bot moved this from Review to Approved in Cloud Manager Dec 3, 2025
@linode-gh-bot
Copy link
Collaborator

Cloud Manager UI test results

🔺 22 failing tests on test run #6 ↗︎

❌ Failing✅ Passing↪️ Skipped🕐 Duration
22 Failing840 Passing11 Skipped95m 47s

Details

Failing Tests
SpecTest
migrate-linode-with-firewall.spec.tsCloud Manager Cypress Tests→Migrate Linode With Firewall » migrates linode with firewall - real data
upgrade-volume.spec.tsCloud Manager Cypress Tests→volume upgrade/migration » can upgrade an unattached volume to NVMe
upgrade-volume.spec.tsCloud Manager Cypress Tests→volume upgrade/migration » can upgrade an attached volume from the volumes landing page
upgrade-volume.spec.tsCloud Manager Cypress Tests→volume upgrade/migration » can upgrade an attached volume from the linode details page
linode-config.spec.tsCloud Manager Cypress Tests→Linode Config management→End-to-End » Clones a config
clone-linode.spec.tsCloud Manager Cypress Tests→clone linode » can clone a Linode from Linode details page
create-database.spec.tsCloud Manager Cypress Tests→create a database cluster, mocked data » creates a g6-nanode-1 MySQL v8.x 1-node cluster
create-database.spec.tsCloud Manager Cypress Tests→create a database cluster, mocked data » creates a g6-dedicated-2 MySQL v8.x 2-node cluster
create-database.spec.tsCloud Manager Cypress Tests→create a database cluster, mocked data » creates a g6-dedicated-2 MySQL v5.x 3-node cluster
create-database.spec.tsCloud Manager Cypress Tests→create a database cluster, mocked data » creates a g6-nanode-1 PostgreSQL v13.x 3-node cluster
create-database.spec.tsCloud Manager Cypress Tests→create a database cluster, mocked data » creates a g7-premium-2 MySQL v8.x 1-node cluster
create-database.spec.tsCloud Manager Cypress Tests→create a database cluster, mocked data » creates a g7-premium-4 MySQL v8.x 2-node cluster
delete-volume.spec.tsCloud Manager Cypress Tests→volume delete flow » deletes a volume
attach-volume.spec.tsCloud Manager Cypress Tests→volume attach and detach flows » attaches a volume to a Linode
linode-storage.spec.tsCloud Manager Cypress Tests→linode storage tab » deletes a disk
linode-storage.spec.tsCloud Manager Cypress Tests→linode storage tab » resize disk
machine-image-upload.spec.tsCloud Manager Cypress Tests→machine image » uploads machine image, mock upload canceled failed event
machine-image-upload.spec.tsCloud Manager Cypress Tests→machine image » uploads machine image, mock failed to decompress failed event
machine-image-upload.spec.tsCloud Manager Cypress Tests→machine image » uploads machine image, mock expired upload event
smoke-create-image.spec.tsCloud Manager Cypress Tests→create image (using mocks) » create image from a linode
resize-linode.spec.tsCloud Manager Cypress Tests→resize linode » resizes a linode by increasing size: cold migration
resize-linode.spec.tsCloud Manager Cypress Tests→resize linode » resizes a linode by decreasing size

Troubleshooting

Use this command to re-run the failing tests:

pnpm cy:run -s "cypress/e2e/core/firewalls/migrate-linode-with-firewall.spec.ts,cypress/e2e/core/volumes/upgrade-volume.spec.ts,cypress/e2e/core/linodes/linode-config.spec.ts,cypress/e2e/core/linodes/clone-linode.spec.ts,cypress/e2e/core/databases/create-database.spec.ts,cypress/e2e/core/volumes/delete-volume.spec.ts,cypress/e2e/core/volumes/attach-volume.spec.ts,cypress/e2e/core/linodes/linode-storage.spec.ts,cypress/e2e/core/images/machine-image-upload.spec.ts,cypress/e2e/core/images/smoke-create-image.spec.ts,cypress/e2e/core/linodes/resize-linode.spec.ts"

@tanushree-akamai tanushree-akamai merged commit bb2a467 into linode:develop Dec 3, 2025
34 of 35 checks passed
@github-project-automation github-project-automation bot moved this from Approved to Merged in Cloud Manager Dec 3, 2025
@tanushree-akamai tanushree-akamai removed the Add'tl Approval Needed Waiting on another approval! label Dec 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Network Load Balancers Related to Network Load Balancers

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

5 participants