Skip to content
Proud to collaborate with Microsoft for Startups

runner.pool-rotate ​

Drain every alive runner instance in a warm-pool group + nudge the per-group reconcile workflow so the controller re-launches to the floor on its next tick. Use for AMI rotation / hygiene-config rollout / emergency replacement.

Drain the pool then nudge the controller reconcile workflow to re-provision up to min_warm_idle.

The semantic distinction from pool-drain: this workflow is explicit about the intent to replace. The drain step is identical; the trailing reconcile nudge immediately starts the controller re-launching fresh instances instead of waiting for the next 30s cron tick. Use when rotating to a new AMI / hygiene config / runtime — the old pool drains, the new one starts up in parallel.

Overview ​

PropertyValue
Workflow typeAtomic
LibraryApp-runners
Version1.0

Input Schema ​

FieldTypeRequiredDefaultDescription
runner_group_uuiduuidYes—UUID of the RunnerGroup to drain and rotate, picked from the organization's list of runner groups.
reasonstringNo——
workflow_run_idstringNo—DAG parent run ID (stamped by engine)

Output Schema ​

FieldTypeRequiredDefaultDescription
runner_group_uuiduuidNo—UUID of the RunnerGroup that was drained and rotated, echoed from input on output.
drained_countintegerNo——
drain_errorslistNo——
scale_check_startedbooleanNo——
scale_check_errorstringNo——
outcomestringNo——
statusstringNo——
completed_atstringNo——
failure_reasonstringNo——
failure_typestringNo——
failed_actionstringNo——
failed_at_statestringNo——
failed_stepstringNo——
failed_layerstringNo——
errorstringNo——
error_typestringNo——
reasonstringNo——
workflow_run_idstringNo—DAG parent run ID (stamped by engine)

States ​

StateInitialTerminalSuccessAuto-advanceDescription
pendingYesNo—rotate—
completedNoYesYes——
failedNoYesNo——

State Diagram ​

Transitions ​

FromActionToDescription
pendingrotatecompleted—
* (any state)failfailed—

API Usage ​

bash
POST /api/workflows/start
Content-Type: application/json

{
  "workflow_type": "runner.pool-rotate",
  "initial_data": {
    "runner_group_uuid": "value"
  }
}