Create a protection group
POST/v1/protection-groups
Groups servers that recover together at a disaster recovery site, under the protection policy whose recovery section is their promise. Each member has a boot order and an optional health check that must pass before the next tier boots, and each must already be protected by a plan under that policy. network_map says where members land in a recovery; a test lands every member on the isolated network its test policy builds. Where the group recovers to, at which rung, how far behind and how fast are the policy's, never the group's. A new group runs here: its role is primary, its custody active and its custody epoch 1. With recovery_of, an operator instead registers the recovery here of a group another region created, as GET /v1/repositories/{id}/inventory?view=groups lists it. The recovery takes its members, custody epoch and source project from the group's newest document, starts with custody standby and state unprotected, and binds every member to target_project_id, with a standby target when the group is warm. A member already bound to that project is left on its binding; one bound anywhere else refuses the registration. Later versions of the document are followed: a member added at home is bound here, and one removed at home leaves the group and keeps its binding.
Any member of the project the token is scoped to.
Request
Responses
- 201
- 400
- 401
- 403
- 404
- 409
- 413
- 415
- 422
- 503
- default
Created
Bad Request.
invalid_request: The body is not a single JSON object, names a field this operation does not take, or gives a value of the wrong type.
Unauthorized.
unauthenticated: The token is missing, expired or not valid.
Forbidden.
forbidden: The token's roles do not allow creating protection groups in its project, or the request names recovery_of or mapping_profile_id and the token is not a system-scoped admin token.
Not Found.
group_document_not_found: No document for recovery_of.group_uid has been read from recovery_of.repository_id.
Conflict.
key_manager_missing: The group's document is in an encrypted dedup domain of the repository, and this cloud runs without a key manager, so it can never read it. detail names the domain and the cloud that wrote it.
domain_key_missing: The group's document is in a dedup domain of the repository that this cloud holds no key for. detail names the domain to import.
conflict: The project already has a group with this name. Or the group is already held here, or was created by this cloud. Or the target project exists here but is disabled, or does not exist.
binding_conflict: A member of the group being registered is bound to another project here, or to the target project without the standby a warm group needs.
tier_unavailable: recovery_of.repository_id names an RBD tier, which holds no group documents.
Request Entity Too Large.
body_too_large: The body is larger than the service accepts.
Unsupported Media Type.
unsupported_media_type: The body is not sent as application/json.
Unprocessable Entity.
validation_failed: name is missing. policy_id is missing, is not a UUID, or names no policy this project may use. There are no members, or a member has no instance_id or appears twice. A health check has an unknown type, is tcp or http without a port from 1 to 65535, has a timeout under one second, or has negative retries, or its timeout is not a duration. A field that belongs to a recovery is sent without recovery_of. An accepted gap is empty, or mapping_profile_id names no recovery profile. With recovery_of: members are sent, target_project_id is missing, a uuid is malformed or names nothing here, origin_cloud disagrees with the document, test_every is not a duration, a warm group is sent without standby.pool, or a group that is not warm is sent with standby.
policy_has_no_recovery: The policy states no recovery section, so a group under it would be promised nothing.
member_not_under_group_policy: A member is protected by no plan, or only by plans under other policies. fields names each such member as members.<instance_id>.
Service Unavailable.
dr_not_enabled: The request names recovery_of and disaster recovery is not enabled here.
An error, as an RFC 7807 problem document.