Skip to content

PV/PVC detail pages and storage tab for deployments - #19127

Open
momesgin wants to merge 11 commits into
rancher:masterfrom
momesgin:pvc
Open

momesgin wants to merge 11 commits into
rancher:masterfrom
momesgin:pvc

Conversation

@momesgin

@momesgin momesgin commented Sep 14, 2026

Copy link
Copy Markdown
Member

Summary

Fixes #16593

Surfaces the relationship between workloads, PersistentVolumeClaims, PersistentVolumes and Pods so users can see what mounts what without leaving the dashboard.

Occurred changes and/or fixed issues

  • Workload detail page: added a Storage tab that lists the PersistentVolumeClaims a workload mounts (Deployments, StatefulSets, DaemonSets, Jobs, CronJobs and standalone Pods).
  • PersistentVolume detail page: replaced the read only config view with a real detail page. The masthead summarises source, capacity, reclaim policy, storage class and access modes, and a Volume Claim tab shows the bound PVC.
  • PersistentVolumeClaim detail page: replaced the read only config view with a real detail page. The masthead summarises capacity, storage class, access modes and a link to the bound volume, and a Mounted Pods tab shows the Pods that mount the claim.

Technical notes summary

  • Data is fetched with server side pagination (SSP) wherever the field is indexed:
    • Workload -> PVCs: fetch by metadata.name in the workload namespace.
    • PV -> PVC: fetch by the spec.claimRef name and namespace.
  • PVC -> Pods is the one case that cannot be fully SSP. The claim reference lives in spec.volumes[].persistentVolumeClaim.claimName, which is not an indexed field. The Pod request is scoped to the claim namespace (server side when SSP is available) and the claim match is done client side.
  • New detail pages use the Options API create/edit view pattern (like node and workload) so the parent masthead and async related resource fetch work without model changes. Model details getters feed the masthead summary via DetailTop.

Areas or cases that should be tested

Setup: apply a Deployment that mounts a PVC (local-path binds the PVC and creates the PV once a Pod schedules).

  1. Workload Storage tab: open a Deployment that mounts a PVC and confirm the Storage tab lists the claim with capacity, storage class and status.
  2. PV detail: open the created PersistentVolume and confirm the masthead summary and the Volume Claim tab shows the bound PVC.
  3. PVC detail: open the PersistentVolumeClaim and confirm the masthead summary and the Mounted Pods tab shows the mounting Pod.
  4. Repeat step 1 with a StatefulSet and a CronJob to confirm the different pod spec paths.

Edge cases:

  • Unbound / Pending PVC with no Pod: Mounted Pods tab shows the empty state, no error.
  • Statically provisioned PV or a PV with no claimRef: Volume Claim tab shows the empty state.

Areas which could experience regressions

  • PersistentVolume and PersistentVolumeClaim detail pages. These previously rendered the read only YAML/config view and now resolve to custom detail pages, so the default detail path for these two types has changed.
  • Workload detail page tab set (a new tab is added).
  • No changes to create/edit flows for these resources.

Screenshot/Video

Screenshot 2026-09-14 at 12 27 39 PM Screenshot 2026-09-14 at 12 28 11 PM Screenshot 2026-09-14 at 12 28 45 PM Screenshot 2026-09-14 at 12 29 08 PM Screenshot 2026-09-14 at 12 30 03 PM Screenshot 2026-09-14 at 12 30 30 PM

Checklist

  • The PR is linked to an issue and the linked issue has a Milestone, or no issue is needed
  • The PR has a Milestone
  • The PR template has been filled out
  • The PR has been self reviewed
  • The PR has a reviewer assigned
  • The PR has automated tests or clear instructions for manual tests and the linked issue has appropriate QA labels, or tests are not needed
  • The PR has reviewed with UX and tested in light and dark mode, or there are no UX changes
  • The PR has been reviewed in terms of Accessibility
  • The PR has considered, and if applicable tested with, the three Global Roles Admin, Standard User and User Base

Mo Mesgin added 7 commits September 10, 2026 08:45
Show the PersistentVolumeClaims mounted by a workload, fetched
server-side by name (SSP) when available and scoped to the
workload's namespace.
Replace the read-only config view with a dedicated detail page that
shows the volume summary and the bound PersistentVolumeClaim, fetched
server-side by name (SSP) when available.
@momesgin momesgin added this to the v2.16.0 milestone Sep 14, 2026
@momesgin momesgin self-assigned this Sep 14, 2026
@github-actions

github-actions Bot commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

🔄 Auto-Retry Failed Run

The Tests workflow failed for the commits below and has been automatically retried.
Follow up on a retried run through its link if needed.

Commit Workflow run Retried at
5430fea 34892745264 2026-09-14 21:24 UTC
01ead00 34898043620 2026-09-14 22:01 UTC
3d9e403 34991161993 2026-09-15 16:35 UTC
3fc1c5c 34993796047 2026-09-15 17:16 UTC

@momesgin
momesgin requested a review from nwmac September 14, 2026 22:52
@momesgin
momesgin marked this pull request as ready for review September 14, 2026 22:53

@nwmac nwmac left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

A couple of small text changes:

  • Change tab 'Volume Claim (N)' to just 'Claims (N)'
  • Change tab 'Mounted Pods (N)' to just 'Pods (N)'

@momesgin
momesgin requested a review from nwmac September 15, 2026 17:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Display Mounted Pods for PVCs/Volumes

2 participants