Skip to main content

Test a protection group

POST 

/v1/protection-groups/:id/test

Proves that the group could be recovered here, in the region that holds its standby copy, without touching the group, its project or the workload at home. Under a test policy, the run builds an isolated network in the policy's operator project and proves it has no way out: no router, gateway or name servers, and, from a jump host inside it, none of the policy's isolation canaries reachable. It then restores copies of the members from their newest backups adopted here, or clones their standbys, onto that network, boots them tier by tier in boot order, and checks each tier's health from the jump host before the next. The time from admission to the last member healthy is the run's measured.rto_seconds, which the group's measured protection reports. The result is recorded in the repository for the group's home to read, and everything the test built is torn down; what it built also expires at the policy's max_duration even if the run is gone. The group is testing while the run is active and returns to the state it was in when it ends; its custody never changes.

With dry_run=true the request answers 200 with the plan the run would follow and starts nothing. Otherwise it answers 202 with the admitted run; follow it at GET /v1/protection-groups/{id}/runs/{run_id}. Everything that would refuse the run is checked before it is admitted, and again by the run itself before it acts. A refusal about members names each in fields as members.<instance id>. A registration with a test cadence is also tested on its own when a test falls due.

A test of a group at its home and of the hot rung are refused in this release.

Any member of the project the token is scoped to.

Request​

Responses​

OK.

With dry_run=true, the plan the run would follow. Nothing was started.