upcoming: [DI-27569] - Integrate endpoints dashboard for object-storage service in CloudPulse Metrics#13133
Conversation
| priority: 2, | ||
| neededInViews: [CloudPulseAvailableViews.central], | ||
| filterFn: (resources: ObjectStorageBucket[]) => | ||
| getValidSortedEndpoints(resources), |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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; |
There was a problem hiding this comment.
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)], |
There was a problem hiding this comment.
No entities in case of endpoints dashboard.
| errorText={staticErrorText} | ||
| isOptionEqualToValue={(option, value) => option.label === value.label} | ||
| label={label || 'Select a Value'} | ||
| loading={isLoading} |
There was a problem hiding this comment.
Added loading state in custom-select, custom-select needs to be consistent with other filters.
Cloud Manager UI test results🎉 862 passing tests on test run #5 ↗︎
|
|
Merging as pr has enough approvals and all tests are passing. |
Description 📝
Integrate endpoints dashboard for object-storage service in metrics page.
Changes 🔄
FilterConfig.tsfor the newendpoint-leveldahsboard in object-storage service.entityIDin group-by options atuseGlobalDimensions.tsas there is no entityId in case of an endpoints dashboard.hasRestrictedSelectionsinFilterConfig.tsto control whether or not to have a selection limit for a filter. Ex -endpoints-select.isEndpointsOnlyDashboard()inFilterConfig.tsto differentiate between bucket level and endpoint level dashboard.CloudPulseEndpointsSelect.tsxto a filter function inFilterConfig.tsfor reusability.CloudPulseEndpointsSelect.tsxto handle selection limitation on options.- Limit on selection is fetched from
aclpResourceTypeMapflag in LD.- Limit is controlled by
hasRestrictedSelectionsproperty.-
Select All/Deselect Allis 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:
Target release date 🗓️
16 Dec 2025
Preview 📷
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
Object storage usage per endpointdashboard in dashboard-select.RegionandEndpointswhereEndpointsfilter is dependent on region selection.Endpointsfilter have the selected region associated with them. Note: Verify this from /endpoints api response.endpointoption 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
As an Author, before moving this PR from Draft to Open, I confirmed ✅