Skip to content

[pull] main from kubeflow:main#1687

Merged
openshift-merge-bot[bot] merged 11 commits into
opendatahub-io:mainfrom
kubeflow:main
Apr 2, 2026
Merged

[pull] main from kubeflow:main#1687
openshift-merge-bot[bot] merged 11 commits into
opendatahub-io:mainfrom
kubeflow:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Mar 31, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

Taj010 and others added 3 commits March 31, 2026 13:49
…2485)

* add load more for hardwareconfig table

Signed-off-by: Taj010 <rsheen003@gmail.com>

* address comments

Signed-off-by: Taj010 <rsheen003@gmail.com>

* move sorting to server-side

Signed-off-by: Taj010 <rsheen003@gmail.com>

* retest

Signed-off-by: Taj010 <rsheen003@gmail.com>

* address comments

Signed-off-by: Taj010 <rsheen003@gmail.com>

---------

Signed-off-by: Taj010 <rsheen003@gmail.com>
…MUI mode (#2389)

* fix(UI): match toolbar filter input height to dropdown and button in MUI mode

Signed-off-by: HarshwardhanPatil07 <harshpat@redhat.com>

* Fix paddingBlock styles in ThemeAwareSearchInput

Fix linting issues

Signed-off-by: Harshwardhan Patil <harshpat@redhat.com>

* fix: scope toolbar fieldset style via prop instead of hardcoding in FormFieldset

Signed-off-by: Harshwardhan Patil <harshpat@redhat.com>

* remove isToolbarFieldset check in ThemeAwareSearchInput

Signed-off-by: Harshwardhan Patil <harshpat@redhat.com>

---------

Signed-off-by: HarshwardhanPatil07 <harshpat@redhat.com>
Signed-off-by: Harshwardhan Patil <harshpat@redhat.com>
)

* fix(python): preserve directory structure in save_to_oci_registry

Pass top-level entries (dir/*) to oci_layers_on_top instead of
recursively flattened leaf files (dir/**/*). olot's tarball_from_file
preserves subdirectory structure when given a directory but flattens
to basename when given individual files, which caused nested model
directories to lose their hierarchy.

Fixes #2437

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* style: use ternary operator per ruff SIM108

Collapse if/else block into ternary to satisfy the project's ruff
lint rules and autogenerated code sync check.

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

---------

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
@pull pull Bot locked and limited conversation to collaborators Mar 31, 2026
@openshift-ci openshift-ci Bot requested review from dbasunag and fege March 31, 2026 19:11
Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](sigstore/cosign-installer@ba7bc0a...cad07c2)

---
updated-dependencies:
- dependency-name: sigstore/cosign-installer
  dependency-version: 4.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
