Repository navigation
Automated Sync from main to stable - #40
Open
rhods-devops-app[bot] wants to merge 328 commits into
Open
rhods-devops-app[bot] wants to merge 328 commits into
rhods-devops-app[bot] wants to merge 328 commits into
Conversation
…ws (NVIDIA#4419) * refactor(ci): extract release qualification and serialize Codex reviews Signed-off-by: Simon Scatton <sscatton@nvidia.com> * fix(ci): queue Codex reviews without security ordering Signed-off-by: Simon Scatton <sscatton@nvidia.com> * fix(ci): retain qualification evidence after build failures Signed-off-by: Simon Scatton <sscatton@nvidia.com> * docs(ci): shorten compatibility review guidance Signed-off-by: Simon Scatton <sscatton@nvidia.com> --------- Signed-off-by: Simon Scatton <sscatton@nvidia.com>
Signed-off-by: Simon Scatton <sscatton@nvidia.com>
Signed-off-by: Eric Curtin <eric.curtin@docker.com>
* ci(release): notify Slack when a prerelease succeeds Post a top-level message to the triage webhook when a prerelease completes, so recovery after failures is visible. The message omits the triage mention. Closes NVIDIA#4604 Signed-off-by: Matthew Grossman <mgrossman@nvidia.com> * ci(release): link the prerelease tag in the success notification Signed-off-by: Matthew Grossman <mgrossman@nvidia.com> --------- Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
…IA#4420) * ci(release): publish prereleases before qualification Signed-off-by: Simon Scatton <sscatton@nvidia.com> * ci(release): decouple prerelease publication from qualification Signed-off-by: Simon Scatton <sscatton@nvidia.com> --------- Signed-off-by: Simon Scatton <sscatton@nvidia.com>
Signed-off-by: Adrien Langou <alangou@nvidia.com>
* fix(sandbox): distinguish descriptor lookup outcomes Signed-off-by: John Myers <9696606+johntmyers@users.noreply.github.com> * fix(sandbox): preserve bad-descriptor errors in native fallback Signed-off-by: John Myers <9696606+johntmyers@users.noreply.github.com> --------- Signed-off-by: John Myers <9696606+johntmyers@users.noreply.github.com>
* feat(providers): report bounded token-grant failures Signed-off-by: Shiju <shiju@nvidia.com> * test(providers): align policy metadata and TLS lockfile Signed-off-by: Shiju <shiju@nvidia.com> * test(providers): fix trusted grant recovery fixture Signed-off-by: Shiju <shiju@nvidia.com> * test(providers): enable denial API in recovery fixture Signed-off-by: Shiju <shiju@nvidia.com> * refactor(providers): simplify token-grant failure reporting Remove duplication and dead paths from the token-grant failure reporting without changing classification, the workload-visible 502 response, or the wire format. - Build the gRPC failure envelope with tonic-types, store the typed failure in EndpointFailure, and share one request-ID rule and one endpoint-status authority check. - Merge the gateway exchange client wrapper, drop forwarding validators, and name the request field when a reported cause is rejected. - Inject fallback credentials only from live provider state and delete the unread per-connection credential copy. Keep one 502 writer per path and restore the base token-cache handling. - Check the token endpoint after the cache lookup, still before any credential acquisition. - Document 429 and 5xx classification as implemented, and drop tests that repeat retained assertions through the same code path. Signed-off-by: Shiju <shiju@nvidia.com> * refactor(providers): trim token-grant failure tests and supervisor API Cut the token-grant failure tests to one test per distinct behavior across core, gateway, supervisor, CLI and Go, and replace the 794-line closure E2E with status assertions in the existing route-recovery E2E: the refused grant appears in sandbox status with the response's request ID, code, stage and upstream status, and the matching grant's later success clears it. - Pin the live provider snapshot with one helper used by inspected and fallback forwarding, and inject selector-matched grants through inject_for_selectors, which borrows the pinned context. Move the test-only wrapper into test_support. - Drop the 35-second wrappers around the gateway grant RPC. The shared channel bounds the connection attempt and the gateway bounds its token-service calls. - Log the token service's OAuth error and error_description, without control characters and limited to 256 characters each, with the request ID in the gateway or supervisor log. Status and the workload response still carry only the bounded cause. - Keep one check that an untrusted token-service certificate cannot assert a cause. Signed-off-by: Shiju <shiju@nvidia.com> * fix(providers): restore test import and features lockfile The injection tests named EndpointObservationSender through the parent module, which no longer imports it. The features suite lockfile kept the tonic TLS dependency that the removed E2E fixture added. Signed-off-by: Shiju <shiju@nvidia.com> * test(providers): fix body-bound fixture width and table type Pass the response-size width as a named argument; an implicitly captured constant panics at runtime. Name the mutation type in the validation table for Clippy. Signed-off-by: Shiju <shiju@nvidia.com> * test(providers): pad exact-bound body without a format width MAX_TOKEN_RESPONSE_BYTES exceeds u16::MAX, the largest format width, so the padded fixture panicked. Pad with repeat_n as before. Signed-off-by: Shiju <shiju@nvidia.com> * test(server): update public RPC schema hash after rebase Main added the ListProvidersRequest label selector. The merged public schema hash comes from the Branch Checks storage_proto test output. Signed-off-by: Shiju <shiju@nvidia.com> * fix(providers): keep token-service error text out of grant logs A token service can echo a submitted credential in its OAuth error or error_description. Log only the classified failure code, HTTP status and request ID, and cover the canary echo in a dedicated test binary. Signed-off-by: Shiju <shiju@nvidia.com> * docs(providers): tighten token grant failure documentation Signed-off-by: Shiju <shiju@nvidia.com> * docs(providers): condense token grant failure guidance Signed-off-by: John Myers <9696606+johntmyers@users.noreply.github.com> --------- Signed-off-by: Shiju <shiju@nvidia.com> Signed-off-by: John Myers <9696606+johntmyers@users.noreply.github.com> Co-authored-by: John Myers <9696606+johntmyers@users.noreply.github.com>
* docs(kubernetes): document managed workspaces setup Signed-off-by: Drew Newberry <anewberry@nvidia.com> * docs(kubernetes): rename workspace guide title Signed-off-by: Drew Newberry <anewberry@nvidia.com> --------- Signed-off-by: Drew Newberry <anewberry@nvidia.com>
…ss (NVIDIA#3996) * fix(podman): trust an operator-supplied additional CA for direct egress Since v0.1.2 the Podman supervisor runs as its own container, separate from the workload image, so it can no longer inherit a private CA baked into the workload's system trust store. Policy-allowed, inspected HTTPS requests to destinations signed by that CA fail upstream TLS establishment, and the only workaround is rebuilding the supervisor image with the CA baked in. Add a Podman-only additional_ca_bundle setting, independent of the existing proxy_ca_bundle (which requires https_proxy), that bind-mounts an operator PEM into the supervisor container and folds it into the upstream trust store alongside the system CA bundle. Validated on the gateway host at sandbox-create time, matching the existing corporate proxy CA bundle's validation, so a misconfigured path or certificate-free bundle fails closed immediately rather than producing a failed sandbox once the supervisor container starts. Scoped to Podman only, reusing the existing additive-bundle mechanism without new gateway.toml schema, proto fields, or cross-driver plumbing -- a narrower alternative to the in-flight cross-driver implementation in NVIDIA#3292, which remains the intended long-term direction. Fixes NVIDIA#3781. Signed-off-by: politerealism <burdcat17@gmail.com> * fix(podman): keep additional CA mount on the supervisor build_isolation_specs() keeps only trusted_mount() destinations on the supervisor, and the additional CA path was not in that list. The bind mount stayed on the workload while the supervisor received --additional-ca-bundle for a file it did not have, so startup failed. Add the path to trusted_mount() and cover the final supervisor and workload specs with a test. Correct the docs and a code comment to say the bundle is validated when the driver starts, and add Podman troubleshooting guidance to the debug-openshell-cluster skill. Signed-off-by: politerealism <burdcat17@gmail.com> --------- Signed-off-by: politerealism <burdcat17@gmail.com>
…IA#3854) Signed-off-by: Yuedong Wu <dwcn22@outlook.com>
) * feat(docker): select supervisor networking for ECI workloads Signed-off-by: Drew Newberry <anewberry@nvidia.com> * test(docker): use automatic networking in e2e Signed-off-by: Drew Newberry <anewberry@nvidia.com> * test(docker): rely on existing e2e networking coverage Signed-off-by: Drew Newberry <anewberry@nvidia.com> * docs(docker): shorten supervisor networking configuration Signed-off-by: Drew Newberry <anewberry@nvidia.com> * fix(docker): let local gateway discover supervisor endpoint Signed-off-by: Drew Newberry <anewberry@nvidia.com> * refactor(docker): make supervisor networking operator-selected Signed-off-by: Drew Newberry <anewberry@nvidia.com> * refactor(docker): resolve host gateway in the driver Signed-off-by: Drew Newberry <anewberry@nvidia.com> * docs(docker): simplify host networking guidance Signed-off-by: Drew Newberry <anewberry@nvidia.com> * docs(docker): trim configuration guidance Signed-off-by: Drew Newberry <anewberry@nvidia.com> * fix(docker): discover host gateway once at driver startup Signed-off-by: Drew Newberry <anewberry@nvidia.com> --------- Signed-off-by: Drew Newberry <anewberry@nvidia.com>
…ns (NVIDIA#3198) * feat(sdk/go)!: replace positional labels with functional Create options Move labels and annotations from separate parameter positions into functional options (WithLabels, WithAnnotations) on Create() and CreateFromTemplate(). Before: Create(ctx, ws, name, spec, labels, CreateOptions{Annotations: ann}) After: Create(ctx, ws, name, spec, WithLabels(labels), WithAnnotations(ann)) This unifies two resource metadata fields that were inconsistently placed (labels as positional, annotations in a struct) into a single extensible options pattern matching the existing LogOption convention. BREAKING CHANGE: Create() and CreateFromTemplate() signatures changed. All callers must use WithLabels() and WithAnnotations() functional options instead of positional labels and CreateOptions struct. Closes NVIDIA#2807 Signed-off-by: Roland Huß <rhuss@redhat.com> * fix(sdk/go): ignore nil Create options Callers of the previous signature passed nil for the positional labels parameter to create an unlabeled sandbox: Create(ctx, ws, name, spec, nil) That call still compiles against the new variadic signature, because an untyped nil converts to CreateOption. ApplyCreateOptions then invoked it and panicked with a nil pointer dereference, so the migration was unsafe for existing consumers. Skip nil options in ApplyCreateOptions and cover the legacy trailing-nil call with regression tests against ApplyCreateOptions directly, the fake client (Create and CreateFromTemplate), and the gRPC client. Signed-off-by: Roland Huß <rhuss@redhat.com> * refactor(sdk/go): apply Create options through the shared options helper Signed-off-by: Roland Huß <rhuss@redhat.com> * docs(sdk/go): use WithLabels in CreateSandboxFromTemplate examples Signed-off-by: Roland Huß <rhuss@redhat.com> --------- Signed-off-by: Roland Huß <rhuss@redhat.com>
…3463) * feat(vm): add host bind mount support via virtiofs (libkrun) Introduce host directory bind mounts for libkrun VM sandboxes using the virtiofs4 API with simplified permission semantics. The gateway accepts `enable_bind_mounts` in the `[openshell.drivers.vm]` TOML table and forwards it to the VM driver subprocess. Mounts are specified per-sandbox in driver_config.mounts[] with source, target, optional read_only (default: read-only), and an optional `type` that must be `bind`, so Docker and Podman bind entries (without `selinux_label`) parse unchanged. At sandbox validation the driver rejects mounts unless bind mounts are enabled and resource admission is disabled. It rejects GPU and other QEMU launches, sources with control characters, and more mounts than libkrun has interrupt lines for (32 on aarch64, 3 on x86_64), and checks targets against reserved VM-internal directories and each other (no nested targets). The QEMU check runs again once the launch backend is resolved. Host source directories are checked at provisioning, before image preparation, so a briefly missing source fails provisioning visibly instead of denying recovery of a persisted sandbox. Missing, inaccessible, symlinked, non-directory, and unreadable sources are rejected: libkrun does not follow a final symlink, and on macOS it panics during guest boot when it cannot open the share root. The driver generates virtiofs tags and always writes a guest-side manifest into the overlay disk, together with the init drop-ins, so an image-supplied manifest can never drive guest mounts. The launcher parses its tab-separated --vm-mount arguments from the right, so a source can never shift the tag or mode, and the driver logs each shared directory at launch. Guest init mounts the shares after every /sandbox ownership fixup and the init drop-ins, so recursive chowns never reach host files. It refuses targets that traverse symlinks in the image, hands newly created mount point parents under /sandbox to the sandbox user, and skips an empty manifest. krun_add_virtiofs4 is resolved optionally, so older libkrun runtimes still boot sandboxes without mounts. The kernel config lists CONFIG_FUSE_FS and CONFIG_VIRTIO_FS explicitly; the pinned libkrunfw base config already enables both. A vm_bind_mount e2e test checks a read-write share round-trips data with the host, accepts a new file, directory, and nested file that the host then sees, and that a read-only share rejects writes. libkrun on rootless Linux refuses file creation by a guest user whose UID/GID differ from its own, so the VM e2e gateway runs the sandbox as the gateway user there. It enables bind mounts like the Docker and Podman e2e gateways. The runtimes docs cover the mount limit, the symlink restriction, the guest-kernel exposure, and the rootless Linux UID/GID note. The debug-openshell-cluster skill lists VM bind mount checks. Signed-off-by: Florent Benoit <fbenoit@redhat.com> * fix(nix): refresh vm-runtime hashes to the libkrun v1.19.4 runtime The Nix vm-runtime package fetches the rolling vm-runtime release with fixed hashes pinned on 2026-09-16. The release was rebuilt on 2026-09-21 after the libkrun v1.19.4 / libkrunfw v5.6.1 bump (NVIDIA#3451), but the hashes were not updated, so CI kept substituting the 2026-09-15 runtime (libkrun v1.17.4) from the binary cache. That libkrun lacks krun_add_virtiofs4, which VM bind mounts need. Point the hashes at the current release assets. Signed-off-by: Florent Benoit <fbenoit@redhat.com> --------- Signed-off-by: Florent Benoit <fbenoit@redhat.com>
…IDIA#4632) Requests the gateway rejects before consulting any authenticator now emit an OCSF Authentication [3002] event: no credential presented, mTLS required without a client certificate, or an operator certificate combined with an authorization header. Each event carries a reason category in status_detail and never the presented credential. The response returned to the caller is unchanged. openshell-ocsf gains the Authentication class with user and service objects, and a shared OcsfCapture test layer. Schema validation now rejects attributes the class does not define and profile attributes whose profile the event does not declare. Refs NVIDIA#2912 Signed-off-by: Kris Hicks <khicks@nvidia.com>
…on (NVIDIA#4524) The endpoint-status startup sweep ran before the gateway installed its Prometheus recorder, so the lock waits, timeouts, errors and hold times it recorded went to the no-op recorder and only its warnings reached the log. The sweep retries lock timeouts for up to three lock waits before startup fails, and a slow sweep that still succeeds is what operators want to see in the lock metrics. When metrics are enabled, the recorder is now installed before startup reconciliation, and the metrics listener still binds with the other listeners. A new pod's first scrape therefore already holds the sweep's samples, so they show in the raw counter and histogram count values, not in rate() or increase(). A sweep that fails still exits before any listener binds, so its timeouts remain log-only. The startup lock-timeout test now waits for the sweep's timeout counter instead of a fixed sleep and checks its timeout and wait samples, and the debug skill says which startup timeouts reach the metrics and how to read them. Part of NVIDIA#4307 Closes NVIDIA#4523 Signed-off-by: Emilien Macchi <emacchi@redhat.com>
* feat(cli): add --annotation to sandbox create Signed-off-by: Eric Curtin <eric.curtin@docker.com> * fix(cli): drop reserved annotation check Signed-off-by: Eric Curtin <eric.curtin@docker.com> * test(cli): adapt annotation tests to env helper Signed-off-by: Eric Curtin <eric.curtin@docker.com> --------- Signed-off-by: Eric Curtin <eric.curtin@docker.com> Signed-off-by: John Myers <9696606+johntmyers@users.noreply.github.com> Co-authored-by: John Myers <9696606+johntmyers@users.noreply.github.com>
…er (NVIDIA#4424) * fix(ci): make conformance-only e2e selection explicit Signed-off-by: Evan Lezar <elezar@nvidia.com> * fix(ci): use mapped NodePort for kind gateway sessions Signed-off-by: Evan Lezar <elezar@nvidia.com> * fix(ci): waive SSH transport recovery only on Kubernetes Signed-off-by: Evan Lezar <elezar@nvidia.com> * fix(e2e): log a notice when runners skip Rust e2e tests Emit a GitHub Actions notice from the Docker, Podman, Kubernetes, and VM runners when e2e-conformance-only skips the Rust tests, so a narrowed lane is visible in the job summary instead of silently reporting success. Signed-off-by: Matthew Grossman <mgrossman@nvidia.com> * docs(testing): move e2e conformance-only selector to shared section The selector applies to all four driver runners, so document it with the Rust CLI e2e suites instead of under the Kubernetes task variants. Signed-off-by: Matthew Grossman <mgrossman@nvidia.com> --------- Signed-off-by: Evan Lezar <elezar@nvidia.com> Signed-off-by: Matthew Grossman <mgrossman@nvidia.com> Co-authored-by: Matthew Grossman <mgrossman@nvidia.com>
…teway traits (NVIDIA#4619) * perf(server): drop async_trait from mutation replay Mutation is never used as a trait object, so the boxed futures from #[tonic::async_trait] buy nothing. Declare its methods as -> impl Future + Send instead. This keeps the Send guarantee, removes a heap allocation per call, and cuts a cold openshell-server lib build from ~60s to ~36s. Box the approve_all_draft_chunks future at its call sites, since it is no longer boxed implicitly and trips clippy::large_futures. Closes NVIDIA#4618 Signed-off-by: Matthew Grossman <mgrossman@nvidia.com> * perf(supervisor): drop async_trait from generic-only gateway traits StartupGateway, PolicyGatewayClient, and ReportClient are only used through generic parameters, never as trait objects. Declare their methods as -> impl Future + Send instead of boxing each future. Signed-off-by: Matthew Grossman <mgrossman@nvidia.com> --------- Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
…3898) * feat(isolation): publish backend protocol contracts independently of runtime Signed-off-by: Drew Newberry <anewberry@nvidia.com> * feat(isolation): expose trusted launch and registry data contracts Signed-off-by: Drew Newberry <anewberry@nvidia.com> * refactor(isolation): name the required capability sandbox Signed-off-by: Drew Newberry <anewberry@nvidia.com> * refactor(sandbox): align protocol and compute capability names Signed-off-by: Drew Newberry <anewberry@nvidia.com> * refactor(sandbox): finalize public protocol contract names Signed-off-by: Drew Newberry <anewberry@nvidia.com> * feat(isolation)!: activate backend contracts in sandbox runtime and driver selection Signed-off-by: Drew Newberry <anewberry@nvidia.com> * refactor(sandbox): simplify runtime and fix backend example Signed-off-by: Drew Newberry <anewberry@nvidia.com> * refactor(examples): organize WASI backend in Rust Signed-off-by: Drew Newberry <anewberry@nvidia.com> * refactor(sandbox): defer protocol conformance fixtures Signed-off-by: Drew Newberry <anewberry@nvidia.com> * feat(examples): add supervised V8 backend demo Signed-off-by: Drew Newberry <anewberry@nvidia.com> * fix(examples): stream V8 guest output with default policy Signed-off-by: Drew Newberry <anewberry@nvidia.com> * fix(examples): handle V8 rejections and roll back failed launches Signed-off-by: Drew Newberry <anewberry@nvidia.com> * fix(examples): align V8 crypto dependencies with CI AWS-LC Signed-off-by: Drew Newberry <anewberry@nvidia.com> * feat(sandbox): represent Sandbox Protocol operations in protobuf Signed-off-by: Drew Newberry <anewberry@nvidia.com> * refactor(isolation): replace backend traits with RPC clients Signed-off-by: Drew Newberry <anewberry@nvidia.com> * refactor(proto): remove legacy isolation protocol reservations Signed-off-by: Drew Newberry <anewberry@nvidia.com> * refactor(proto): clarify Sandbox Protocol names Signed-off-by: Drew Newberry <anewberry@nvidia.com> * docs(isolation): clarify authentication bootstrap and supervisor APIs Signed-off-by: Drew Newberry <anewberry@nvidia.com> * refactor(isolation): simplify policy enforcement confirmation Signed-off-by: Drew Newberry <anewberry@nvidia.com> * fix(sandbox): rotate launch generations and stabilize retry sessions Signed-off-by: Drew Newberry <anewberry@nvidia.com> * refactor(sandbox): remove redundant backend adapters and TCP flags Signed-off-by: Drew Newberry <anewberry@nvidia.com> * fix(sandbox): repair Docker restarts and macOS lint Signed-off-by: Drew Newberry <anewberry@nvidia.com> * refactor(isolation): simplify RPC contracts and backend registration Signed-off-by: Drew Newberry <anewberry@nvidia.com> * fix(sandbox): deliver TCP denials before closing the RPC Signed-off-by: Drew Newberry <anewberry@nvidia.com> --------- Signed-off-by: Drew Newberry <anewberry@nvidia.com>
…vents (NVIDIA#4655) Authenticators now return the mechanism and a reason category with the status they reject a request with, and the gateway router records both in the Authentication event. Callers still receive the original status. Refs NVIDIA#2912 Signed-off-by: Kris Hicks <khicks@nvidia.com>
…#4660) * fix(agents): validate sandbox names before Gator launch setup Signed-off-by: Taylor Mutch <taylormutch@gmail.com> * chore(agents): remove standalone launcher test script Signed-off-by: Taylor Mutch <taylormutch@gmail.com> --------- Signed-off-by: Taylor Mutch <taylormutch@gmail.com>
…on (NVIDIA#4320) Supervisors poll the gateway for configuration every 10 seconds. This PR adds an opt-in push mode (config_delivery_mode = "push"): supervisors still start by polling, and once their ConnectSupervisor session is accepted, the gateway delivers every later change over it and supervisors apply it and report the result. poll stays the default, and older supervisors and gateways keep polling. --------- Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com> Signed-off-by: divesh <dgude@nvidia.com> Co-authored-by: divesh <dgude@nvidia.com>
Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>
…ts (NVIDIA#4673) Authentication events now carry the connection's immediate peer as src_endpoint, or edge-tunnel for WebSocket-tunneled requests, and the request's x-request-id as metadata.correlation_uid when it is a UUID. Refs NVIDIA#2912 Signed-off-by: Kris Hicks <khicks@nvidia.com>
OCSF 1.8 requires type_id on the os object, but device.os carried only a name. Events now report Linux (200), Windows (100), macOS (300), or Other (99) with the platform name as the type label. The os object schema is vendored so tests validate it. Refs NVIDIA#2912 Signed-off-by: Kris Hicks <khicks@nvidia.com>
Closes NVIDIA#4253 Signed-off-by: Eric Curtin <eric.curtin@docker.com>
* fix(tmachine): link libstdc++ statically and verify static musl binaries On macOS hosts, the aarch64 musl openshell-prover that build-artifacts-binaries produced was not static. z3-sys asks for a dynamic libstdc++ (-Wl,-Bdynamic -lstdc++), and the musl cross compiler wrapper resolved libstdc++.so. The result was a static executable with a DT_NEEDED entry for libstdc++.so.6 and no interpreter, which crashed during C++ static initialization. The local Debian package from NVIDIA#4598 ships this prover without running it. Build the musl binaries with CXXSTDLIB=static:-bundle=stdc++ so z3-sys requests a static libstdc++. CXXSTDLIB applies to every target and Darwin has no libstdc++, so set it only on this musl build rather than in the shared toolchain environment. The bundled form, static=stdc++, fails because rustc cannot find libstdc++.a on its own search path. Run tasks/scripts/verify-static-binary.sh on the musl CLI, sandbox and prover, as the release does, so a binary that is not fully static fails the local build. Signed-off-by: Evan Lezar <elezar@nvidia.com> * feat(tmachine): build local RPM artifacts Add build-artifacts-rpm, which builds the CLI and gateway RPMs that tmachine's rpm installer expects at artifacts/packages/rpm/openshell.rpm and artifacts/packages/rpm/openshell-gateway.rpm. It runs `packit build locally` with openshell.spec in the Fedora 44 image that build-rpm.yml uses, for the host's Linux architecture, and packages the binaries staged by build-artifacts-binaries. The package version defaults to the development version that branch E2E CI computes. The aggregate build-artifacts app runs the RPM step after the DEB step. Signed-off-by: Evan Lezar <elezar@nvidia.com> --------- Signed-off-by: Evan Lezar <elezar@nvidia.com>
* ci(release): promote qualified prereleases to stable Signed-off-by: Simon Scatton <sscatton@nvidia.com> * fix(release): preserve qualified images during stable publication Signed-off-by: Simon Scatton <sscatton@nvidia.com> * ci(release): run shared release jobs with Nix Signed-off-by: Simon Scatton <sscatton@nvidia.com> * fix(release): recheck latest before publishing shared channels Signed-off-by: Simon Scatton <sscatton@nvidia.com> --------- Signed-off-by: Simon Scatton <sscatton@nvidia.com>
Signed-off-by: Simon Scatton <sscatton@nvidia.com>
Reverts ac7f615 after successful v0.1.6 publication. Signed-off-by: Taylor Mutch <taylormutch@gmail.com>
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: 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: 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: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com> Co-authored-by: red-hat-konflux[bot] <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Signed-off-by: Adrien Langou <alangou@nvidia.com>
…5030) * fix(deps): resolve RustSec advisories and restore cargo-deny Signed-off-by: Adrien Langou <alangou@nvidia.com> * chore(deps): use zstd 0.14 requirement Signed-off-by: Adrien Langou <alangou@nvidia.com> --------- Signed-off-by: Adrien Langou <alangou@nvidia.com>
…NVIDIA#4852) * feat(sdk): route Go SDK exec and forward to the sandbox owner replica The Go SDK now does what the CLI already does for long-lived sandbox calls. The GetSandbox check that Exec.Run, Exec.Stream, Exec.Interactive, TCP.Forward and SSH.Tunnel already make also asks the gateway for the owner replica. The call then sends it in the x-openshell-replica header and retries once without the header when the edge proxy reports that the owner's route has no ready endpoints. No extra round trip is added. Without a reported owner the calls are unchanged. Part of NVIDIA#4223 Signed-off-by: divesh <dgude@nvidia.com> * refactor(sdk): address Go replica routing review Share the header check between the routed attempt and its retry, keep the first-frame EOF rule in one bidi helper, reuse Get's request for the owner lookup, and document the header contract next to the replica routing docs. Part of NVIDIA#4223 Signed-off-by: divesh <dgude@nvidia.com> * docs(kubernetes): refer to the SDKs collectively in replica routing Part of NVIDIA#4223 Signed-off-by: divesh <dgude@nvidia.com> --------- Signed-off-by: divesh <dgude@nvidia.com>
…d-odh-image fix(rhoai): install the ODH images and pass the dashboard user role
…3-followups CARRY: feat(odh): pin runtime images by digest and add Renovate coverage
* fix(supervisor): batch buffered log replay after reconnect Signed-off-by: divesh <dgude@nvidia.com> * fix(gateway): accept the full reconnect log buffer Signed-off-by: divesh <dgude@nvidia.com> * fix(logging): batch reconnect replay and warn on truncation Signed-off-by: divesh <dgude@nvidia.com> --------- Signed-off-by: divesh <dgude@nvidia.com>
…gest to 5f08e80 Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>
…tmaker/main/registry.access.redhat.com-ubi9-ubi-9.8 chore(deps): update registry.access.redhat.com/ubi9/ubi:9.8 docker digest to 5f08e80
Signed-off-by: Bobbins228 <mcampbel@redhat.com>
Move ubi-minimal, ubi-micro and nodejs-24-minimal to current digests so runtime images ship ca-certificates 2026.2.92_v9.0.319 and Node 24.22.1, which distrust the compromised eMudhra intermediates. Signed-off-by: Andre Lustosa <alustosa@redhat.com>
…udhra-ca/andre-motta CARRY: fix(konflux): bump UBI 9.8 bases for eMudhra CA distrust
…obs (NVIDIA#5036) Remove the OCSF schema downgrade. OpenShell now writes native OCSF 1.8.0 records to supervisor JSONL and stderr, gateway JSONL, and OTLP log export regardless of configuration. The downgrade did not produce valid records: events it labelled 1.1 or 1.3 failed validation against those versions, because OpenShell's emitters rely on requirements that only 1.8 relaxed (NVIDIA#4284). It was also not shown to be required by any SIEM: of ten sinks and pipelines tested with real OpenShell records, none rejected native 1.8.0 or gated on metadata.version. The version knobs stay accepted so existing configuration still loads, but they are deprecated and ignored: - The ocsf_schema_version sandbox setting accepts any value; the supervisor reports a newly set value as a Device Config State Change event. - schema_version under [openshell.gateway.ocsf_log] and [openshell.gateway.otlp.ocsf], and the server.ocsfLog.schemaVersion Helm value, accept any value; the gateway logs a warning at startup. - The compute drivers' OPENSHELL_OTLP_OCSF_SCHEMA_VERSION flag and environment variable are hidden and ignored, with a warning, and are no longer forwarded to sandboxes. BREAKING CHANGE: Deployments that set an OCSF schema version now receive native OCSF 1.8.0 records instead of records labelled 1.1 or 1.3. Closes NVIDIA#4284 Signed-off-by: Kris Hicks <khicks@nvidia.com>
Signed-off-by: Bobbins228 <mcampbel@redhat.com>
…nvidia-main/Bobbins228 chore(sync): merge NVIDIA OpenShell main into ODH
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automated Sync from main to stable
This PR automatically syncs the
mainbranch to thestablebranch by opening a pull request frommainintostable.Sync Summary
Latest commit:
743d2977Merge remote-tracking branch 'upstream/main'Total commits to sync: 328
Source:
https://github.com/red-hat-data-services/OpenShell.git@mainTarget:
https://github.com/red-hat-data-services/OpenShell.git@stablePR head:
mainCommits to be synced
743d2977Merge remote-tracking branch 'upstream/main'28dd567aMerge pull request chore(sync): merge NVIDIA OpenShell main into ODH opendatahub-io/openshell#145 from opendatahub-io/chore/sync-nvidia-main/Bobbins2282b7cc77fchore(sync): merge latest NVIDIA OpenShell mainc6bb55daMerge remote-tracking branch 'upstream/main'0e96e8e8feat(ocsf)!: emit OCSF 1.8.0 only and deprecate the schema version knobs (feat(ocsf)!: emit OCSF 1.8.0 only and deprecate the schema version knobs NVIDIA/OpenShell#5036)bb956578Merge pull request CARRY: fix(konflux): bump UBI 9.8 bases for eMudhra CA distrust opendatahub-io/openshell#146 from opendatahub-io/fix/ubi9-emudhra-ca/andre-motta187f940bCARRY: fix(konflux): bump UBI 9.8 bases for eMudhra CA distrustd1500c06Merge remote-tracking branch 'upstream/main'4a8ba9bdchore(sync): merge NVIDIA OpenShell main into ODH07a880f7Merge pull request chore(deps): update registry.access.redhat.com/ubi9/ubi:9.8 docker digest to 5f08e80 opendatahub-io/openshell#142 from opendatahub-io/konflux/mintmaker/main/registry.access.redhat.com-ubi9-ubi-9.85550a3eechore(deps): refresh rpm lockfiles [SECURITY]4f068860chore(deps): update registry.access.redhat.com/ubi9/ubi:9.8 docker digest to 5f08e803a5dfcd2fix(gateway): accept the full reconnect log buffer (fix(gateway): accept the full reconnect log buffer NVIDIA/OpenShell#5049)b705f433Merge remote-tracking branch 'upstream/main'e999bd03Merge pull request CARRY: feat(odh): pin runtime images by digest and add Renovate coverage opendatahub-io/openshell#112 from opendatahub-io/rhaieng-7753-followups6595765aMerge pull request fix(rhoai): install the ODH images and pass the dashboard user role opendatahub-io/openshell#121 from Gkrumbach07/rhoai-dashboard-odh-imagecc999543feat(sdk): route Go SDK exec and forward to the sandbox owner replica (feat(sdk): route Go SDK exec and forward to the sandbox owner replica NVIDIA/OpenShell#4852)077d4313fix(deps): resolve RustSec advisories and restore cargo-deny (fix(deps): resolve RustSec advisories and restore cargo-deny NVIDIA/OpenShell#5030)5e1d05e5Merge remote-tracking branch 'upstream/main'4d4c15c1fix(deps): upgrade zip through z3 0.22 (fix(deps): upgrade zip through z3 0.22 NVIDIA/OpenShell#5026)c0796165chore(deps): refresh rpm lockfiles [SECURITY] (chore(deps): refresh rpm lockfiles [SECURITY] opendatahub-io/openshell#139)eca2eb99chore(deps): refresh rpm lockfiles [SECURITY] (chore(deps): refresh rpm lockfiles [SECURITY] #58)ce0634efMerge remote-tracking branch 'upstream/main'69c99aa5chore(deps): refresh rpm lockfiles (chore(deps): refresh rpm lockfiles #57)5712061cchore(deps): refresh rpm lockfiles [SECURITY] (chore(deps): refresh rpm lockfiles [SECURITY] #56)d4e32263revert(ci): remove temporary v0.1.6 protobuf exception (revert(ci): remove temporary v0.1.6 protobuf exception NVIDIA/OpenShell#4978)a9538dd9chore(deps): refresh rpm lockfiles (chore(deps): refresh rpm lockfiles opendatahub-io/openshell#140)af6604a6feat(ocsf): validate OCSF events against exported JSON Schemas (feat(ocsf): validate OCSF events against exported JSON Schemas NVIDIA/OpenShell#5019)f88b5819fix(ocsf): address follow-ups from the fix(ocsf): emit schema-conformant OCSF 1.8 events NVIDIA/OpenShell#4288 review (fix(ocsf): address follow-ups from the #4288 review NVIDIA/OpenShell#5020)677875fdfix(build): restore Windows lint and trim the image build context (fix(build): restore Windows lint and trim the image build context NVIDIA/OpenShell#5021)2fb8d78afix(ci): keep Release Dev publishing when the snap upload or a Go tag breaks it (fix(ci): keep Release Dev publishing when the snap upload or a Go tag breaks it NVIDIA/OpenShell#5018)c5850d75feat(sdk): route Rust SDK exec to the sandbox owner replica (feat(sdk): route Rust SDK exec to the sandbox owner replica NVIDIA/OpenShell#4790)def7da87fix(ocsf): emit schema-conformant OCSF 1.8 events (fix(ocsf): emit schema-conformant OCSF 1.8 events NVIDIA/OpenShell#4288)6188420echore(deps): bump rustls (chore(deps): bump rustls from 0.23.45 to 0.23.46 in /examples/supervisor-middleware-content-guard NVIDIA/OpenShell#4998)ff1f8ff5fix(network): align destination checks for direct connections (fix(network): align destination checks for direct connections NVIDIA/OpenShell#5004)33138516feat(tests): add the tmachine Session API and run a conformance smoke test on tmachine (feat(tests): add the tmachine Session API and run a conformance smoke test on tmachine NVIDIA/OpenShell#4773)21be3493fix(e2e): make shared supervisor harness work with gateway TLS (fix(e2e): make shared supervisor harness work with gateway TLS NVIDIA/OpenShell#4984)8f469b10fix(odh): avoid redundant aggregate task wiring15c8dcf5fix(odh): cover generic fetcher retries9f1cdb4echore(deps): bump rustls in /tests/suites/features (chore(deps): bump rustls from 0.23.45 to 0.23.46 in /tests/suites/features NVIDIA/OpenShell#4994)eb1a3287Merge remote-tracking branch 'upstream/main'fdce6ef2feat(supervisor): relay agent OTLP traces to the collector (feat(supervisor): relay agent OTLP traces to the collector NVIDIA/OpenShell#4276)a137abbfdocs(gateway): list every cause of the Podman gateway --tls-cert error (docs(gateway): list every cause of the Podman gateway --tls-cert error NVIDIA/OpenShell#5001)3e4aa153Merge remote-tracking branch 'upstream/main'6be20e17Merge remote-tracking branch 'upstream/main'e0efd4dfchore(deps): bump rustls in /examples/governance-interceptor (chore(deps): bump rustls from 0.23.45 to 0.23.46 in /examples/governance-interceptor NVIDIA/OpenShell#4997)53527f3fchore(deps): bump rustls from 0.23.45 to 0.23.46 in /e2e/rust (chore(deps): bump rustls from 0.23.45 to 0.23.46 in /e2e/rust NVIDIA/OpenShell#4996)cbaaffa1Merge remote-tracking branch 'upstream/main'e24bacb5Merge remote-tracking branch 'upstream/main'5cf73159Merge pull request Fix/sync upstream main/2000krysztof opendatahub-io/openshell#138 from 2000krysztof/fix/sync-upstream-main/2000krysztoffaa37159fix(rhoai): warn for prerelease dashboard chartsf72156ebfix(rhoai): address installer image review feedback0b4a382fMerge remote-tracking branch 'upstream/main'ee63d399CARRY: feat(odh): pin runtime images by digest and add Renovate coverage4ff8028dCARRY: fix(odh): isolate nextest configuration from upstream40279c86chore(deps): refresh rpm lockfiles [SECURITY] (chore(deps): refresh rpm lockfiles [SECURITY] opendatahub-io/openshell#136)af1ddd9achore(deps): refresh rpm lockfiles (chore(deps): refresh rpm lockfiles opendatahub-io/openshell#137)0f3e4eafAdd disconnected readiness workflowadb32306chore(deps): refresh rpm lockfiles [SECURITY] (chore(deps): refresh rpm lockfiles [SECURITY] #54)44ef984bfix(supervisor): guard shared supervisor pool configuration (fix(supervisor): guard shared supervisor pool configuration NVIDIA/OpenShell#4988)9b1ffd3dfix(supervisor): report why the pool could not place a sandbox (fix(supervisor): report why the pool could not place a sandbox NVIDIA/OpenShell#4985)8e63ff20chore(deps): refresh rpm lockfiles (chore(deps): refresh rpm lockfiles #53)92adbbe2chore(deps): refresh rpm lockfiles [SECURITY] (chore(deps): refresh rpm lockfiles [SECURITY] #52)3a512d23ci(release): allow release publishers to be dispatched individually (ci(release): allow release publishers to be dispatched individually NVIDIA/OpenShell#4987)fa2d381edocs(gateway): make the Podman container gateway example work (docs(gateway): make the Podman container gateway example work NVIDIA/OpenShell#4977)2c31ac7efeat(network): support additional destination CAs (feat(network): support additional destination CAs NVIDIA/OpenShell#3292)26134dc7feat(gateway): add hashed service-routing hostnames for multi-gateway clusters (feat(gateway): add hashed service-routing hostnames for multi-gateway clusters NVIDIA/OpenShell#4842)ac7f615cfix(ci): allow accepted protobuf breaks for v0.1.6 prereleases (fix(ci): allow accepted protobuf breaks for v0.1.6 prereleases NVIDIA/OpenShell#4976)dedb089ffix(deps): update setuptools and vitest to patched releases (fix(deps): update setuptools and vitest to patched releases NVIDIA/OpenShell#4969)37fe66d2fix(rhoai): validate configured image digestsbd2ecaf1docs(skills): add structured security advisory authoring (docs(skills): add structured security advisory authoring NVIDIA/OpenShell#4872)860ac271docs(security): add private reporting and advisory workflows (docs(security): add private reporting and advisory workflows NVIDIA/OpenShell#4832)f558da67fix(ci): add exceptions for zstd advisories (fix(ci): add exceptions for zstd advisories NVIDIA/OpenShell#4973)2e1e2c50chore(ci): extend issue stale window and exempt roadmap issues (chore(ci): extend issue stale window and exempt roadmap issues NVIDIA/OpenShell#4962)7454d4caMerge remote-tracking branch 'upstream/main'7d48bd05chore(deps): refresh rpm lockfiles [SECURITY] (chore(deps): refresh rpm lockfiles [SECURITY] #50)bf8f013fchore(deps): refresh rpm lockfiles [SECURITY] (chore(deps): refresh rpm lockfiles [SECURITY] opendatahub-io/openshell#132)6b705c69chore(deps): refresh rpm lockfiles (chore(deps): refresh rpm lockfiles opendatahub-io/openshell#133)a17a4295chore(deps): update registry.access.redhat.com/ubi9/nodejs-24-minimal docker tag to v9.8-1793088151 (chore(deps): update registry.access.redhat.com/ubi9/nodejs-24-minimal docker tag to v9.8-1793088151 opendatahub-io/openshell#134)f0675834Merge remote-tracking branch 'upstream/main'e5adf6f4feat(supervisor): recover shared instances with hash-based HA (feat(supervisor): recover shared instances with hash-based HA NVIDIA/OpenShell#4864)8b2f529aMerge remote-tracking branch 'upstream/main'8730ce53Merge remote-tracking branch 'upstream/main'f07127e5feat(sandbox): add suspend and resume lifecycle (feat(sandbox): add suspend and resume lifecycle NVIDIA/OpenShell#4765)7b0f8ae0fix(gateway): require authentication or explicit development opt-in (fix(gateway): require authentication or explicit development opt-in NVIDIA/OpenShell#4821)c8d318f8Merge remote-tracking branch 'upstream/main'0d4725b1Merge remote-tracking branch 'upstream/main'17eda52ddocs(windows): route main documentation to the Windows release branch (docs(windows): route main documentation to the Windows release branch NVIDIA/OpenShell#4758)f5d9223efeat(supervisor): let operators require specific middleware bindings (feat(supervisor): let operators require specific middleware bindings NVIDIA/OpenShell#4678)5c533d6fdocs: document local Nix setup and the OpenShell binary cache (docs: document local Nix setup and the OpenShell binary cache NVIDIA/OpenShell#4931)4cf8f7c0Merge remote-tracking branch 'upstream/main'58873a26Merge remote-tracking branch 'upstream/main'd0a163a4docs(rfc): add RFC 0018 for multi-sandbox and HA supervisors (docs(rfc): add RFC 0018 for multi-sandbox and HA supervisors NVIDIA/OpenShell#4377)2ff59bf3feat(agents): allow gator to reach GHSA private forks (feat(agents): allow gator to reach GHSA private forks NVIDIA/OpenShell#4893)435341cdMerge remote-tracking branch 'upstream/main'fc1e06ceMerge remote-tracking branch 'upstream/main'cc14afccfix(ci): exempt Dependabot PRs from issue acceptance (fix(ci): exempt Dependabot PRs from issue acceptance NVIDIA/OpenShell#4928)9c6c2520fix(deps): update tokio and crypto-bigint security patches (fix(deps): update tokio and crypto-bigint security patches NVIDIA/OpenShell#4924)37b73027chore(ci): update rust-cache to include upstream fixes (chore(ci): update rust-cache to include upstream fixes NVIDIA/OpenShell#4748)90d8b46bMerge remote-tracking branch 'upstream/main'Merging
GitHub automerge is enabled for this pull request once required checks pass.