Uh oh!
There was an error while loading. Please reload this page.
List and download Support Bundles - #3311
Conversation
The latest updates on your projects. Learn more about Vercel for GitHub.
|
hawkw
commented
Aug 6, 2026
charliepark
commented
Aug 6, 2026
Yes, thanks for calling that out! Responsive issues are definitely a larger thing, though I think fault management scenarios highlight the issue where someone might be viewing the client on a non-standard screen / in a state of crisis, so we want to tighten that all up! |
fakemonster
left a comment
There was a problem hiding this comment.
code looks good. my only qualms:
- the icon, as you noted
- the double copy-id thing. fine to go in of course but has me wondering if we should try to migrate all the tables at once to keep the id-copying method predictable
- do we want some sort of indicator for pages that rely on the experimental API?
| color={SUPPORT_BUNDLE_COLORS[props.state]} | ||
| className={cn(props.className, badgeClasses)} | ||
| > | ||
| {(props.state === 'collecting' || props.state === 'destroying') && ( |
There was a problem hiding this comment.
really minor given the context, but i always like to use a match for this kind of thing, so the compiler can require our input if we add e.g. a rebuilding state in the future
| // the generated handler type only allows status code returns for binary | ||
| // endpoints, but the dispatcher passes Response instances through untouched | ||
| // @ts-expect-error | ||
| supportBundleDownload({ path, cookies }) { |
There was a problem hiding this comment.
when i attempted a bundle download with the msw, i got thrown off by there being an implementation for bundle download when it isn't actually reachable (since we're navigating to the download link instead of fetching it). maybe somewhere it's worth a comment noting this only does something if you implement downloading as a fetch?
| const bundle = lookupById(db.supportBundles, path.bundleId) | ||
| // https://github.com/oxidecomputer/omicron/blob/99249b4/nexus/db-queries/src/db/datastore/support_bundle.rs#L736-L742 | ||
| // byte length, not string length, to match Nexus | ||
| if (body.user_comment && new TextEncoder().encode(body.user_comment).length > 4096) { |
There was a problem hiding this comment.
i'm not sure if it's against convention to pull constants from the api utils, but it wouldn't hurt to share this one
| colHelper.accessor('id', { | ||
| header: 'ID', | ||
| cell: (info) => ( | ||
| <Truncate text={info.getValue()} maxLength={14} position="middle" hasCopyButton /> |
There was a problem hiding this comment.
feels redundant to be able to copy the ID here and in the quick actions
charliepark
commented
Aug 7, 2026
Great point on /experimental. Would feel more comfortable with pulling it to /v1 before rolling this out, though I'm not sure about the other reasons for keeping it in /experimental |

This PR creates a basic view at the System level for Support Bundles viewing and downloading, and creating new support bundles.

Support Bundles are listed newest-first.
ACTIVEsupport bundles can be downloaded; download button is disabled forFAILED/COLLECTING/DESTROYINGstates.This is a somewhat blunt page at the moment; talking with Sean, there are some enhancements we'll be able to do in the not-distant future, like filtering based on a time window or otherwise reducing the size of the bundle payload being downloaded. I did explore a file viewer partway through the building of this PR, but talking through it with Oliver, he suggested that the scope of files the user would have to manually go through in the client would be difficult, and the UX would be rough.
NOTE: Ben is working on a new icon for this.