-
Notifications
You must be signed in to change notification settings - Fork 141
MC Hardware configuration table with mock data #1664
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MC Hardware configuration table with mock data #1664
Conversation
b9da5d0 to
04a7404
Compare
| export const mockHardwareConfigurations: HardwareConfiguration[] = [ | ||
| { | ||
| id: '1', | ||
| hardwareConfiguration: '1 x A100-80', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@YuliaKrimerman @mturley I just wanted to understand the format of these metric data. I think these will be present in the customProperties of artifacts endpoint response right, or am I missing something?
for BFF mock data, I added these to the customProperties. so...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For my PR I just used a random mock for those fields. the true data should come once the API will be implemented
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ppadti my understanding is that you're right that we'll have customProperties with these metrics on them. @YuliaKrimerman we should probably use the real object types here - we already have the CatalogModelArtifact type and we need to add artifactType and metricsType properties to it. The artifacts we'll use for this table will specifically have artifactType: 'metrics-artifact' and metricsType: 'performance-metrics', and then their customProperties contain things like hardware: { string_value:'H100' }, hardware_count: { int_value: 2 }, ttft_mean: { double_value: 35.48818160947744 }. See the "Exposing Jounce Metrics in the Model Catalog" section of this ADR doc.
Let's create some discriminated types for these different kinds of artifacts. Can you take the existing CatalogModelArtifact type, rename it to CatalogModelUriArtifact, move its createTimeSinceEpoch, lastUpdateTimeSinceEpoch and customProperties into a new CatalogModelArtifactBase, and make a new CatalogModelPerformanceMetricsArtifact type that also extends that base? That last type can have those literal artifactType and metricsType values and its own customProperties which contain the literal expected properties from the ADR instead of the generic ModelRegistryCustomProperties. Finally, we can make a union type CatalogModelArtifact = CatalogModelUriArtifact | CatalogModelPerformanceMetricsArtifact. Later we will also need to add an additional member to this union for the artifactType: 'accuracy-metrics', that will be needed for part of what we show on the updated landing page cards, but it's out of scope for this PR.
The existing code that fetches artifacts can still work with CatalogModelArtifact, and then in places where we need specific kinds of artifacts we can do something like if (artifact.uri) or if (artifact.metricsType === 'performance-metrics) to narrow it, then it will typecheck the use of the specific custom properties.
This may require looking at where we currently pull the URI out of an artifact on the details and register pages and having those places narrow the artifact. In fact, I think currently those places just grab the first artifact and assume it's the URI one, we'll need to fix that so they find an artifact that has a URI. We may have to make that fix as part of this PR if you're changing the types here:
I believe the updated API will have an artifactType: 'uri-artifact' but it doesn't currently so to keep things from breaking we can just look for the uri property.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| className={ | ||
| index < 2 | ||
| ? 'pf-v6-c-table__sticky-column pf-v6-c-table__sticky-column--left' | ||
| : '' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
when I run this in patternfly theme - I am not seeing the sticky column.
I think we can add this isStickyColumnproperty to hardwareConfigColumns directly instead making this condition here.
SortableData<HardwareConfiguration>[] can have is isStickyColumn along with field, label and sortable.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm... I was going to suggest we use the isStickyColumn prop directly on the Th like in this PF sticky columns example, but looking closer at that SortableData type it seems to extend ThProps. I don't think that property will end up on the Th unless you're spreading {...column} to it here right? I imagine we need to do that...
Ok looking closer, we are mixing component structures here. You're importing the PF Table directly but using the SortableData type for your columns, which is intended to be used with our own Table wrapper imported from mod-arch-shared. It should really have its own name...
Let's shift to using that mod-arch-shared Table component @YuliaKrimerman. Use our other tables from MR as a reference like the RegisteredModelTable. That way you pass your hardwareConfigColumns array directly into its columns prop and properties in there like isStickyColumn should work that way (and you won't need to render your own Th's. Instead of your own Tbody with a .map you'd use a rowRenderer callback.
Or if there is some other reason you can't use that abstraction let's talk through it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
oh, I didn't see we are importing Table from patternfly - I assumed we use it from shared-library, so suggested using isStickyColumn property directly on hardwareConfigColumns, so that everything else will be handled there, sorry.
|
@ppadti: changing LGTM is restricted to collaborators In response to this: Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A couple things here. Also, referencing the mockups we should put the whole hardware configuration table in a card, similar to how the areas of the newly updated model registry details pages are wrapped in cards.
We should switch to the mod-arch-shared Table abstraction if we can, but we'll want to make sure the props it ends up passing down to the PF Table match what is used in the PF "multiple left-aligned sticky columns" example. I'm not sure if we need to render the OuterScrollContainer and InnerScrollContainer ourselves as described there or if that's handled by the mod-arch-shared table... needs some investigation. Maybe that will help lead us to the issue we're having with width / double-scrollbar. It does look like the SortableData type that is intended for use with the mod-arch-shared Table does support properties like 'stickyMinWidth' | 'stickyLeftOffset' which match that PF example.
I left some comments about types as well. I think we can go ahead and adopt the correct types for the new artifacts as documented in the ADR so it's easier to connect things to the BFF when we're ready to.
| <style> | ||
| {` | ||
| .hardware-table-container { | ||
| width: 100%; | ||
| max-width: 100%; | ||
| overflow-x: auto; | ||
| } | ||
| .hardware-table-container table { | ||
| width: max-content; | ||
| min-width: 100%; | ||
| table-layout: auto; | ||
| } | ||
| `} | ||
| </style> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's avoid inline styles. If we really need custom CSS we should import a separate .scss file, but even that should be avoided if possible - the container sizing and scrolling behavior seems like something we could achieve with PatternFly props and/or utility classes. What happens without these styles?
Edit: ok, maybe this is tricky without custom styles, but we should still put them in a .scss file. I'll mess around to see if I can help solve this.
We do still get a double scrollbar effect here which we really need to avoid. If we can't figure it out as part of this PR and it's blocking things we could follow up in another PR but let's leave the issue open until we solve that I think.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe the double scrollbar is only happening with MUI and not with patternfly, I didn't see that happening with patternfly...
| className={ | ||
| index < 2 | ||
| ? 'pf-v6-c-table__sticky-column pf-v6-c-table__sticky-column--left' | ||
| : '' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm... I was going to suggest we use the isStickyColumn prop directly on the Th like in this PF sticky columns example, but looking closer at that SortableData type it seems to extend ThProps. I don't think that property will end up on the Th unless you're spreading {...column} to it here right? I imagine we need to do that...
Ok looking closer, we are mixing component structures here. You're importing the PF Table directly but using the SortableData type for your columns, which is intended to be used with our own Table wrapper imported from mod-arch-shared. It should really have its own name...
Let's shift to using that mod-arch-shared Table component @YuliaKrimerman. Use our other tables from MR as a reference like the RegisteredModelTable. That way you pass your hardwareConfigColumns array directly into its columns prop and properties in there like isStickyColumn should work that way (and you won't need to render your own Th's. Instead of your own Tbody with a .map you'd use a rowRenderer callback.
Or if there is some other reason you can't use that abstraction let's talk through it.
| style={{ | ||
| width: `${column.width}ch`, | ||
| minWidth: `${column.width}ch`, | ||
| verticalAlign: 'middle', | ||
| height: 'auto', | ||
| lineHeight: '1.2', | ||
| textAlign: 'left', | ||
| }} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We really need to avoid inline styles. Things like this break when we upgrade PF. If you can't achieve what you need with existing component props or utility classes let's talk through what you're trying to solve here.
| className={ | ||
| index < 2 ? 'pf-v6-c-table__sticky-column pf-v6-c-table__sticky-column--left' : '' | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You should also be able to avoid passing in special sticky classes like this by rendering this as a Th instead of a Td and passing it the isStickyColumn prop (and other props depending on whether it's the first one or second one, see the description of the PF example). You'll have to conditionally use Th for only those first two columns I think. If conditionals are getting too crazy here, maybe just write out those two Ths and then only do your .map() for the rest of the array.
| export const mockHardwareConfigurations: HardwareConfiguration[] = [ | ||
| { | ||
| id: '1', | ||
| hardwareConfiguration: '1 x A100-80', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ppadti my understanding is that you're right that we'll have customProperties with these metrics on them. @YuliaKrimerman we should probably use the real object types here - we already have the CatalogModelArtifact type and we need to add artifactType and metricsType properties to it. The artifacts we'll use for this table will specifically have artifactType: 'metrics-artifact' and metricsType: 'performance-metrics', and then their customProperties contain things like hardware: { string_value:'H100' }, hardware_count: { int_value: 2 }, ttft_mean: { double_value: 35.48818160947744 }. See the "Exposing Jounce Metrics in the Model Catalog" section of this ADR doc.
Let's create some discriminated types for these different kinds of artifacts. Can you take the existing CatalogModelArtifact type, rename it to CatalogModelUriArtifact, move its createTimeSinceEpoch, lastUpdateTimeSinceEpoch and customProperties into a new CatalogModelArtifactBase, and make a new CatalogModelPerformanceMetricsArtifact type that also extends that base? That last type can have those literal artifactType and metricsType values and its own customProperties which contain the literal expected properties from the ADR instead of the generic ModelRegistryCustomProperties. Finally, we can make a union type CatalogModelArtifact = CatalogModelUriArtifact | CatalogModelPerformanceMetricsArtifact. Later we will also need to add an additional member to this union for the artifactType: 'accuracy-metrics', that will be needed for part of what we show on the updated landing page cards, but it's out of scope for this PR.
The existing code that fetches artifacts can still work with CatalogModelArtifact, and then in places where we need specific kinds of artifacts we can do something like if (artifact.uri) or if (artifact.metricsType === 'performance-metrics) to narrow it, then it will typecheck the use of the specific custom properties.
This may require looking at where we currently pull the URI out of an artifact on the details and register pages and having those places narrow the artifact. In fact, I think currently those places just grab the first artifact and assume it's the URI one, we'll need to fix that so they find an artifact that has a URI. We may have to make that fix as part of this PR if you're changing the types here:
I believe the updated API will have an artifactType: 'uri-artifact' but it doesn't currently so to keep things from breaking we can just look for the uri property.
| <PageSection style={{ overflow: 'hidden', maxWidth: '100vw', width: '100%' }}> | ||
| <style> | ||
| {` | ||
| .performance-insights-container { | ||
| width: 100%; | ||
| max-width: 100%; | ||
| overflow-x: hidden; | ||
| } | ||
| `} | ||
| </style> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah let's kill all the inline styles and start fresh, try using the sticky columns pattern with the mod-arch-shared version of the Table and then see what minimal tweaks it needs.
| </FlexItem> | ||
| </Flex> | ||
| </FlexItem> | ||
| <FlexItem style={{ width: '100%', overflow: 'hidden' }}> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same here with the inline styles
Signed-off-by: Yulia Krimerman <[email protected]>
Signed-off-by: Yulia Krimerman <[email protected]>
Signed-off-by: Yulia Krimerman <[email protected]>
139573f to
0efddec
Compare
Signed-off-by: Yulia Krimerman <[email protected]>
Signed-off-by: Mike Turley <[email protected]>
Signed-off-by: Mike Turley <[email protected]>
Signed-off-by: Mike Turley <[email protected]>
Update hardware config table PR: Convert to use mod-arch-shared Table, minor cleanup
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, just a couple things we should follow up on in the next PR
| } | ||
| }; | ||
|
|
||
| // TODO sticky isn't quite working with both columns and the scroll container is weird. double check PF docs |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I forgot to remove this comment - I want to unblock your rebase, can you remove in the next PR @YuliaKrimerman ?
| {hardwareConfigColumns.map((column) => ( | ||
| <Td | ||
| key={column.field} | ||
| dataLabel={column.label.replace('\n', ' ')} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@YuliaKrimerman in the next PR can you also just switch this to dataLabel={column.label}? I forgot to remove the replace here which is no longer necessary
|
/approve |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: mturley The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
* Add STUB endpoint for filter_option and update types, mocks (kubeflow#1666) * Add STUB endpoint for filter_option and update types, mocks Signed-off-by: ppadti <[email protected]> * Fix typo Signed-off-by: ppadti <[email protected]> * Fix logo url, update FE types Signed-off-by: ppadti <[email protected]> * Fix typo Signed-off-by: ppadti <[email protected]> --------- Signed-off-by: ppadti <[email protected]> * Update RELEASE.md (kubeflow#1682) following manifest re-org with - kubeflow#1576 Signed-off-by: Matteo Mortari <[email protected]> * Use fixed keys for CatalogFilterOptionsList type (kubeflow#1687) Signed-off-by: Mike Turley <[email protected]> * build(deps): bump boto3 from 1.40.25 to 1.40.40 in /clients/python (kubeflow#1672) Bumps [boto3](https://github.com/boto/boto3) from 1.40.25 to 1.40.40. - [Release notes](https://github.com/boto/boto3/releases) - [Commits](boto/boto3@1.40.25...1.40.40) --- updated-dependencies: - dependency-name: boto3 dependency-version: 1.40.40 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps-dev): bump ruff from 0.12.12 to 0.13.2 in /clients/python (kubeflow#1673) Bumps [ruff](https://github.com/astral-sh/ruff) from 0.12.12 to 0.13.2. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](astral-sh/ruff@0.12.12...0.13.2) --- updated-dependencies: - dependency-name: ruff dependency-version: 0.13.2 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump typing-extensions from 4.14.1 to 4.15.0 in /clients/python (kubeflow#1675) Bumps [typing-extensions](https://github.com/python/typing_extensions) from 4.14.1 to 4.15.0. - [Release notes](https://github.com/python/typing_extensions/releases) - [Changelog](https://github.com/python/typing_extensions/blob/main/CHANGELOG.md) - [Commits](python/typing_extensions@4.14.1...4.15.0) --- updated-dependencies: - dependency-name: typing-extensions dependency-version: 4.15.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump huggingface-hub from 0.35.0 to 0.35.2 in /clients/python (kubeflow#1681) Bumps [huggingface-hub](https://github.com/huggingface/huggingface_hub) from 0.35.0 to 0.35.2. - [Release notes](https://github.com/huggingface/huggingface_hub/releases) - [Commits](huggingface/huggingface_hub@v0.35.0...v0.35.2) --- updated-dependencies: - dependency-name: huggingface-hub dependency-version: 0.35.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Merge model-catalog-enhancements branch (kubeflow#1656) * feat(catalog): deploy postgres for model catalog (kubeflow#1584) * feat(catalog): initialize postgres for model catalog Initialize PostgreSQL database for model catalog with connection setup. Refactored embedmd initialization code from model registry for reuse. Added Kubernetes manifests for PostgreSQL StatefulSet, PVC, and service configuration. Signed-off-by: Paul Boyd <[email protected]> * fix(catalog): remove chdir before loading catalogs Instead of changing directories, pass the directory that files should be relative to when loading a catalog. Signed-off-by: Paul Boyd <[email protected]> --------- Signed-off-by: Paul Boyd <[email protected]> * feat(catalog): add postgres for catalog dev (kubeflow#1623) Adding to tilt and docker compose. Signed-off-by: Paul Boyd <[email protected]> * feat(datastore): refactor type creation (kubeflow#1636) - Refactor embedmd to created types from a spec, instead of database migrations. - Add TypeRepository and TypePropertyRepository services Signed-off-by: Paul Boyd <[email protected]> * Add artifact types to the model catalog (kubeflow#1649) * chore: update testutils to take a datastore spec argument Signed-off-by: Paul Boyd <[email protected]> * feat(catalog): add artifact types to openapi spec And re-generate code. Signed-off-by: Paul Boyd <[email protected]> * feat(catalog): add database models and services Signed-off-by: Paul Boyd <[email protected]> --------- Signed-off-by: Paul Boyd <[email protected]> * Update api/openapi/src/catalog.yaml Co-authored-by: Dhiraj Bokde <[email protected]> Signed-off-by: Paul Boyd <[email protected]> * fix(catalog): set source_id type correctly Signed-off-by: Paul Boyd <[email protected]> * fix(catalog): fix k8s resource names Signed-off-by: Paul Boyd <[email protected]> --------- Signed-off-by: Paul Boyd <[email protected]> Co-authored-by: Dhiraj Bokde <[email protected]> * chore: bump MR py client version to 0.3.2 (kubeflow#1684) Signed-off-by: Matteo Mortari <[email protected]> * feat: use db as source in model catalog (kubeflow#1667) * feat: switch to db usage WIP Signed-off-by: Alessio Pragliola <[email protected]> * fix: partially fix model_catalog_service tests Signed-off-by: Alessio Pragliola <[email protected]> * fix: tests Signed-off-by: Alessio Pragliola <[email protected]> * fix: change mustache template to support array of primitive type plus reflect removal Signed-off-by: Alessio Pragliola <[email protected]> * fix: /models endpoint not working Signed-off-by: Alessio Pragliola <[email protected]> * fix: artifacts route 500 status code Signed-off-by: Alessio Pragliola <[email protected]> * feat: make artifacts run on a unified repository Signed-off-by: Alessio Pragliola <[email protected]> * feat: add custom properties to catalog artifacts Signed-off-by: Alessio Pragliola <[email protected]> * feat: add tests files to db_catalog and ctalog_artifact Signed-off-by: Alessio Pragliola <[email protected]> * fix: pagination issues Signed-off-by: Alessio Pragliola <[email protected]> * fix: return 404 is the model does not exist in the Get model Signed-off-by: Alessio Pragliola <[email protected]> * fix: 500 error code on bad user input Signed-off-by: Alessio Pragliola <[email protected]> * fix: q parameter not working Signed-off-by: Alessio Pragliola <[email protected]> * chore: better function/alias naming Signed-off-by: Alessio Pragliola <[email protected]> Co-authored-by: Paul Boyd <[email protected]> --------- Signed-off-by: Alessio Pragliola <[email protected]> Co-authored-by: Paul Boyd <[email protected]> * ci: dependabot prefers requirements.txt (kubeflow#1689) followup to kubeflow#1658 given the following error: ``` Dependabot encountered the following error when parsing your .github/dependabot.yml: The property '#/updates/1/exclude-paths/0' should be relative to the repository root. Please update the config file to conform with Dependabot's specification. ``` Signed-off-by: Matteo Mortari <[email protected]> * MC Hardware configuration table with mock data (kubeflow#1664) * implemented Hardware configuration table with mock data Signed-off-by: Yulia Krimerman <[email protected]> * addressed comments and updated fields Signed-off-by: Yulia Krimerman <[email protected]> * addressed comments Signed-off-by: Yulia Krimerman <[email protected]> * configured types Signed-off-by: Yulia Krimerman <[email protected]> * Transition to using mod-arch-shared table and fix sticky columns Signed-off-by: Mike Turley <[email protected]> * Make customProperties-related utils generic Signed-off-by: Mike Turley <[email protected]> * Remove unused import Signed-off-by: Mike Turley <[email protected]> --------- Signed-off-by: Yulia Krimerman <[email protected]> Signed-off-by: Mike Turley <[email protected]> Co-authored-by: Mike Turley <[email protected]> * chore(bff): handle SIGINT gracefully in development make targets (kubeflow#1670) Signed-off-by: Eder Ignatowicz <[email protected]> * fix: run catalog tests in github PRs (kubeflow#1700) Signed-off-by: Paul Boyd <[email protected]> * chore: remove go.work and go.work.sum (kubeflow#1695) Signed-off-by: Paul Boyd <[email protected]> * fix: test fuzz action run on fixed kubernetes version (kubeflow#1703) Signed-off-by: Alessio Pragliola <[email protected]> * Updates to support running fuzz_api tests against live cluster (kubeflow#1688) Signed-off-by: Debarati Basu-Nag <[email protected]> * fix: align MR and MC route paths (kubeflow#1702) * fix: align MR route paths with URL generation functions Signed-off-by: manaswinidas <[email protected]> * Fix Cypress tests for the routes change Signed-off-by: manaswinidas <[email protected]> * Fix linting issues Signed-off-by: manaswinidas <[email protected]> * Fix Cypress tests for the routes change Signed-off-by: manaswinidas <[email protected]> * Cleanup Signed-off-by: manaswinidas <[email protected]> * Add TODO for breaking changes Signed-off-by: manaswinidas <[email protected]> * Don't introduce ai-hub/ routes Signed-off-by: manaswinidas <[email protected]> * Cleanup Cypress tests Signed-off-by: manaswinidas <[email protected]> --------- Signed-off-by: manaswinidas <[email protected]> * fix: catalog postgres secret name (kubeflow#1704) Signed-off-by: Alessio Pragliola <[email protected]> * Basic filters rendering (kubeflow#1698) * inital implementation Signed-off-by: rsun19 <[email protected]> * added wrappers for basic filters Signed-off-by: rsun19 <[email protected]> * added filter mapping and fixed filters Signed-off-by: rsun19 <[email protected]> * added stronger types Signed-off-by: rsun19 <[email protected]> * changed useeffect Signed-off-by: rsun19 <[email protected]> * integrated bff stub Signed-off-by: rsun19 <[email protected]> * fixed filter search Signed-off-by: rsun19 <[email protected]> * fixed types Signed-off-by: rsun19 <[email protected]> * added tests Signed-off-by: rsun19 <[email protected]> * fixed lint warning Signed-off-by: rsun19 <[email protected]> * removed use effect Signed-off-by: rsun19 <[email protected]> * addressed some comments Signed-off-by: rsun19 <[email protected]> * fixed lint issue Signed-off-by: rsun19 <[email protected]> * fixed tests Signed-off-by: rsun19 <[email protected]> * Adjusting filter types Signed-off-by: Mike Turley <[email protected]> * Always show selected options even if they don't match search Signed-off-by: Mike Turley <[email protected]> * Fix Signed-off-by: Mike Turley <[email protected]> * fixed lint issue Signed-off-by: rsun19 <[email protected]> --------- Signed-off-by: rsun19 <[email protected]> Signed-off-by: Mike Turley <[email protected]> Co-authored-by: Mike Turley <[email protected]> * build(deps): bump sigs.k8s.io/controller-runtime from 0.21.0 to 0.22.1 in /clients/ui/bff (kubeflow#1678) Bumps [sigs.k8s.io/controller-runtime](https://github.com/kubernetes-sigs/controller-runtime) from 0.21.0 to 0.22.1. - [Release notes](https://github.com/kubernetes-sigs/controller-runtime/releases) - [Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md) - [Commits](kubernetes-sigs/controller-runtime@v0.21.0...v0.22.1) --- updated-dependencies: - dependency-name: sigs.k8s.io/controller-runtime dependency-version: 0.22.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump github.com/go-chi/chi/v5 from 5.2.2 to 5.2.3 (kubeflow#1671) Bumps [github.com/go-chi/chi/v5](https://github.com/go-chi/chi) from 5.2.2 to 5.2.3. - [Release notes](https://github.com/go-chi/chi/releases) - [Changelog](https://github.com/go-chi/chi/blob/master/CHANGELOG.md) - [Commits](go-chi/chi@v5.2.2...v5.2.3) --- updated-dependencies: - dependency-name: github.com/go-chi/chi/v5 dependency-version: 5.2.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump ossf/scorecard-action from 2.4.2 to 2.4.3 (kubeflow#1690) Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.4.2 to 2.4.3. - [Release notes](https://github.com/ossf/scorecard-action/releases) - [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md) - [Commits](ossf/scorecard-action@05b42c6...4eaacf0) --- updated-dependencies: - dependency-name: ossf/scorecard-action dependency-version: 2.4.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Fix places where we missed using the new route util (kubeflow#1714) Signed-off-by: Mike Turley <[email protected]> * feat(catalog): load YAML catalogs into the database (kubeflow#1697) * feat(catalog): load YAML catalogs into the database - Add new ModelProviderFunc interface for pluggable model providers - Implement SourceCollection for managing catalog sources and origins - Refactor catalog loading to support multiple source formats - Add comprehensive test coverage for new loading functionality - Include database migrations for foreign key constraints - Extend catalog models to support new artifact types This introduces a more flexible catalog loading architecture that supports loading models from YAML sources while maintaining backward compatibility. Signed-off-by: Paul Boyd <[email protected]> * fix(catalog): use the correct types for logo and readme fields Signed-off-by: Paul Boyd <[email protected]> * fix(catalog): silence missed event warnings Signed-off-by: Paul Boyd <[email protected]> * fix(catalog): default language and tasks to empty slices Signed-off-by: Paul Boyd <[email protected]> * fix(catalog): pause after receiving fsnotify events We see multiple change events for files that are partially written, so pause a bit to give time for the write to finish before we process it. Signed-off-by: Paul Boyd <[email protected]> --------- Signed-off-by: Paul Boyd <[email protected]> * build(deps): bump github.com/brianvoe/gofakeit/v7 from 7.3.0 to 7.7.3 in /clients/ui/bff (kubeflow#1713) Bumps [github.com/brianvoe/gofakeit/v7](https://github.com/brianvoe/gofakeit) from 7.3.0 to 7.7.3. - [Release notes](https://github.com/brianvoe/gofakeit/releases) - [Commits](brianvoe/gofakeit@v7.3.0...v7.7.3) --- updated-dependencies: - dependency-name: github.com/brianvoe/gofakeit/v7 dependency-version: 7.7.3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): upgrade to k8s.io/client-go v0.33.5 (kubeflow#1715) Signed-off-by: Paul Boyd <[email protected]> --------- Signed-off-by: ppadti <[email protected]> Signed-off-by: Matteo Mortari <[email protected]> Signed-off-by: Mike Turley <[email protected]> Signed-off-by: dependabot[bot] <[email protected]> Signed-off-by: Paul Boyd <[email protected]> Signed-off-by: Alessio Pragliola <[email protected]> Signed-off-by: Yulia Krimerman <[email protected]> Signed-off-by: Eder Ignatowicz <[email protected]> Signed-off-by: Debarati Basu-Nag <[email protected]> Signed-off-by: manaswinidas <[email protected]> Signed-off-by: rsun19 <[email protected]> Co-authored-by: Pushpa Padti <[email protected]> Co-authored-by: Matteo Mortari <[email protected]> Co-authored-by: Mike Turley <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Dhiraj Bokde <[email protected]> Co-authored-by: Alessio Pragliola <[email protected]> Co-authored-by: Yulia Krimerman <[email protected]> Co-authored-by: Eder Ignatowicz <[email protected]> Co-authored-by: Debarati Basu-Nag <[email protected]> Co-authored-by: Manaswini Das <[email protected]> Co-authored-by: Robert Sun <[email protected]>
Description
Implemented a comprehensive Hardware Configuration table within the Performance Insights tab of the Model Catalog details page, replacing the previous "Coming Soon" placeholder with a fully functional data table.
HardwareConfigurationTable: Main table component with sorting, and loading states
In addition includes a fork from @mturley that includes the scrolling of the table, as well as the left sticky columns and the use of mod-arch Table
How Has This Been Tested?
Screen.Recording.2025-10-01.at.5.28.00.PM.mov
Merge criteria:
DCOcheck)ok-to-testhas been added to the PR.If you have UI changes