Fix rebuild generation reconciliation (Refs #155)
This commit is contained in:
@@ -304,6 +304,27 @@ before continuing eligible interrupted startups. Unknown command results retain
|
||||
their original command ID and occupied slots until the host confirms the outcome.
|
||||
Missing server registrations and later destruction attempts require inspection.
|
||||
|
||||
### Recovering a completed rebuild generation
|
||||
|
||||
A completed rebuild records the replacement generation before EC verifies health.
|
||||
If fresh host inventory disagrees, verification pauses with the controller and
|
||||
host generations in the operation's recovery message.
|
||||
|
||||
For an existing mismatch, open the **completed rebuild's Provisioning detail**
|
||||
(even if that operation was later cancelled), then choose **Reconcile replacement
|
||||
generation**. EC requires a completed command for the original host and immutable
|
||||
instance ID, the command's requested replacement generation, and matching host
|
||||
inventory observed within the last 30 seconds. Wait for that host to reconnect
|
||||
and report fresh inventory if the action is unavailable. A server name alone is
|
||||
not sufficient evidence.
|
||||
|
||||
Reconciliation preserves cancellation and submitted commands. Use **Resume health
|
||||
verification** when offered, or request a new lifecycle operation after resolving
|
||||
any remaining active operation. Fresh health checks, log reads, and new lifecycle
|
||||
commands use the replacement generation. EC requires fresh container and game
|
||||
evidence before reporting the server online. The agent continues to reject stale
|
||||
commands; an admin player-safety override does not bypass generation checks.
|
||||
|
||||
## API
|
||||
|
||||
Collections retain the existing `/api/blueprints` endpoints and `blueprintId` /
|
||||
@@ -351,6 +372,9 @@ there while preserving query parameters.
|
||||
- `GET /api/deployments/:id`: includes `recipe`, `blueprintName`, and
|
||||
`canResumeVerification` and `canRetryWithRebuild` for lifecycle operations.
|
||||
- `POST /api/deployments/:id/resume`: resume eligible creation health checks.
|
||||
- `POST /api/provisioning/:id/reconcile-generation`: reconcile a completed rebuild
|
||||
using fresh inventory from its original host. Returns 409 when identity or
|
||||
completion evidence cannot be validated; repeated application is safe.
|
||||
- `POST /api/provisioning/:id/retry-rebuild`: request a new rebuild for an eligible
|
||||
failed creation and link it from the original operation.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user