Skip to content

Automated Sync from main to stable - #318

Open
rhods-devops-app[bot] wants to merge 29 commits into
stablefrom
main
Open

rhods-devops-app[bot] wants to merge 29 commits into
stablefrom
main

Conversation

@rhods-devops-app

@rhods-devops-app rhods-devops-app Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Automated Sync from main to stable

This PR automatically syncs the main branch to the stable branch by opening a pull request from main into stable.

Sync Summary

  • Latest commit: 960c37e9 Use latest release trainer image in param.env

  • Total commits to sync: 28

  • Source: https://github.com/red-hat-data-services/trainer.git @ main

  • Target: https://github.com/red-hat-data-services/trainer.git @ stable

  • PR head: main

Commits to be synced

Merging

GitHub automerge is enabled for this pull request once required checks pass.

abhijeet-dhumal and others added 18 commits October 14, 2026 17:58
* feat(ci): add Prometheus monitoring overlay

Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>

* feat(manifests): add Helm ServiceMonitor support

Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>

* fix(helm): correct ServiceMonitor boilerplate headers

Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>

* fix: align ServiceMonitor with metrics configuration

Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>

* test: cover metrics auth and document monitoring overlay

Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>

* fix: validate secure metrics authentication

Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>

* fix(helm): grant metrics authentication permissions

Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>

* fix: harden Prometheus ServiceMonitor configuration

Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>

* fix: require secret credentials for authenticated metrics

Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>

* fix: move ServiceMonitor templates under prometheus

Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>

* docs: clarify Prometheus monitoring deployment requirements

Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>

* fix: label Trainer Service as part of Kubeflow

Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>

* fix: address review feedback on monitoring docs and workflow

Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>

* fix: align monitoring overlay with Prometheus layout

Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>

---------

Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>
…al (kubeflow#4192)

ExtractBestResult kept the first trial it saw when objective values were
equal. The trial list comes from the cache and its order changes between
reconciles, so status.result could point at a different trial each time,
even after the job completed.

On a tie, pick the trial with the earlier creationTimestamp, then the one
with the smaller name. The result no longer depends on list order.

Fixes kubeflow#4169

Signed-off-by: ISystemNoTool <btxu-db@outlook.com>
…kubeflow#4029)

* fix(runtime): emit PRTE env vars so MPI plugin works with Open MPI 5

The MPI plugin configures OpenMPI runtimes exclusively through ORTE-era
MCA environment variables (OMPI_MCA_orte_default_hostfile,
OMPI_MCA_orte_keep_fqdn_hostnames, OMPI_MCA_orte_set_default_slots and
OMPI_MCA_plm_rsh_args).

Open MPI 5.0 removed ORTE and replaced it with PRTE, so those keys are
no longer recognised. Open MPI ignores unknown OMPI_MCA_* variables
silently, so on an Open MPI >= 5 image the generated hostfile is never
read: mpirun falls back to localhost with one slot per core and runs
every rank on the launcher. The TrainJob still reports Complete, which
makes a multi-node job silently degrade to single-node instead of
failing.

Reproduced on Kubeflow Trainer v2.1.0 with mpioperator/mpi-pi:openmpi
(Open MPI 5.0.7) and numNodes: 3 -- all 20 ranks landed on the launcher
while both worker pods idled. Passing --hostfile explicitly restored the
expected 3 ranks across 3 pods.

mpiImplementation has no version axis and the image's MPI version is not
knowable from the manifest, so rather than detect a version this emits
both families. Open MPI 4 ignores the PRTE_MCA_* keys and Open MPI 5
ignores the OMPI_MCA_orte_* ones, so a single TrainingRuntime is correct
on both. The PRTE names were verified against `prte_info --all` from
Open MPI 5.0.7.

PRTE's keep_fqdn_hostnames is deliberately left disabled, unlike its
ORTE counterpart. The generated hostfile always uses JobSet's short-form
Pod DNS name (<pod>.<service>), which never string-matches what PRTE
resolves for itself; with that option on and runLauncherAsNode enabled,
PRTE decided the launcher's own hostfile entry was a remote host and
tried (and failed) to SSH to itself -- caught by re-running the fix on
a live TrainJob before this branch was pushed anywhere.

The new keys are added to MPIReservedEnvNames for consistency with the
existing validation.

Refs: kubeflow/mpi-operator#842

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WxVyKbz639wtfwRj6r18og
Signed-off-by: Matteo Bunino <48362942+matbun@users.noreply.github.com>

* bump ompi version from 4 to 5 for deepspeed and mlx

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Matteo Bunino <48362942+matbun@users.noreply.github.com>

* test(mpi): expect PRTE env vars in the nil defaults case

Signed-off-by: Matteo Bunino <48362942+matbun@users.noreply.github.com>

---------

Signed-off-by: Matteo Bunino <48362942+matbun@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…e and ClusterTrainingRuntime (kubeflow#3892)

* test(runtime): add test coverage for ValidateObjects methods

Add comprehensive test coverage for TrainingRuntime.ValidateObjects()
and ClusterTrainingRuntime.ValidateObjects() methods which previously
had zero test coverage.

Tests cover existing behavior only:
- Runtime exists and is valid (success path)
- Runtime does not exist (returns field error)
- Runtime in different namespace (returns field error for TrainingRuntime)
- Deprecated runtime (returns warning for ClusterTrainingRuntime)

All tests verify the current implementation without proposing new
validation rules.

Signed-off-by: Prateek Rai <prateekrai903@gmail.com>

* chore(test): address PR review comments for ValidateObjects tests

- Move ValidateObjects tests to per-type test files (trainingruntime_test.go and clustertrainingruntime_test.go) instead of standalone validateobjects_test.go
- Use cmp.Diff pattern for assertions instead of manual field error counting
- Remove duplicate test case for runtime in different namespace
- Simplify warnings handling by using []string type conversion

This addresses review comments from @robert-bell to improve test organization and consistency with existing test patterns in the codebase.

Signed-off-by: Prateek Rai <prateekrai903@gmail.com>

* Update pkg/runtime/core/trainingruntime_test.go

Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Signed-off-by: Prateek Rai <prateekrai903@gmail.com>

* Update pkg/runtime/core/trainingruntime_test.go

Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Signed-off-by: Prateek Rai <prateekrai903@gmail.com>

* Update pkg/runtime/core/trainingruntime_test.go

Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Signed-off-by: Prateek Rai <prateekrai903@gmail.com>

* Update pkg/runtime/core/trainingruntime_test.go

Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Signed-off-by: Prateek Rai <prateekrai903@gmail.com>

* Update pkg/runtime/core/clustertrainingruntime_test.go

Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Signed-off-by: Prateek Rai <prateekrai903@gmail.com>

* Update pkg/runtime/core/clustertrainingruntime_test.go

Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Signed-off-by: Prateek Rai <prateekrai903@gmail.com>

* Update pkg/runtime/core/clustertrainingruntime_test.go

Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Signed-off-by: Prateek Rai <prateekrai903@gmail.com>

* Update pkg/runtime/core/clustertrainingruntime_test.go

Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Signed-off-by: Prateek Rai <prateekrai903@gmail.com>

* Update pkg/runtime/core/clustertrainingruntime_test.go

Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Signed-off-by: Prateek Rai <prateekrai903@gmail.com>

* Update pkg/runtime/core/clustertrainingruntime_test.go

Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Signed-off-by: Prateek Rai <prateekrai903@gmail.com>

* Update pkg/runtime/core/clustertrainingruntime_test.go

Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Signed-off-by: Prateek Rai <prateekrai903@gmail.com>

* test(runtimes): update ClusterTrainingRuntime test for lowercase runtimeRef

Update test expectations in TestClusterTrainingRuntimeValidateObjects to use
lowercase 'runtimeRef' instead of 'RuntimeRef' (capital R) to match the fix
in PR kubeflow#4194 which corrected the field path casing in error messages.

Also add missing imports (ptr and admission) required by the test cases.

This addresses the comment from contributor nikhil3495 in PR kubeflow#3892 which
noted the case mismatch between ClusterTrainingRuntime and TrainingRuntime
implementations.

Signed-off-by: Prateek Rai <prateekmain2610@gmail.com>
Signed-off-by: Prateek Rai <prateekrai903@gmail.com>

* chore: trigger CI re-run for DCO and network flake

Signed-off-by: Prateek Rai <prateekrai903@gmail.com>

* chore: trigger CI re-run

Signed-off-by: Prateek Rai <prateekrai903@gmail.com>

---------

Signed-off-by: Prateek Rai <prateekrai903@gmail.com>
Signed-off-by: Prateek Rai <prateekmain2610@gmail.com>
Signed-off-by: Prateek Rai <prateek@devzero.io>
Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
…#3219)

* feat(kep): KEP-3015: Workload Aware Scheduling for TrainJob

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Disallow to set JobSet and Job scheduling API

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Clarify on k8s version and mutability

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Clarify on CPG support

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Remove ResourceClaims from Level 1 and 2

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Fix API types for schedulingv1alpha3

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Clarify the workload builder library usage

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Add Upstream API Dependency Risks

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Check minGroupCount instead of minCount

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Add patch RBAC

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Add validation for DependsOn

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Fix the TrainJob Resume policy

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Fix the ancestor label

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Add the index prefix for PodGroupTemplate names in Level 2

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Set minCount to numNodes - 1 to avoid MPI deadlock

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Update proposals/3015-workload-aware-scheduling/kep.yaml

Co-authored-by: Yuki Iwai <yuki.iwai.tz@gmail.com>
Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Update proposals/3015-workload-aware-scheduling/kep.yaml

Co-authored-by: Yuki Iwai <yuki.iwai.tz@gmail.com>
Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Add validation rules for DRA

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Fix feature gates

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

---------

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Co-authored-by: Yuki Iwai <yuki.iwai.tz@gmail.com>
…th JobSet (kubeflow#4244)

Signed-off-by: Rob Bell <robell@redhat.com>
…age (kubeflow#4246)

Signed-off-by: Matteo Bunino <48362942+matbun@users.noreply.github.com>
…ntime update validation (kubeflow#4165)

Add table-driven unit tests for ValidateUpdate and ValidateDelete in trainingruntime_webhook_test.go and clustertrainingruntime_webhook_test.go. Compare exact field.ErrorList aggregate errors using cmp.Diff, drop wantError: false from valid cases, and verify that updating from an invalid old object succeeds.

Signed-off-by: Divyansh Rawat <divyanshrawatofficial@gmail.com>
…lang group (kubeflow#4223)

Bumps the golang group with 1 update: [golang.org/x/crypto](https://github.com/golang/crypto).


Updates `golang.org/x/crypto` from 0.57.0 to 0.58.0
- [Commits](golang/crypto@v0.57.0...v0.58.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.58.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: golang
...

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

* test(statusserver): add unit tests for the token authorizer

Signed-off-by: shreyaabaranwal <shreyabaranwal229@gmail.com>

* test(statusserver): address review feedback on authorizer tests

Signed-off-by: shreyaabaranwal <shreyabaranwal229@gmail.com>

* test(statusserver): cover missing exp claim and key rotation overlap

Signed-off-by: shreyaabaranwal <shreyabaranwal229@gmail.com>

---------

Signed-off-by: shreyaabaranwal <shreyabaranwal229@gmail.com>
…d6b72 (#313)

Signed-off-by: konflux-internal-p02 <170854209+konflux-internal-p02[bot]@users.noreply.github.com>
Co-authored-by: konflux-internal-p02[bot] <170854209+konflux-internal-p02[bot]@users.noreply.github.com>
Signed-off-by: Rob Bell <robell@redhat.com>

# Conflicts:
#	charts/kubeflow-trainer/templates/crd/trainer.kubeflow.org_clustertrainingruntimes.yaml
#	charts/kubeflow-trainer/templates/crd/trainer.kubeflow.org_trainingruntimes.yaml
#	manifests/base/crds/trainer.kubeflow.org_clustertrainingruntimes.yaml
#	manifests/base/crds/trainer.kubeflow.org_trainingruntimes.yaml
Signed-off-by: Rob Bell <robell@redhat.com>
chore: merge upstream/master into midstream/main
@coderabbitai

coderabbitai Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: bb7ee3d5-855e-4bd1-b791-0d37c0f76443

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown

🎉 Welcome to the Kubeflow Trainer! 🎉

Thanks for opening your first PR! We're happy to have you as part of our community 🚀

Here's what happens next:

  • If you haven't already, please check out our Contributing Guide for repo-specific guidelines and the Kubeflow Contributor Guide for general community standards.
  • Our team will review your PR soon! cc @kubeflow/kubeflow-trainer-team

Join the community:

Feel free to ask questions in the comments if you need any help or clarification!
Thanks again for contributing to Kubeflow! 🙏

@coveralls

coveralls commented Oct 21, 2026 •

Copy link
Copy Markdown

Coverage Report for CI Build 40062914952

Coverage increased (+2.0%) to 73.706%

Details

  • Coverage increased (+2.0%) from the base build.
  • Patch coverage: 81 uncovered changes across 2 files (311 of 392 lines covered, 79.34%).
  • 1 coverage regression across 1 file.

Uncovered Changes

File Changed Covered %
pkg/metrics/instrumentation.go 355 278 78.31%
pkg/metrics/setup.go 4 0 0.0%
Total (4 files) 392 311 79.34%

Coverage Regressions

1 previously-covered line in 1 file lost coverage.

File Lines Losing Coverage Coverage
pkg/metrics/setup.go 1 0.0%

Coverage Stats

Coverage Status
Relevant Lines: 5853
Covered Lines: 4314
Line Coverage: 73.71%
Coverage Strength: 0.85 hits per line

💛 - Coveralls

abhijeet-dhumal and others added 5 commits October 21, 2026 11:56
Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>
The rhoai overlay pinned namespace: opendatahub, so the ServiceMonitor
tlsConfig.serverName was rendered as
kubeflow-trainer-controller-manager.opendatahub.svc. When the platform
operator deploys Trainer into the redhat-ods-applications applications
namespace, the controller's serving certificate is issued for
kubeflow-trainer-controller-manager.redhat-ods-applications.svc and the
Prometheus scrape fails TLS verification, leaving the target down.

Render the overlay directly into redhat-ods-applications, matching the
convention used by other RHOAI component overlays (e.g.
data-science-pipelines-operator), so serverName matches the serving
certificate.

Also derive the trainer-tls-profile ClusterRoleBinding subject namespace
from the kustomization namespace via a replacement instead of the
hardcoded opendatahub value, so it follows the target namespace on
render.

Co-Authored-By: Claude Code <noreply@anthropic.com>
Signed-off-by: Karel Suta <ksuta@redhat.com>
deploy-rhoai hardcoded the opendatahub namespace even though it applies
the rhoai kustomization render directly (kubectl apply -k), which takes
its namespace from the kustomization. After rendering into
redhat-ods-applications, the target created and labeled the wrong
namespace, placed the prometheus-k8s discovery Role/RoleBinding in the
wrong namespace, and waited for the deployment in the wrong namespace.

Use APPLICATIONS_NAMESPACE consistently in deploy-rhoai/undeploy-rhoai
and default it to redhat-ods-applications to match the manifests.

Co-Authored-By: Claude Code <noreply@anthropic.com>
Signed-off-by: Karel Suta <ksuta@redhat.com>
konflux-internal-p02 Bot and others added 3 commits October 22, 2026 01:51
…d25f2 (#321)

Signed-off-by: konflux-internal-p02 <170854209+konflux-internal-p02[bot]@users.noreply.github.com>
Co-authored-by: konflux-internal-p02[bot] <170854209+konflux-internal-p02[bot]@users.noreply.github.com>
* feat: add RHOAI Trainer recording prometheus rules

Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>

* test: add Promtool coverage for Trainer recording rules

Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>

* fix: bound Trainer telemetry rule cardinality

Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>

* fix: apply counter rates before aggregating Trainer telemetry

Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>

* feat: add bounded Trainer telemetry recording rules

Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>

* fix: align trainer metrics rule naming

Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>

---------

Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>
…b9452 (#326)

Signed-off-by: konflux-internal-p02 <170854209+konflux-internal-p02[bot]@users.noreply.github.com>
Co-authored-by: konflux-internal-p02[bot] <170854209+konflux-internal-p02[bot]@users.noreply.github.com>
@ckhordiasma

Copy link
Copy Markdown

@rhods-devops-app[bot]: The following test has Succeeded:

Test Results

47 passed, 0 failed, 4 skipped

View test details
Test Result Duration
[BeforeSuite] ✅ PASS 0.001001401s
[It] OptimizationJob e2e when Creating OptimizationJob with random search algorithm should provision algorithm service, run trials to completion, record best result, and perform cleanup ⏭️ SKIP 0s
[It] OptimizationJob e2e when Creating OptimizationJob with random search algorithm should fail if unsupported search algorithm is configured ⏭️ SKIP 0s
[It] TrainJob e2e when Creating TrainJob to perform the PyTorch workload should create TrainJob with PyTorch runtime reference ✅ PASS 295.179261792s
[It] TrainJob e2e when Creating TrainJob to perform OpenMPI workload should create TrainJob with DeepSpeed runtime reference ⏭️ SKIP 0.049250157s
[It] TrainJob e2e when Creating TrainJob to perform JAX workload should create TrainJob with JAX runtime reference ✅ PASS 134.650241583s
[It] TrainJob e2e when Creating TrainJob to perform XGBoost workload should create TrainJob with XGBoost runtime reference ✅ PASS 45.190424436s
[It] TrainJob e2e when Creating TrainJob to perform Flux workload should create TrainJob with Flux runtime reference ✅ PASS 28.723053508s
[It] TrainJob e2e when Creating a TrainJob with RuntimePatches should preserve user-provided manager fields ✅ PASS 0.181247842s
[It] TrainJob e2e when Creating a TrainJob with RuntimePatches should update Time only for the changed patch on update ✅ PASS 1.189104889s
[It] TrainJob e2e when Creating a TrainJob managed by an external controller should not be reconciled by the built-in controller ✅ PASS 15.091893947s
[It] TrainJob e2e when Creating a TrainJob with Resource Timeouts should fail the TrainJob with DeadlineExceeded when active timeout expires ✅ PASS 9.93787461s
[It] TrainJob e2e when Creating TrainJob with runtime status server instrumentation should inject runtime configuration which allows the runtime status endpoint to be called ⏭️ SKIP 0s
[It] TrainJob e2e when Updating a runtime a suspended TrainJob should use the original runtime configuration and not pick up the new configuration TrainingRuntime ✅ PASS 1.221410193s
[It] TrainJob e2e when Updating a runtime a suspended TrainJob should use the original runtime configuration and not pick up the new configuration ClusterTrainingRuntime ✅ PASS 1.248210462s
[BeforeSuite] ✅ PASS 0.10837682s
[It] RHAI Progression Tracking E2E Tests When progression tracking is enabled should poll metrics and update trainerStatus annotation during training ✅ PASS 80.765965495s
[It] RHAI Progression Tracking E2E Tests When progression tracking is NOT enabled should NOT create trainerStatus annotation ✅ PASS 35.100326574s
[It] RHAI Progression Tracking E2E Tests When progression tracking annotation has invalid value should NOT enable progression tracking for non-'true' values ✅ PASS 15.102670423s
[It] RHAI Progression Tracking E2E Tests When metrics polling configuration is customized should honor custom metrics port and poll interval ✅ PASS 4.146331544s
[It] RHAI Progression Tracking E2E Tests When metrics polling configuration is customized should handle minimum SDK-recommended poll interval (5s) ✅ PASS 0.112406797s
[It] RHAI Progression Tracking E2E Tests When metrics polling configuration is customized should handle maximum SDK-recommended poll interval (300s) ✅ PASS 0.11182116s
[It] RHAI Progression Tracking E2E Tests When metrics polling configuration is customized should use default interval when annotation is missing ✅ PASS 0.107984034s
[It] RHAI Progression Tracking E2E Tests When TrainJob fails during training should capture final status even when job fails ✅ PASS 72.671204144s
[It] RHAI Progression Tracking E2E Tests When metrics endpoint is unreachable should handle connection errors gracefully without crashing ✅ PASS 10.452931969s
[AfterSuite] ✅ PASS 0.016162316s
TestOpenMPICudaClusterTrainingRuntime ✅ PASS 0.030000s
TestDefaultTrainingHubRuntimesMatchDefaultClusterRuntimes ✅ PASS 0.030000s
TestDraFieldsOnTrainJobReachPods ✅ PASS 1.270000s
TestRunTrainJobWithDefaultClusterTrainingRuntimes ✅ PASS 407.970000s
TestJobSetWorkflow ✅ PASS 97.680000s
TestKubeflowSdk ✅ PASS 122.250000s
TestKubeflowSdkKueueIntegration ✅ PASS 47.890000s
TestKueueWorkloadPreemptionSuspendsTrainJob ✅ PASS 3.490000s
TestKueueSchedulingReachesTrainJobPods ✅ PASS 1.390000s
TestMultiNodeOpenMPICpuTrainJob ✅ PASS 32.830000s
TestFailedJobSetWorkflow ✅ PASS 12.480000s
TestRhaiTrainingProgressionCPU ✅ PASS 443.900000s
TestRhaiJitCheckpointingCPU ✅ PASS 542.560000s
TestRhaiFeaturesCPU ✅ PASS 522.480000s
TestRhaiS3CheckpointingCPU ✅ PASS 533.110000s
TestPyTorchDDPMultiNodeMultiCPUWithTorchCuda28 ✅ PASS 73.580000s
TestKueueWorkloadInadmissibleWithNonExistentLocalQueue ✅ PASS 1.200000s
TestTrainerSecureServing ✅ PASS 0.680000s
TestTrainerPrometheusScrape ✅ PASS 0.350000s
TestTrainerNetworkPolicyBlocksIngressFromOtherNamespacesToMetrics ✅ PASS 8.340000s
TestTrainerNetworkPolicyBlocksIngressFromOtherNamespacesToHealth ✅ PASS 8.340000s
TestTrainerNetworkPolicyBlocksIngressFromOtherNamespacesToStatusServer ✅ PASS 8.370000s
TestTrainerNetworkPolicyBlocksIngressFromOtherNamespacesToUnpublishedPort ✅ PASS 6.240000s
TestTrainerNetworkPolicyBlocksIngressFromOtherNamespacesToWorkloadPort ✅ PASS 11.490000s
TestTrainerNetworkPolicyBlocksIngressFromOtherWorkloadsToWorkloadPort ✅ PASS 11.400000s

OCI Artifact Browser URL

View in Artifact Browser

Inspecting Test Artifacts Manually

To inspect your test artifacts manually, follow these steps:

  1. Install ORAS (see the ORAS installation guide).
  2. Download artifacts with the following commands:
mkdir -p oras-artifacts
cd oras-artifacts
oras pull quay.io/opendatahub/odh-ci-artifacts:odh-pr-test-trainer-rnt9z

…b1 (#327)

Signed-off-by: konflux-internal-p02 <170854209+konflux-internal-p02[bot]@users.noreply.github.com>
Co-authored-by: konflux-internal-p02[bot] <170854209+konflux-internal-p02[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.