Skip to content

Implement the list page for ext.cattle.io.kubeconfig#16555

Merged
codyrancher merged 13 commits intorancher:masterfrom
codyrancher:issue-14911
Feb 10, 2026
Merged

Implement the list page for ext.cattle.io.kubeconfig#16555
codyrancher merged 13 commits intorancher:masterfrom
codyrancher:issue-14911

Conversation

@codyrancher
Copy link
Copy Markdown
Member

@codyrancher codyrancher commented Feb 3, 2026

Summary

Fixes #14911

Occurred changes and/or fixed issues

  • Kubeconfig list page with server-side pagination

Technical notes summary

  • New typescript model
  • Future proofed for pagination even though it's not useful right now.
  • We limit the max number of clusters that we render in a row to 25. If we get past that we render a message at the end + {remainingCount} more
  • There was a suggestion from UX to add grouping to the list but I realized that there wasn't a great way to do it so I omitted that.
    • Essentially we can have the same cluster in multiple groups since we can have multiple clusters per row.

Areas or cases that should be tested

  • Cluster Management → Advanced → Kubeconfigs list loads correctly
  • Cluster links navigate to detail pages; deleted clusters show "(deleted)" muted
  • TTL countdown displays correctly
    • I did verify that the kubeconfig will be deleted once the ttl is exceeded but it wasn't instant. There was an hour between when I saw the ttl expire and when I saw it deleted (it may happen sooner). In that type we just display a muted emdash when it's expired.
  • Sorting and filtering by cluster name works

Areas which could experience regressions

  • Mostly new code so old areas shouldn't be changed.

Screenshot/Video

kube-list.mp4

We will show an ellipsis if we overflow.
image

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

@codyrancher codyrancher changed the title Issue 14911 Implement the list page for ext.cattle.io.kubeconfig Feb 4, 2026
@codyrancher codyrancher modified the milestones: v2.15.0, v2.14.0 Feb 4, 2026
@codyrancher codyrancher marked this pull request as ready for review February 9, 2026 13:23
Copy link
Copy Markdown
Member

@rak-phillip rak-phillip left a comment

Choose a reason for hiding this comment

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

Looks good. I only have a few minor comments.

@@ -0,0 +1,75 @@
<script>
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.

Why did we opt for javascript over typescript for this formatter?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Just negligence. I think I didn't realize I left it js because the script portion of the file was so small.

Switched to TS.

Comment on lines +29 to +30
canViewProvClusters: !!this.$store.getters['management/canList'](CAPI.RANCHER_CLUSTER),
canViewMgmtClusters: !!this.$store.getters['management/canList'](MANAGEMENT.CLUSTER),
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.

nit: canViewProvCluster and canViewMgmtClusters would be better served as computed props. Not only does the computed better map to a getter, it also expresses that we only expect to access these values.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Swapped to computed

Copy link
Copy Markdown
Member Author

@codyrancher codyrancher Feb 9, 2026

Choose a reason for hiding this comment

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

I also decided to switch this (and the formatter) over to the composable API. I had just used one of the existing list views as a template instead of starting from scratch.


data() {
return {
resource: (EXT as any).KUBECONFIG,
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.

Is resource unused?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Yeah, left over from prior to converting it to using the ssp component. Removed.

Copy link
Copy Markdown
Member

@rak-phillip rak-phillip left a comment

Choose a reason for hiding this comment

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

LGTM

@codyrancher codyrancher merged commit 8cb2a41 into rancher:master Feb 10, 2026
117 of 122 checks passed
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.

CRUD new ext.cattle.io.kubeconfig resource

2 participants