.. -*- rst -*-

Consistency groups
==================

Consistency groups enable you to create snapshots at the exact same
point in time from multiple volumes. For example, a database might
place its tables, logs, and configuration on separate volumes. To
restore this database from a previous point in time, it makes sense
to restore the logs, tables, and configuration together from the
exact same point in time.

Use the policy configuration file to grant permissions for these actions
to limit roles.


List consistency groups
~~~~~~~~~~~~~~~~~~~~~~~

.. rest_method::  GET /v2/{project_id}/consistencygroups

Lists consistency groups.

Response codes
--------------

.. rest_status_code:: success ../status.yaml

   - 200

Request
-------

.. rest_parameters:: parameters.yaml

   - project_id: project_id_path
   - all_tenants: all-tenants
   - sort_key: sort_key
   - sort_dir: sort_dir
   - limit: limit
   - marker: marker


Response Parameters
-------------------

.. rest_parameters:: parameters.yaml

   - id: id
   - name: name

Response Example
----------------

.. literalinclude:: ./samples/consistency-groups-list-response.json
   :language: javascript


Create consistency group
~~~~~~~~~~~~~~~~~~~~~~~~

.. rest_method::  POST /v2/{project_id}/consistencygroups

Creates a consistency group.

Response codes
--------------

.. rest_status_code:: success ../status.yaml

   - 202

Request
-------

.. rest_parameters:: parameters.yaml

   - project_id: project_id_path
   - description: description_6
   - availability_zone: availability_zone
   - volume_types: volume_types_2
   - name: name_15

Request Example
---------------

.. literalinclude:: ./samples/consistency-group-create-request.json
   :language: javascript

Response
--------

.. rest_parameters:: parameters.yaml

   - status: status_1
   - description: description_11
   - availability_zone: availability_zone
   - created_at: created_at
   - volume_types: volume_types
   - name: name_15
   - id: consistencygroup_id_1

Response Example
----------------

.. literalinclude:: ./samples/consistency-group-create-response.json
   :language: javascript

Show consistency group details
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. rest_method::  GET /v2/{project_id}/consistencygroups/{consistencygroup_id}

Shows details for a consistency group.

Response codes
--------------

.. rest_status_code:: success ../status.yaml

   - 200

Request
-------

.. rest_parameters:: parameters.yaml

   - project_id: project_id_path
   - consistencygroup_id: consistencygroup_id

Response Parameters
-------------------

.. rest_parameters:: parameters.yaml

   - status: status_1
   - description: description
   - availability_zone: availability_zone
   - created_at: created_at
   - volume_types: volume_types
   - id: id
   - name: name

Response Example
----------------

.. literalinclude:: ./samples/consistency-group-show-response.json
   :language: javascript


Create consistency group from source
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. rest_method::  POST /v2/{project_id}/consistencygroups/create_from_src

Creates a consistency group from source.

Response codes
--------------

.. rest_status_code:: success ../status.yaml

   - 202

Request
-------

.. rest_parameters:: parameters.yaml

   - status: status_1
   - user_id: user_id
   - description: description
   - cgsnapshot_id: cgsnapshot_id
   - source_cgid: source_cgid
   - project_id: project_id_path
   - name: name
   - project_id: project_id

Request Example
---------------

.. literalinclude:: ./samples/consistency-group-create-from-src-request.json
   :language: javascript


Delete consistency group
~~~~~~~~~~~~~~~~~~~~~~~~

.. rest_method::
   POST /v2/{project_id}/consistencygroups/{consistencygroup_id}/delete

Deletes a consistency group.

Response codes
--------------

.. rest_status_code:: success ../status.yaml

   - 202


Request
-------

.. rest_parameters:: parameters.yaml

   - force: force
   - project_id: project_id_path
   - consistencygroup_id: consistencygroup_id

Request Example
---------------

.. literalinclude:: ./samples/consistency-group-delete-request.json
   :language: javascript


List consistency groups with details
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. rest_method::  GET /v2/{project_id}/consistencygroups/detail

Lists consistency groups with details.

Response codes
--------------

.. rest_status_code:: success ../status.yaml

   - 200

Request
-------

.. rest_parameters:: parameters.yaml

   - project_id: project_id_path
   - all_tenants: all-tenants
   - sort_key: sort_key
   - sort_dir: sort_dir
   - limit: limit
   - marker: marker


Response Parameters
-------------------

.. rest_parameters:: parameters.yaml

   - status: status_1
   - description: description
   - availability_zone: availability_zone
   - created_at: created_at
   - volume_types: volume_types
   - id: id
   - name: name

Response Example
----------------

.. literalinclude:: ./samples/consistency-groups-list-detailed-response.json
   :language: javascript


Update consistency group
~~~~~~~~~~~~~~~~~~~~~~~~

.. rest_method::
   PUT /v2/{project_id}/consistencygroups/{consistencygroup_id}/update

Updates a consistency group.

Response codes
--------------

.. rest_status_code:: success ../status.yaml

   - 202

Request
-------

.. rest_parameters:: parameters.yaml

   - remove_volumes: remove_volumes
   - description: description
   - add_volumes: add_volumes
   - name: name
   - project_id: project_id_path
   - consistencygroup_id: consistencygroup_id

Request Example
---------------

.. literalinclude:: ./samples/consistency-group-update-request.json
   :language: javascript
