feat(quotas): service-grouped collapsible quotas page#1309
Merged
Conversation
🧪 Test Summary
📎 ArtifactsVideos and screenshots from failed E2E tests:
|
🧪 Test Summary
📎 ArtifactsVideos and screenshots from failed E2E tests:
|
ae88c26 to
fe541bd
Compare
fe541bd to
d2b7ca6
Compare
…tadata ResourceRegistration is cluster-scoped with a Platform parent-context, so it is served only at the platform API root — an org/project-scoped query returned an empty list, leaving every quota ungrouped under raw resourceType keys. List once at the platform root instead. Enrich the adapter to surface display-name/description annotations and the services.miloapis.com/owner label, and widen the schema's type union to tolerate the upstream Feature enum the codegen hasn't caught up with.
Add a reusable `sortableHeader` column-def factory that renders the same chevron SortableHeader Table.Client applies via useResolvedColumns, plus a standalone controlled `TableSearch` matching the Table.Client search visual. Both are surfaced through the table barrel so tables that don't run the Table.Client pipeline (e.g. datum-ui's GroupedTable) can reuse the same sort and search affordances.
Replace the flat raw-resourceType quota list with a service-grouped, collapsible GroupedTable. Adds quotas-grouping (alphabetical groups, Other last; items by usage desc) and an interim service-catalog mapping owner/ resourceType to human-readable group names until the milo service-catalog ships. The table mirrors Table.Client's look via the shared sortableHeader and a controlled TableSearch, splits usage and %-used into GCP-style columns, wraps long descriptions, and badges resource counts + near-limit warnings on each group header. Both org and project quota routes now pass the full registrations map. Bumps @datum-cloud/datum-ui to ^1.2.0 for GroupedTable className slots.
d2b7ca6 to
23f2544
Compare
🧪 Test Summary
📎 ArtifactsVideos and screenshots from failed E2E tests:
|
gaghan430
approved these changes
Jun 10, 2026
mattdjenkinson
approved these changes
Jun 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Quotas — service-grouped, collapsible, searchable
Renders the Quotas page (org + project) as collapsible groups by owning service (Networking / DNS / Platform Core / Organization & Projects / Notes / …) with human-readable names, descriptions, and a GCP-style usage layout — instead of a flat list of raw CRD
resourceTypekeys.Before → After
networking.datumapis.com/httpproxies, no names, no descriptions, no grouping.How it works
ResourceRegistrationis cluster-scoped with aPlatformparent-context, so it is served only at the platform API root; the previous org/project-scoped query returned an empty list (leaving every quota ungrouped). We now list once at the platform root and join to the scopedAllowanceBuckets byresourceType. The adapter/schema are widened to surfacekubernetes.io/display-name/kubernetes.io/descriptionannotations and theservices.miloapis.com/ownerlabel (and to tolerate the upstreamFeatureenum the codegen hasn't caught up with).service → displayNamemap (+ aresourceTypebridge for registrations that haven't adopted theownerlabel yet) lives inservice-catalog.tsuntil the miloservice-catalogbecomes the source of truth.quotas-grouping.tsgroups A→Z with "Other" last; items sort by % used desc (at-risk first), ties broken by name.GroupedTablewith GCP-style split columns (Resource · Usage · % Used · action), collapsible groups defaulting to expanded, and the >90% "Request Limit" action. Visual parity withTable.Clientis achieved via two new shared primitives —sortableHeader(the chevron sort header) and a controlledTableSearch— exported fromapp/components/table, plus scopedcustom.cssrules that mirror the existingdt-*look. All existingdata-e2ehooks preserved.Refs
Preview
Screen.Recording.2026-06-10.at.10.38.25.mov