Commit b6258b3c authored by Russell Dickenson's avatar Russell Dickenson

Merge branch '324962-aqualls-group-repo-api' into 'master'

Light CTRT edits for group_repository_storage_moves.md

See merge request gitlab-org/gitlab!67461
parents a26fe071 6fb9e8de
...@@ -9,31 +9,35 @@ type: reference ...@@ -9,31 +9,35 @@ type: reference
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/53016) in GitLab 13.9. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/53016) in GitLab 13.9.
Group repositories can be moved between storages. This can be useful when Group repositories can be moved between storages. This API can help you when
[migrating to Gitaly Cluster](../administration/gitaly/praefect.md#migrate-to-gitaly-cluster), for [migrating to Gitaly Cluster](../administration/gitaly/praefect.md#migrate-to-gitaly-cluster), for
example, or to migrate a Group Wiki. example, or to migrate a [group wiki](../user/project/wiki/index.md#group-wikis).
As group repository storage moves are processed, they transition through different states. Values As group repository storage moves are processed, they transition through different states. Values
of `state` are: of `state` are:
- `initial`: The record has been created but the background job has not yet been scheduled. - `initial`: The record has been created, but the background job has not yet been scheduled.
- `scheduled`: The background job has been scheduled. - `scheduled`: The background job has been scheduled.
- `started`: The group repositories are being copied to the destination storage. - `started`: The group repositories are being copied to the destination storage.
- `replicated`: The group has been moved. - `replicated`: The group has been moved.
- `failed`: The group repositories failed to copy or the checksums did not match. - `failed`: The group repositories failed to copy, or the checksums did not match.
- `finished`: The group has been moved and the repositories on the source storage have been deleted. - `finished`: The group has been moved, and the repositories on the source storage have been deleted.
- `cleanup failed`: The group has been moved but the repositories on the source storage could not be deleted. - `cleanup failed`: The group has been moved, but the repositories on the source storage could not be deleted.
To ensure data integrity, groups are put in a temporary read-only state for the To ensure data integrity, groups are put in a temporary read-only state for the
duration of the move. During this time, users receive a `The repository is temporarily duration of the move. During this time, users receive this message if they try to
read-only. Please try again later.` message if they try to push new commits. push new commits:
```plaintext
The repository is temporarily read-only. Please try again later.
```
This API requires you to [authenticate yourself](index.md#authentication) as an administrator. This API requires you to [authenticate yourself](index.md#authentication) as an administrator.
For other type of repositories you can read: APIs are also available to move other types of repositories:
- [Project repository storage moves API](project_repository_storage_moves.md) - [Project repository storage moves API](project_repository_storage_moves.md).
- [Snippet repository storage moves API](snippet_repository_storage_moves.md) - [Snippet repository storage moves API](snippet_repository_storage_moves.md).
## Retrieve all group repository storage moves ## Retrieve all group repository storage moves
...@@ -41,7 +45,7 @@ For other type of repositories you can read: ...@@ -41,7 +45,7 @@ For other type of repositories you can read:
GET /group_repository_storage_moves GET /group_repository_storage_moves
``` ```
By default, `GET` requests return 20 results at a time because the API results By default, `GET` requests return 20 results at a time, because the API results
are [paginated](index.md#pagination). are [paginated](index.md#pagination).
Example request: Example request:
...@@ -71,13 +75,13 @@ Example response: ...@@ -71,13 +75,13 @@ Example response:
## Retrieve all repository storage moves for a single group ## Retrieve all repository storage moves for a single group
In order to retrieve all the repository storage moves for a single group you can use the following endpoint: To retrieve all the repository storage moves for a single group you can use the following endpoint:
```plaintext ```plaintext
GET /groups/:group_id/repository_storage_moves GET /groups/:group_id/repository_storage_moves
``` ```
By default, `GET` requests return 20 results at a time because the API results By default, `GET` requests return 20 results at a time, because the API results
are [paginated](index.md#pagination). are [paginated](index.md#pagination).
Supported attributes: Supported attributes:
...@@ -113,7 +117,8 @@ Example response: ...@@ -113,7 +117,8 @@ Example response:
## Get a single group repository storage move ## Get a single group repository storage move
In order to retrieve a single repository storage move throughout all the existing repository storage moves, you can use the following endpoint: To retrieve a single repository storage move throughout all the existing repository
storage moves, you can use the following endpoint:
```plaintext ```plaintext
GET /group_repository_storage_moves/:repository_storage_id GET /group_repository_storage_moves/:repository_storage_id
...@@ -150,7 +155,8 @@ Example response: ...@@ -150,7 +155,8 @@ Example response:
## Get a single repository storage move for a group ## Get a single repository storage move for a group
Given a group, you can retrieve a specific repository storage move for that group, through the following endpoint: Given a group, you can retrieve a specific repository storage move for that group,
through the following endpoint:
```plaintext ```plaintext
GET /groups/:group_id/repository_storage_moves/:repository_storage_id GET /groups/:group_id/repository_storage_moves/:repository_storage_id
...@@ -197,7 +203,7 @@ Supported attributes: ...@@ -197,7 +203,7 @@ Supported attributes:
| Attribute | Type | Required | Description | | Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- | | --------- | ---- | -------- | ----------- |
| `group_id` | integer | yes | ID of the group. | | `group_id` | integer | yes | ID of the group. |
| `destination_storage_name` | string | no | Name of the destination storage shard. In [GitLab 13.5 and later](https://gitlab.com/gitlab-org/gitaly/-/issues/3209), the storage is selected [automatically based on storage weights](../administration/repository_storage_paths.md#configure-where-new-repositories-are-stored) if not provided. | | `destination_storage_name` | string | no | Name of the destination storage shard. In [GitLab 13.5 and later](https://gitlab.com/gitlab-org/gitaly/-/issues/3209), the storage is selected [based on storage weights](../administration/repository_storage_paths.md#configure-where-new-repositories-are-stored) if not provided. |
Example request: Example request:
...@@ -238,7 +244,7 @@ Supported attributes: ...@@ -238,7 +244,7 @@ Supported attributes:
| Attribute | Type | Required | Description | | Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- | | --------- | ---- | -------- | ----------- |
| `source_storage_name` | string | yes | Name of the source storage shard. | | `source_storage_name` | string | yes | Name of the source storage shard. |
| `destination_storage_name` | string | no | Name of the destination storage shard. The storage is selected [automatically based on storage weights](../administration/repository_storage_paths.md#configure-where-new-repositories-are-stored) if not provided. | | `destination_storage_name` | string | no | Name of the destination storage shard. The storage is selected [based on storage weights](../administration/repository_storage_paths.md#configure-where-new-repositories-are-stored) if not provided. |
Example request: Example request:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment