Skip to content

upcoming: [UIE-10690, UIE-10691] – Create new Summary section in the NodeBalancer Details tab#13563

Open
harsh-akamai wants to merge 3 commits intolinode:developfrom
harsh-akamai:aclp-nb-integration-feature-flag
Open

upcoming: [UIE-10690, UIE-10691] – Create new Summary section in the NodeBalancer Details tab#13563
harsh-akamai wants to merge 3 commits intolinode:developfrom
harsh-akamai:aclp-nb-integration-feature-flag

Conversation

@harsh-akamai
Copy link
Copy Markdown
Contributor

@harsh-akamai harsh-akamai commented Apr 8, 2026

Description 📝

  • Create a boolean feature flag for ACLP NB Metrics Integration and support it in Cloud Manager
  • Create new Summary section in the NodeBalancer Details' Summary tab
  • Add new Metrics tab to NodeBalancer Details

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

How to test 🧪

Verification steps

  • Confirm a toggle for "ACLP NodeBalancer Metrics Integration" is present in our dev tool
  • Ensure the new Summary Section matches Figma mockups
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

@harsh-akamai harsh-akamai self-assigned this Apr 8, 2026
@harsh-akamai harsh-akamai marked this pull request as ready for review April 9, 2026 07:44
@harsh-akamai harsh-akamai requested a review from a team as a code owner April 9, 2026 07:44
* but will eventually also look at account capabilities.
*/

export const useIsAclpNbMetricsIntegrationEnabled = () => {
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.

I don't think we need to create a new hook here since there won't be any customer tag/account capability for this project. To avoid redundant hooks, we can simply use const { aclpNbMetricsIntegration } = useFlags(); wherever this check is needed for this integration work.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Removed the util 👍

@pmakode-akamai pmakode-akamai added NodeBalancers Relating to NodeBalancers ACLP Integration CI (Cloud Interfaces) Support for CC (Core Compute) CloudPulse Integration labels Apr 9, 2026
@harsh-akamai harsh-akamai changed the title upcoming: [UIE-10690] – Support ACLP-NB Metrics Integration feature flag upcoming: [UIE-10690, UIE-10691] – Create new Summary section in the NodeBalancer Details tab Apr 13, 2026
@linode-gh-bot
Copy link
Copy Markdown
Collaborator

Cloud Manager UI test results

🔺 1 failing test on test run #3 ↗︎

❌ Failing✅ Passing↪️ Skipped🕐 Duration
1 Failing901 Passing11 Skipped38m 18s

Details

Failing Tests
SpecTest
object-storage.e2e.spec.tsCloud Manager Cypress Tests→object storage end-to-end tests » can update bucket access

Troubleshooting

Use this command to re-run the failing tests:

pnpm cy:run -s "cypress/e2e/core/objectStorage/object-storage.e2e.spec.ts"

Copy link
Copy Markdown
Contributor

@pmakode-akamai pmakode-akamai left a comment

Choose a reason for hiding this comment

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

Left some initial comments for now, and it also looks like the changeset is missing. I'll take another look.

import { EntityHeader } from 'src/components/EntityHeader/EntityHeader';
import { StatusIcon } from 'src/components/StatusIcon/StatusIcon';

export const getStatusColorMap = (
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.

Let’s move this utility to somewhere in the parent/shared location and add unit tests so it can also be reused in the NodeBalancer landing table.

The naming also feels a bit off here -- could we rename it to something clearer like getNodeBalancerStatus, or if we want something more generic beyond NodeBalancers, either getBackendStatus or getStatusIndicator?

Comment on lines +14 to +16
if (isLoading) {
return 'inactive';
}
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.

We usually prefer object params for functions with >=3 args, but in this case we might be able to simplify further.

I think when configs is loading, up and down are likely undefined, so we may not need to pass isLoading into the utility at all. Could we infer the loading state from the absence of these values instead of using isLoading? That would make the utility a bit cleaner and avoid passing a redundant flag.

⚠️ Worth confirming that up/down are always undefined during loading before removing isLoading

down?: number
) => {
if (isLoading) {
return 'inactive';
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.

Is it confirmed that we want to show "inactive" (grey) when both up and down are undefined or loading?

title: 'Metrics',
to: '/nodebalancers/$id/metrics',
hide: !aclpNbMetricsIntegration,
chip: <NewFeatureChip />,
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.

Suggested change
chip: <NewFeatureChip />,
chip: getFeatureChip(aclp ?? {}),

Let's use the getFeatureChip utility from the shared package and the aclp flag (used for metrics) to determine the chip here. This will help keep the chips and their behavior consistent with the centralized view.

import { NodeBalancerConfigurationsWrapper } from './NodeBalancerConfigurationsWrapper';
import { NodeBalancerSettings } from './NodeBalancerSettings';
import { NodeBalancerSummary } from './NodeBalancerSummary/NodeBalancerSummary';
import { NodeBalancerSummaryv2 } from './NodeBalancerSummaryv2/NodeBalancerSummaryv2';
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.

It might be better to rename it to something clearer with proper casing, like NodeBalancerSummaryV2 OR alternatively move the versioning into the folder structure instead of including it in the component name.

/>
<span>
{isConfigsLoading
? 'Loading'
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.

Is this something we want to display while the values are loading? I think we might need UX input on this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ACLP Integration CI (Cloud Interfaces) Support for CC (Core Compute) CloudPulse Integration NodeBalancers Relating to NodeBalancers

Projects

Status: Review

Development

Successfully merging this pull request may close these issues.

3 participants