You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A pending Kueue Workload can name its LocalQueue before it receives a ClusterQueue reservation. Following that reference currently leads to generic object fields, leaving operators to read YAML to understand the queue's state and quota policy.
This adds native LocalQueue and ClusterQueue details in both the drawer and fullscreen view. Operators can follow Workload → LocalQueue → ClusterQueue, distinguish an intentional stop from a controller-reported problem, and inspect quota accounting without mistaking it for physical capacity or utilization.
Behavior and design
Queue state: reported Active condition and message, configured stop policy, and pending/reserving/admitted counts. Reserving includes admitted; admission does not imply running Pods. Stopped queues have a neutral status, while stale conditions show the observed/current generations and an unknown tone.
Quota accounting: join specification and status by flavor/resource name, preserve declared order and status-only entries, and retain raw Kubernetes quantities. LocalQueues show their own reservations and admitted usage; ClusterQueues additionally show nominal quota and applicable explicit borrowing/lending limits, including zero. Borrowed amounts remain parts of the reported totals.
Admission policy: namespace eligibility, cohort, configured queueing/preemption/flavor policies, reported fair sharing, and required AdmissionChecks with flavor applicability. Links preserve the Kueue API group and cluster scope.
Integration: native detail is limited to Kueue v1beta1/v1beta2, with explicit handling of their field differences. Other groups and future versions retain generic detail. Existing sections, properties, badges, conditions, selectors, links and detail shells are reused.
The change is presentation-only: no endpoints, dependencies, RBAC changes or resource-context schema. It does not add a queue-wide Workload browser, mutations, utilization metrics, or new topology behavior. The shared queue status helper also updates LocalQueue/ClusterQueue table badges; AdmissionCheck status semantics remain unchanged.
Validation
make tsc, make test, make build passed.
Full shared UI suite: 3,928 passed, one existing skipped test. Full web suite: 1,510 passed.
Final focused renderer, navigation and dispatch tests: 124 passed. Cover quantity joins, zero/absent limits, missing/stale status, v1beta1/v1beta2 shapes, selectors, collisions, and exact navigation callbacks.
Live AWS test cluster running Kueue v0.18.0: admitted, quota-blocked and stopped-queue scenarios; only the admitted Job created a Pod. Verified Workload → LocalQueue → ClusterQueue and ResourceFlavor navigation, controller-written reasons, and matching 50m CPU/16Mi accounting. Existing cohort-backed queue inspected read-only. Temporary fixture and local Radar process cleaned up.
Visual review: drawer and fullscreen, light/dark, 1280/1920/2560px. Browser-only synthetic cases cover stale/missing status, multiple flavors, nonzero borrowing, zero limits and status-only rows. These are layout proof, not live borrowing proof. The last caption change was checked against a replay of the captured controller object after fixture cleanup.
Review focus: reported state versus requested policy; quota accounting versus utilization; version-specific fields; exact group/scope navigation. No live nonzero borrowing or HoldAndDrain eviction was exercised; their presentation is covered by unit fixtures.
Note
Low Risk
Presentation-only UI and documentation; no API, RBAC, or mutation paths. Queue status badge logic changes are limited to Kueue LocalQueue/ClusterQueue display semantics.
Overview
Adds native Kueue LocalQueue and ClusterQueue detail views (drawer/fullscreen) for kueue.x-k8s.io/v1beta1 and v1beta2, wired through ResourceRendererDispatch with the same API-group gating pattern as Kueue Workloads. Foreign or future API versions still fall back to generic rendering.
LocalQueue surfaces reported Active state vs configured stop policy, workload counts (with non-additive reserving/admitted semantics), a link to the parent ClusterQueue, and per-flavor reserved/admitted quota rows. ClusterQueue adds nominal quota, borrowing/lending limits and borrowed subtotals when relevant, namespace eligibility and queueing/preemption/fair-sharing policy, and navigable ResourceFlavor / AdmissionCheck references (including v1beta1 cohort and dual admission-check declaration shapes).
Shared resource-utils-kueue helpers join spec and status into quota tables, treat intentional Stopped as neutral, flag stale Active conditions, and refresh list badges for queues without changing AdmissionCheck semantics. Integrations docs describe the new queue detail behavior and clarify quota facts vs utilization.
Add native Kueue queue details and quota accounting
✨ Enhancement🧪 Tests📝 Documentation🕐 40+ Minutes
AI Description
• Add native LocalQueue and ClusterQueue details for supported Kueue beta APIs.
• Present queue state, workload counts, quota accounting, and admission policies without implying
utilization.
• Preserve cluster-scoped navigation and generic fallback, with comprehensive tests and
documentation.
Diagram
graph TD
D["Renderer Dispatch"] --> L["LocalQueue Detail"] --> U["Queue Utilities"]
D --> C["ClusterQueue Detail"] --> U
L --> C --> F["ResourceFlavor"]
C --> A["AdmissionCheck"]
D --> G["Generic Detail"]
Loading
High-Level Assessment
The shared renderer and utility approach is appropriate because LocalQueue and ClusterQueue expose closely related state and quota concepts while retaining small resource-specific sections. Separate renderers per API version would duplicate presentation logic, while generic YAML-only detail would not meet the operator workflow or semantic clarity goals.
Files changed (8) +606 / -5
Enhancement (4) +393 / -5
KueueQueueRenderers.tsxAdd native LocalQueue and ClusterQueue renderers+299/-0
Add native LocalQueue and ClusterQueue renderers
• Introduces detailed queue status, quota accounting, conditions, admission policy, namespace eligibility, and required-check sections. Adds navigation to parent queues, ResourceFlavors, and AdmissionChecks while clearly separating controller observations from configured policy.
resource-utils-kueue.tsNormalize Kueue queue status and quota data+84/-2
Normalize Kueue queue status and quota data
• Adds exact queue API detection, stale and stopped status handling, and flavor/resource quota joins across specification and status. Handles LocalQueue usage field differences between v1beta1 and v1beta2 while preserving declared order and raw quantities.
ResourceRendererDispatch.tsxDispatch supported Kueue queues to native detail+8/-3
Dispatch supported Kueue queues to native detail
• Registers LocalQueue and ClusterQueue kinds and routes exact supported Kueue API versions to their native renderers. Adds group-gated fallback so colliding kinds and unsupported versions retain generic rendering.
• Tests LocalQueue-to-ClusterQueue and ClusterQueue-to-ResourceFlavor/AdmissionCheck navigation. Assertions preserve the Kueue API group and cluster scope.
KueueQueueRenderers.test.tsxCover queue rendering and quota semantics+123/-0
Cover queue rendering and quota semantics
• Exercises quota joins, raw quantities, explicit zero limits, status-only rows, missing and stale status, stop policies, selectors, cohort behavior, and v1beta1/v1beta2 field differences.
• Confirms native rendering for Kueue v1beta1 and v1beta2 queues. Verifies foreign groups and future versions continue using generic detail without losing fields.
• Documents LocalQueue and ClusterQueue state, quota accounting, admission policy presentation, supported API versions, and the distinction between accounting and measured utilization.
1. Queue status bypasses semantic styling 📘 Rule violation⚙ Maintainability
Description
QueueStatus passes badge.color through the Badge component’s explicit colorClass override
instead of selecting its appearance with severity or kind. When shared badge semantics are
updated, this status remains coupled to the separate health-color strings and can diverge from other
status badges.
Compliance rule 3036677 requires status badges to select appearance through severity or kind and
prohibits explicit color overrides. The new queue renderer instead supplies the health color string
through colorClass.
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution
## Issue description
The queue status badge bypasses semantic badge styling by passing the explicit `colorClass` override.
## Fix Focus Areas
- packages/k8s-ui/src/components/resources/renderers/KueueQueueRenderers.tsx[31-53]
- packages/k8s-ui/src/components/resources/resource-utils-kueue.ts[43-51]
## Recommended Fix
Map the canonical queue health level to an appropriate `Badge` severity and pass it through the `severity` prop. Remove the `colorClass` override while preserving the intended healthy, warning, alert, error, neutral, and unknown presentation.
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
The five non-empty Section elements for queue status, quota, parent queue, admission policy, and
required checks omit defaultExpanded={true} and have no low-priority marker. Because the shared
component currently supplies that value implicitly, a later default change can collapse this content
without an intentional renderer decision.
Compliance rule 3036709 requires every populated, normal-priority renderer section to set
defaultExpanded={true} explicitly regardless of the component's internal default. All five newly
added Section usages contain visible content, have no low-priority marker, and omit that property.
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution
## Issue description
Five populated queue renderer sections rely on the shared component's implicit expansion default despite requiring an explicit `defaultExpanded={true}` setting.
## Fix Focus Areas
- packages/k8s-ui/src/components/resources/renderers/KueueQueueRenderers.tsx[50-50]
- packages/k8s-ui/src/components/resources/renderers/KueueQueueRenderers.tsx[107-107]
- packages/k8s-ui/src/components/resources/renderers/KueueQueueRenderers.tsx[192-192]
- packages/k8s-ui/src/components/resources/renderers/KueueQueueRenderers.tsx[228-228]
- packages/k8s-ui/src/components/resources/renderers/KueueQueueRenderers.tsx[281-281]
## Recommended Fix
Add `defaultExpanded={true}` to each listed non-empty `Section`. Leave the already explicit `ConditionsSection` setting unchanged.
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
3. Published Kueue docs stay outdated 🔗 Cross-repo conflict≡ Correctness
Description
The new LocalQueue and ClusterQueue capabilities are documented under `GPU & Batch Ecosystem (basic
support)`, but radar-docs explicitly excludes that section from synchronization. When this PR
merges, the published GPU and AI/ML page will continue saying these resources use generic detail
views and that typed views are future work.
+LocalQueue and ClusterQueue detail distinguish reported state from configured stop+policy, show pending/reserving/admitted counts, and link a LocalQueue to its+ClusterQueue even before a Workload has a reservation. Per-flavor resource rows+join quota reservations and admitted usage; ClusterQueues also show nominal quota,
Evidence
The PR adds the native queue-detail documentation inside the GPU and Batch section. Radar-docs marks
that exact section as include: false, skips excluded sections during synchronization, and its
curated published page still states that all listed resources use the standard renderer and typed
views have not landed.
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution
## Issue description
The new native Kueue queue details are added to an OSS integration section that radar-docs deliberately excludes from automated synchronization. Coordinate a radar-docs change so its curated GPU and AI/ML integration page accurately describes the native LocalQueue and ClusterQueue views.
## Fix Focus Areas
- docs/integrations.md[1496-1502]
- /cross_repos/radar-docs/features/integrations/gpu-ml-ecosystem.mdx[9-31]
- /cross_repos/radar-docs/scripts/sync-oss-docs.mjs[272-280]
## Recommended Fix
Update `features/integrations/gpu-ml-ecosystem.mdx` in radar-docs to distinguish Kueue LocalQueue and ClusterQueue from resources that still use generic detail. Describe the supported queue state, quota accounting, policy information, navigation, and supported API versions, and coordinate that documentation change with this PR.
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
Tip of the day
💡 Did you know, you can choose which labels appear on a finding, and whether they show icons or text
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
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.
Why
A pending Kueue Workload can name its LocalQueue before it receives a ClusterQueue reservation. Following that reference currently leads to generic object fields, leaving operators to read YAML to understand the queue's state and quota policy.
This adds native LocalQueue and ClusterQueue details in both the drawer and fullscreen view. Operators can follow Workload → LocalQueue → ClusterQueue, distinguish an intentional stop from a controller-reported problem, and inspect quota accounting without mistaking it for physical capacity or utilization.
Behavior and design
The change is presentation-only: no endpoints, dependencies, RBAC changes or resource-context schema. It does not add a queue-wide Workload browser, mutations, utilization metrics, or new topology behavior. The shared queue status helper also updates LocalQueue/ClusterQueue table badges; AdmissionCheck status semantics remain unchanged.
Validation
make tsc,make test,make buildpassed.Review focus: reported state versus requested policy; quota accounting versus utilization; version-specific fields; exact group/scope navigation. No live nonzero borrowing or HoldAndDrain eviction was exercised; their presentation is covered by unit fixtures.
Note
Low Risk
Presentation-only UI and documentation; no API, RBAC, or mutation paths. Queue status badge logic changes are limited to Kueue LocalQueue/ClusterQueue display semantics.
Overview
Adds native Kueue
LocalQueueandClusterQueuedetail views (drawer/fullscreen) forkueue.x-k8s.io/v1beta1andv1beta2, wired throughResourceRendererDispatchwith the same API-group gating pattern as Kueue Workloads. Foreign or future API versions still fall back to generic rendering.LocalQueue surfaces reported
Activestate vs configured stop policy, workload counts (with non-additive reserving/admitted semantics), a link to the parent ClusterQueue, and per-flavor reserved/admitted quota rows. ClusterQueue adds nominal quota, borrowing/lending limits and borrowed subtotals when relevant, namespace eligibility and queueing/preemption/fair-sharing policy, and navigable ResourceFlavor / AdmissionCheck references (including v1beta1 cohort and dual admission-check declaration shapes).Shared
resource-utils-kueuehelpers join spec and status into quota tables, treat intentional Stopped as neutral, flag staleActiveconditions, and refresh list badges for queues without changing AdmissionCheck semantics. Integrations docs describe the new queue detail behavior and clarify quota facts vs utilization.Tests cover quota joins, version-specific fields, missing/stale status, dispatch collisions, and navigation callbacks.
Reviewed by Cursor Bugbot for commit f72e515. Bugbot is set up for automated code reviews on this repo. Configure here.