Group repository storage moves API premiumself-managed
Group repositories can be moved between storages. This API can help you when migrating 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
: The record has been created, but the background job has not yet been scheduled. -
scheduled
: The background job has been scheduled. -
started
: The group repositories are being copied to the destination storage. -
replicated
: The group has been moved. -
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. -
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 duration of the move. During this time, users receive this message if they try to push new commits:
The repository is temporarily read-only. Please try again later.
This API requires you to authenticate yourself as an administrator.
APIs are also available to move other types of repositories:
Retrieve all group repository storage moves
GET /group_repository_storage_moves
By default, GET
requests return 20 results at a time, because the API results
are paginated.
Example request:
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/group_repository_storage_moves"
Example response:
[
{
"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
To retrieve all the repository storage moves for a single group you can use the following endpoint:
GET /groups/:group_id/repository_storage_moves
By default, GET
requests return 20 results at a time, because the API results
are paginated.
Supported attributes:
Attribute | Type | Required | Description |
---|---|---|---|
group_id
| integer | yes | ID of the group. |
Example request:
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/repository_storage_moves"
Example response:
[
{
"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
To retrieve a single repository storage move throughout all the existing repository storage moves, you can use the following endpoint:
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:
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/group_repository_storage_moves/1"
Example response:
{
"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:
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:
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/repository_storage_moves/1"
Example response:
{
"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
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
Example request:
Example response:
Schedule repository storage moves for all groups on a storage shardSchedules repository storage moves for each group repository stored on the source storage shard.
Supported attributes:
Example request:
Example response:
Help & feedbackDocsEdit this page to fix an error or add an improvement in a merge request.Create an issue to suggest an improvement to this page. ProductCreate an issue if there's something you don't like about this feature.Propose functionality by submitting a feature request. to help shape new features. Feature availability and product trialsto see all GitLab tiers and features, or to upgrade.with access to all features for 30 days. Get Help
If you didn't find what you were looking for,
search the docs.
If you want help with something specific and could use community support,
.
For problems setting up or using this feature (depending on your GitLab
subscription). |