Skip to content

upcoming: [DI-27569] - Integrate endpoints dashboard for object-storage service in CloudPulse Metrics#13133

Merged
ankita-akamai merged 13 commits intolinode:developfrom
ankita-akamai:feature/objEndpointsDashboard
Nov 26, 2025
Merged

upcoming: [DI-27569] - Integrate endpoints dashboard for object-storage service in CloudPulse Metrics#13133
ankita-akamai merged 13 commits intolinode:developfrom
ankita-akamai:feature/objEndpointsDashboard

Conversation

@ankita-akamai
Copy link
Contributor

@ankita-akamai ankita-akamai commented Nov 25, 2025

Description 📝

Integrate endpoints dashboard for object-storage service in metrics page.

Changes 🔄

  • Update FilterConfig.ts for the new endpoint-level dahsboard in object-storage service.
  • Remove default option - entityID in group-by options at useGlobalDimensions.ts as there is no entityId in case of an endpoints dashboard.
  • Introduce a new property hasRestrictedSelections in FilterConfig.ts to control whether or not to have a selection limit for a filter. Ex - endpoints-select.
  • Introduce a util isEndpointsOnlyDashboard() in FilterConfig.ts to differentiate between bucket level and endpoint level dashboard.
  • Move endpoints filtering in CloudPulseEndpointsSelect.tsx to a filter function in FilterConfig.ts for reusability.
  • Enhance CloudPulseEndpointsSelect.tsx to handle selection limitation on options.
    - Limit on selection is fetched from aclpResourceTypeMap flag in LD.
    - Limit is controlled by hasRestrictedSelections property.
    - Select All/Deselect All is only available if the number of resources are less than or equal to the limit.
    - After selecting limited options, out of limit options will be disabled(non-clickable).

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

Target release date 🗓️

16 Dec 2025

Preview 📷

Before After
No endpoints dashboard image

How to test 🧪

Verification steps

(How to verify changes)

Figma: https://www.figma.com/design/2x7VRVdgrjegSJ5lFxoKMv/Standard-Dashboards?node-id=12527-10756&t=qJZJYfEqchWGl5Yq-1

  • Navigate to metrics tab under monitor in primary navigation.
  • Select Object storage usage per endpoint dashboard in dashboard-select.
  • Verify that there are two filters - Region and Endpoints where Endpoints filter is dependent on region selection.
  • Select a region and verify that the options displayed in Endpoints filter have the selected region associated with them. Note: Verify this from /endpoints api response.
  • Click on group_by icon near date-time range picker and verify endpoint option is default selected and this is the only option available to group by.
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

priority: 2,
neededInViews: [CloudPulseAvailableViews.central],
filterFn: (resources: ObjectStorageBucket[]) =>
getValidSortedEndpoints(resources),
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Moved the filtering logic from component to config level as it will be used at multiple places and is easier to handle. This function collects endpoints from available buckets.

const id =
resourceType === 'objectstorage'
? resource.hostname
? resource.hostname || resource.id
Copy link
Contributor Author

Choose a reason for hiding this comment

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

In case of endpoints dashboard, the response is already mapped to {id, label, region} using filterFn type so directly id can be accessed. id = label here.

filterValue: [String(resource)],
});
}
return filters;
Copy link
Contributor Author

Choose a reason for hiding this comment

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

As endpoints filter needs to go as a dimension filter in filters obj as part of /metrics api call, this needs to be handled for contextual view.

resources: [String(resource)],
resources: isEndpointsOnlyDashboard(dashboardObj.id)
? []
: [String(resource)],
Copy link
Contributor Author

Choose a reason for hiding this comment

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

No entities in case of endpoints dashboard.

errorText={staticErrorText}
isOptionEqualToValue={(option, value) => option.label === value.label}
label={label || 'Select a Value'}
loading={isLoading}
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Added loading state in custom-select, custom-select needs to be consistent with other filters.

@ankita-akamai ankita-akamai marked this pull request as ready for review November 25, 2025 15:55
@ankita-akamai ankita-akamai requested a review from a team as a code owner November 25, 2025 15:55
@linode-gh-bot
Copy link
Collaborator

Cloud Manager UI test results

🎉 862 passing tests on test run #5 ↗︎

❌ Failing✅ Passing↪️ Skipped🕐 Duration
0 Failing862 Passing11 Skipped41m 34s

@github-project-automation github-project-automation bot moved this from Review to Approved in Cloud Manager Nov 26, 2025
@ankita-akamai
Copy link
Contributor Author

Merging as pr has enough approvals and all tests are passing.

@ankita-akamai ankita-akamai merged commit 2cde3bc into linode:develop Nov 26, 2025
35 checks passed
@github-project-automation github-project-automation bot moved this from Approved to Merged in Cloud Manager Nov 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

4 participants