diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-02-18 13:34:06 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-02-18 13:34:06 +0300 |
commit | 859a6fb938bb9ee2a317c46dfa4fcc1af49608f0 (patch) | |
tree | d7f2700abe6b4ffcb2dcfc80631b2d87d0609239 /doc/api/group_repository_storage_moves.md | |
parent | 446d496a6d000c73a304be52587cd9bbc7493136 (diff) |
Add latest changes from gitlab-org/gitlab@13-9-stable-eev13.9.0-rc42
Diffstat (limited to 'doc/api/group_repository_storage_moves.md')
-rw-r--r-- | doc/api/group_repository_storage_moves.md | 254 |
1 files changed, 254 insertions, 0 deletions
diff --git a/doc/api/group_repository_storage_moves.md b/doc/api/group_repository_storage_moves.md new file mode 100644 index 00000000000..8a19a43d31f --- /dev/null +++ b/doc/api/group_repository_storage_moves.md @@ -0,0 +1,254 @@ +--- +stage: Create +group: Editor +info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments +type: reference +--- + +# Group repository storage moves API **(PREMIUM SELF)** + +> [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 +[migrating to Gitaly Cluster](../administration/gitaly/praefect.md#migrate-existing-repositories-to-gitaly-cluster), +for example, or to migrate a Group Wiki. + +As group repository storage moves are processed, they transition through different states. Values +of `state` are: + +- `initial` +- `scheduled` +- `started` +- `finished` +- `failed` +- `replicated` +- `cleanup failed` + +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 +read-only. Please try again later.` message if they try to push new commits. + +This API requires you to [authenticate yourself](README.md#authentication) as an administrator. + +For other type of repositories you can read: + +- [Project repository storage moves API](project_repository_storage_moves.md) +- [Snippet repository storage moves API](snippet_repository_storage_moves.md) + +## Retrieve all group repository storage moves + +```plaintext +GET /group_repository_storage_moves +``` + +By default, `GET` requests return 20 results at a time because the API results +are [paginated](README.md#pagination). + +Example request: + +```shell +curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/group_repository_storage_moves" +``` + +Example response: + +```json +[ + { + "id": 1, + "created_at": "2020-05-07T04:27:17.234Z", + "state": "scheduled", + "source_storage_name": "default", + "destination_storage_name": "storage2", + "group": { + "id": 283, + "web_url": "https://gitlab.example.com/groups/testgroup", + "name": "testgroup" + } + } +] +``` + +## 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: + +```plaintext +GET /groups/:group_id/repository_storage_moves +``` + +By default, `GET` requests return 20 results at a time because the API results +are [paginated](README.md#pagination). + +Supported attributes: + +| Attribute | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `group_id` | integer | yes | ID of the group. | + +Example request: + +```shell +curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/repository_storage_moves" +``` + +Example response: + +```json +[ + { + "id": 1, + "created_at": "2020-05-07T04:27:17.234Z", + "state": "scheduled", + "source_storage_name": "default", + "destination_storage_name": "storage2", + "group": { + "id": 283, + "web_url": "https://gitlab.example.com/groups/testgroup", + "name": "testgroup" + } + } +] +``` + +## 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: + +```plaintext +GET /group_repository_storage_moves/:repository_storage_id +``` + +Supported attributes: + +| Attribute | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `repository_storage_id` | integer | yes | ID of the group repository storage move. | + +Example request: + +```shell +curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/group_repository_storage_moves/1" +``` + +Example response: + +```json +{ + "id": 1, + "created_at": "2020-05-07T04:27:17.234Z", + "state": "scheduled", + "source_storage_name": "default", + "destination_storage_name": "storage2", + "group": { + "id": 283, + "web_url": "https://gitlab.example.com/groups/testgroup", + "name": "testgroup" + } +} +``` + +## 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: + +```plaintext +GET /groups/:group_id/repository_storage_moves/:repository_storage_id +``` + +Supported attributes: + +| Attribute | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `group_id` | integer | yes | ID of the group. | +| `repository_storage_id` | integer | yes | ID of the group repository storage move. | + +Example request: + +```shell +curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/repository_storage_moves/1" +``` + +Example response: + +```json +{ + "id": 1, + "created_at": "2020-05-07T04:27:17.234Z", + "state": "scheduled", + "source_storage_name": "default", + "destination_storage_name": "storage2", + "group": { + "id": 283, + "web_url": "https://gitlab.example.com/groups/testgroup", + "name": "testgroup" + } +} +``` + +## Schedule a repository storage move for a group + +```plaintext +POST /groups/:group_id/repository_storage_moves +``` + +Supported attributes: + +| Attribute | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `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 if not provided. | + +Example request: + +```shell +curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --header "Content-Type: application/json" \ +--data '{"destination_storage_name":"storage2"}' "https://gitlab.example.com/api/v4/groups/1/repository_storage_moves" +``` + +Example response: + +```json +{ + "id": 1, + "created_at": "2020-05-07T04:27:17.234Z", + "state": "scheduled", + "source_storage_name": "default", + "destination_storage_name": "storage2", + "group": { + "id": 283, + "web_url": "https://gitlab.example.com/groups/testgroup", + "name": "testgroup" + } +} +``` + +## Schedule repository storage moves for all groups on a storage shard + +Schedules repository storage moves for each group repository stored on the source storage shard. + +```plaintext +POST /group_repository_storage_moves +``` + +Supported attributes: + +| Attribute | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `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 if not provided. | + +Example request: + +```shell +curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --header "Content-Type: application/json" \ +--data '{"source_storage_name":"default"}' "https://gitlab.example.com/api/v4/group_repository_storage_moves" +``` + +Example response: + +```json +{ + "message": "202 Accepted" +} +``` |