dependabot Bot and others added 5 commits April 1, 2026 11:59
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.34.1 to 4.35.1.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Commits](github/codeql-action@v4.34.1...v4.35.1)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.35.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ntend (#2525)

Bumps [lodash-es](https://github.com/lodash/lodash) from 4.17.23 to 4.18.1.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](lodash/lodash@4.17.23...4.18.1)

---
updated-dependencies:
- dependency-name: lodash-es
  dependency-version: 4.18.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ui/bff (#2451)

Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.35.0 to 0.35.3.
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](kubernetes/client-go@v0.35.0...v0.35.3)

---
updated-dependencies:
- dependency-name: k8s.io/client-go
  dependency-version: 0.35.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [minimatch](https://github.com/isaacs/minimatch) to 3.1.5 and updates ancestor dependencies [minimatch](https://github.com/isaacs/minimatch) and [serve](https://github.com/vercel/serve). These dependencies need to be updated together.


Updates `minimatch` from 3.1.2 to 3.1.5
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](isaacs/minimatch@v3.1.2...v3.1.5)

Updates `minimatch` from 9.0.5 to 9.0.9
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](isaacs/minimatch@v3.1.2...v3.1.5)

Updates `serve` from 14.2.5 to 14.2.6
- [Release notes](https://github.com/vercel/serve/releases)
- [Changelog](https://github.com/vercel/serve/blob/main/CHANGELOG.md)
- [Commits](vercel/serve@v14.2.5...v14.2.6)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-version: 3.1.5
  dependency-type: indirect
- dependency-name: minimatch
  dependency-version: 9.0.9
  dependency-type: indirect
- dependency-name: serve
  dependency-version: 14.2.6
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Tools are stored in the DB with a qualified prefix (`serverName@version:toolName`)
for uniqueness, but the `GET /mcp_servers/{id}/tools/{toolName}` endpoint
compared the raw DB name against the unqualified URL parameter, so lookups
always failed unless the caller supplied the prefix.

Extract `UnqualifyToolName()` into the converter package and call it from
both `ConvertDbMCPToolToOpenapi` and `GetMCPServerTool`, so the strip logic
lives in one place.

Signed-off-by: Paul Boyd <paul@pboyd.io>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
mturley and others added 2 commits April 2, 2026 21:56
…space fallback (#2524)

* feat(UI): add permission pre-check and optional jobNamespace for transfer jobs

Add SelfSubjectAccessReview check before listing jobs cluster-wide.
When the user lacks cluster-wide list permission, return 403 so the
frontend can prompt for a specific namespace. Add optional jobNamespace
query parameter to scope the job list to a single namespace.

Wire the transfer jobs list route with handlerWithOverride to support
downstream handler overrides via HandlerIDModelTransferJobList.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Turley <mike.turley@alum.cs.umass.edu>

* feat(UI): handle 403 on transfer jobs with namespace input fallback

When the BFF returns 403 (no cluster-wide job list permission), show a
persistent namespace text input so the user can scope the query. The
input is debounced (2s) and also fires on blur. Once a namespace is
provided, jobs are fetched from that namespace only.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Turley <mike.turley@alum.cs.umass.edu>

* fix(UI): add missing interface methods to fakeKubernetesClient in tests

Add CanListJobsClusterWide and GetAllModelTransferJobsInNamespace to
the fake client so it satisfies the updated KubernetesClientInterface.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Turley <mike.turley@alum.cs.umass.edu>

* feat(UI): make namespace input inline with model registry selector

Move the transfer job namespace input and info popover inline next to
the model registry selector row, instead of showing it as a full-width
block in the page body. The help text is now behind an info icon popover.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Turley <mike.turley@alum.cs.umass.edu>

* fix(UI): wrap namespace input in FlexItems with label for inline layout

Wrap the namespace input, label, and info popover in FlexItem
components so they render inline within the selector Flex row
instead of stretching full width. Restore the "Transfer job namespace"
label text.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Turley <mike.turley@alum.cs.umass.edu>

* fix(UI): add horizontal spacing before namespace input label

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Turley <mike.turley@alum.cs.umass.edu>

* fix(UI): return 403 for namespace-scoped forbidden errors and show inline warning

Detect K8s forbidden errors when listing jobs in a specific namespace
and return 403 instead of 500. In the frontend, show an inline warning
alert when the user lacks permission in the entered namespace instead
of the generic error page.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Turley <mike.turley@alum.cs.umass.edu>

* fix(UI): add Enter key submit, reduce debounce to 1s, fix spacer placement

Submit the namespace input on Enter key press in addition to debounce
and blur. Reduce debounce from 2 seconds to 1 second. Move the spacer
to before the label so the gap appears between "View details" and
"Transfer job namespace".

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Turley <mike.turley@alum.cs.umass.edu>

* fix(UI): mark page as loaded when namespace-scoped forbidden error occurs

Use isForbidden instead of isInitialForbidden for the loaded prop so
the page doesn't show a loading spinner forever when the user enters
a namespace they lack permission for.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Turley <mike.turley@alum.cs.umass.edu>

* style(UI): format ModelTransferJobs test with prettier

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Turley <mike.turley@alum.cs.umass.edu>

* fix(UI): address review feedback on transfer jobs permission handling

- Guard RequestIdentityKey type assertion with ,ok pattern to prevent
  panic if context value is nil or wrong type
- Add info alert for initial forbidden state so users know to enter a
  namespace before they click the info popover
- Add test for namespace-scoped forbidden warning alert

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Turley <mike.turley@alum.cs.umass.edu>

* refactor(UI): simplify GetAllModelTransferJobs to use plain string param

Replace variadic jobNamespace ...string with a plain string parameter.
Empty string means all namespaces, matching the pattern used by
GetAllModelTransferJobsInNamespace.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Turley <mike.turley@alum.cs.umass.edu>

* refactor(UI): move permission check from handler to repository layer

Move CanListJobsClusterWide permission check logic from the handler into
the repository's GetAllModelTransferJobs method. The handler no longer
imports the kubernetes package or performs permission decisions directly.

Also merge GetAllModelTransferJobs and GetAllModelTransferJobsInNamespace
into a single interface method with a jobNamespace parameter.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Turley <mike.turley@alum.cs.umass.edu>

* style(UI): remove extra blank line in test file

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Turley <mike.turley@alum.cs.umass.edu>

* fix(UI): guard against nil identity in permission check

Add proper nil check for RequestIdentity extracted from context
in GetAllModelTransferJobs to prevent potential nil pointer panic.
Add testContext() helper to provide identity in test contexts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Turley <mike.turley@alum.cs.umass.edu>

---------

Signed-off-by: Mike Turley <mike.turley@alum.cs.umass.edu>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Model lookups were failing when metadata.json IDs had different casing
than the stored display name. Normalize cache keys to lowercase using
strings.ToLower() in both buildModelDirCache() (write) and Load()
(read) to ensure case-insensitive matching.

Also adds collision detection with a warning log when two model IDs
differ only by case, and fixes modelCount to only increment for
genuinely new cache entries.

Includes comprehensive tests for case-insensitive lookups (5 table-
driven cases) and collision last-write-wins behavior.

Signed-off-by: Chris Hambridge <chambrid@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
Copy link
Copy Markdown

@dbasunag dbasunag left a comment

Choose a reason for hiding this comment

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

/lgtm
/approve
/ok-to-test

@openshift-merge-bot openshift-merge-bot Bot merged commit b311a66 into opendatahub-io:main Apr 2, 2026
33 of 37 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants