Repository navigation
ateapi, atelet: remove sandbox_assets from Run and Restore RPCs - #2879
Merged
Zoe Zhao (zoez7) merged 6 commits intoOct 19, 2026
Merged
Conversation
atelet already resolves the pause image and sandbox binaries for Run and Restore from the request's sandbox_runtime via its advertised-runtime index, so carrying sandbox_assets on RunRequest and RestoreRequest and resolving WorkerPool and SandboxConfig in ate-api-server is redundant. - Remove sandbox_assets from RunRequest and RestoreRequest, delete the SandboxAssets, ArchAssets, and AssetFile messages from atelet.proto, and mark sandbox_runtime required on RunRequest and RestoreRequest. - Delete ate-api-server's SandboxAssets resolution (sandbox_assets.go), drop sandboxConfigLister and workerPoolLister from ActorWorkflow and NewRPCService, and drop sandboxconfigs from ate-api-server's RBAC. - Require a non-nil DefaultRuntime in scheduler.Applies so a worker marked active before reporting its runtime via RegisterWorker is not scheduled with a nil sandbox_runtime. - Remove dead recordFromRequest, ValidateAssetHash, and poolConfigName helpers, using WorkerPool.ResolvedSandboxConfig() in atelet instead.
Shrutiya Mohan (shrutiyam-glitch)
force-pushed
the
asset-cleanup
branch
from
October 19, 2026 15:29
1f407b3 to
9acf159
Compare
Shrutiya Mohan (shrutiyam-glitch)
marked this pull request as ready for review
October 19, 2026 15:30
| verbs: ["get", "watch", "list"] | ||
| - apiGroups: ["ate.dev"] | ||
| resources: ["workerpools"] | ||
| resources: ["workerpools", "csidriverconfigs"] |
Collaborator
There was a problem hiding this comment.
does it still need to watch workerpools?
Collaborator
Author
There was a problem hiding this comment.
ONly the Otel metric is using this to record the workercount.
But this could actually be moved to ate-controller too I think, so ateapi doesn't need to watch workerpool anymore.
Wdyt ?
Collaborator
There was a problem hiding this comment.
could you file an issue to move that to ate-controller as well.
Collaborator
Author
There was a problem hiding this comment.
Zoe Zhao (zoez7)
previously approved these changes
Oct 19, 2026
Zoe Zhao (zoez7)
enabled auto-merge
October 19, 2026 17:53
github-merge-queue
Bot
removed this pull request from the merge queue due to a conflict with the base branch
Oct 19, 2026
Zoe Zhao (zoez7)
enabled auto-merge
October 19, 2026 20:01
Zoe Zhao (zoez7)
previously approved these changes
Oct 19, 2026
github-merge-queue
Bot
removed this pull request from the merge queue due to a conflict with the base branch
Oct 19, 2026
Zoe Zhao (zoez7)
enabled auto-merge
October 19, 2026 20:29
Zoe Zhao (zoez7)
previously approved these changes
Oct 19, 2026
github-merge-queue
Bot
removed this pull request from the merge queue due to a conflict with the base branch
Oct 19, 2026
Zoe Zhao (zoez7)
enabled auto-merge
October 19, 2026 21:41
Zoe Zhao (zoez7)
approved these changes
Oct 19, 2026
2 tasks done
Yufan Su (yufan-su)
pushed a commit
to yufan-su/substrate
that referenced
this pull request
Oct 21, 2026
Follow up after agent-substrate#2879 Removes `sandbox_class` from the `Worker` spec (`ateapipb.Worker`) and reads the worker's sandbox class from `Worker.status.default_runtime.sandbox_class`. Each worker already reports its `default_runtime` (including `sandbox_class`) to `WorkerService.RegisterWorker` via `atelet` alongside its capacity before it can take any actors. Carrying `sandbox_class` on the `Worker` spec required `ate-controller` to copy it from the `WorkerPool` on `CreateWorker` and duplicated what the worker itself reports in `WorkerStatus`. Using `status.default_runtime.sandbox_class` as the single source of truth removes that duplication across `ate-controller`, `ate-api-server`, `fake-workersync`, and `kubectl-ate`. #### Behavior changes - **Class is fixed by the first registration.** `RegisterWorker` records the class from the first report and refuses a later report with a different `default_runtime.sandbox_class` (restorable runtimes must match it too). The pool's declared class no longer cross-checks the worker's report: the pod's shape comes from the pool, and the report is the pod's own authenticated statement. The proto comments on `WorkerStatus.default_runtime` and `RegisterWorkerRequest.default_runtime` document this. - **Before a worker registers it has no class.** `kubectl ate get/top workers` show an empty CLASS for it and `--sandbox-class` filters it out;`ate.workerpool.workers` counts it under `ate.sandbox.class=unknown` (registry note updated). The scheduler never placed on such a worker, and still doesn't:`Applies` rejects an empty class, which also covers the "no default runtime" guard agent-substrate#2879 added, so that guard is folded into the class check. - [x] Tests pass - [x] Appropriate changes to documentation are included in the PR
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.
Completes the removal of
sandbox_assetsfrom theate-api-server->ateletwire protocol following #2780 and #2781. Sinceateletnow resolves the pause image and sandbox binaries forRunandRestoredirectly fromsandbox_runtimevia its advertised-runtime index,ate-api-serverno longer needs to resolveSandboxConfigor sendSandboxAssetsonRunRequestandRestoreRequest.ateletpb& validation: Removesandbox_assetsfromRunRequestandRestoreRequest, deleteSandboxAssets,ArchAssets, andAssetFile, and makesandbox_runtimerequired on both RPCs.cmd/ateapi& RBAC: Deletesandbox_assets.go, removesandboxConfigListerandworkerPoolListerfromActorWorkflowandNewRPCService, dropsandboxconfigsfromate-api-serverRBAC, and require a non-nilDefaultRuntimeinscheduler.Applies.cmd/atelet: Readop.sandboxClassfromsandbox_runtimeinRestore, delete deadrecordFromRequest, and replacepoolConfigNamewithWorkerPool.ResolvedSandboxConfig().Tests pass
Appropriate changes to documentation are included in the PR