diff options
| author | Stefan Boberg <[email protected]> | 2026-04-01 22:49:40 +0200 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2026-04-01 22:49:40 +0200 |
| commit | 534349504e74f095dad042b4fcde9779f6f872b0 (patch) | |
| tree | 6381a4404914072bc052bb2a957969b0c59366c2 /src/zenhttp/httpserver.cpp | |
| parent | Fix lock ordering deadlock in GetQueueCompleted (diff) | |
| download | zen-534349504e74f095dad042b4fcde9779f6f872b0.tar.xz zen-534349504e74f095dad042b4fcde9779f6f872b0.zip | |
Add provisioner target control and graceful agent deprovisioning
- Add IProvisionerStateProvider interface for decoupling orchestrator
HTTP layer from provisioner implementations
- HordeProvisioner implements the interface directly, exposing target,
active, estimated core counts and per-agent provisioning status
- Add orchestrator dashboard provisioner panel with editable target
core count, active/estimated/agents/draining metric tiles
- Add per-agent status badges in agents table (active/draining/deallocated)
with dimming for non-provisioned or deallocated workers
- Add GET/POST /orch/provisioner/status and /orch/provisioner/target
endpoints; include provisioner stats in WebSocket push
- Add session lifecycle HTTP endpoints on compute nodes:
GET /compute/session/status, POST /compute/session/drain,
POST /compute/session/sunset (with shutdown callback)
- Implement graceful deprovisioning in HordeProvisioner:
- Best-fit agent selection: largest agent that fits the remaining
excess, breaking ties by workload (least busy first)
- Never deprovision below target core count
- Drain via HTTP: signal drain, poll status, send sunset on completion
- Configurable grace period (--horde-drain-grace-period, default 300s)
- Anti-oscillation: scale-up requires full agent-sized gap below target;
estimated cores adjusted at drain-mark time, not agent-exit time
- Fix JSON-to-CbObject number parsing: integral JSON numbers are now
stored as integers instead of Float64 so AsInt32/AsInt64 work
- Add effective URL to curl HTTP client error logging
- Add WorkerAnnotator callback to OrchestratorService::GetWorkerList
for per-worker provisioner status injection
- Remove standalone compute/orchestrator.html and compute/compute.html;
redirect /dashboard/compute/ to SPA
Diffstat (limited to 'src/zenhttp/httpserver.cpp')
0 files changed, 0 insertions, 0 deletions