Project repository storage moves API (CORE ONLY)
Introduced in GitLab 13.0.
Project repositories can be moved between storages. This can be useful when migrating to Gitaly Cluster, for example.
As project repository storage moves are processed, they transition through different states. Values
of state
are:
initial
scheduled
started
finished
failed
replicated
cleanup_failed
This API requires you to authenticate yourself as an administrator.
Retrieve all project repository storage moves
GET /project_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/project_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",
"project": {
"id": 1,
"description": null,
"name": "project1",
"name_with_namespace": "John Doe2 / project1",
"path": "project1",
"path_with_namespace": "namespace1/project1",
"created_at": "2020-05-07T04:27:17.016Z"
}
]
Retrieve all repository storage moves for a project
GET /projects/:project_id/repository_storage_moves
By default, GET
requests return 20 results at a time because the API results
are paginated.
Parameters:
Attribute | Type | Required | Description |
---|---|---|---|
project_id |
integer | yes | ID of the project |
Example request:
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/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",
"project": {
"id": 1,
"description": null,
"name": "project1",
"name_with_namespace": "John Doe2 / project1",
"path": "project1",
"path_with_namespace": "namespace1/project1",
"created_at": "2020-05-07T04:27:17.016Z"
}
]
Get a single project repository storage move
GET /project_repository_storage_moves/:repository_storage_id
Parameters:
Attribute | Type | Required | Description |
---|---|---|---|
repository_storage_id |
integer | yes | ID of the project repository storage move |
Example request:
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/project_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",
"project": {
"id": 1,
"description": null,
"name": "project1",
"name_with_namespace": "John Doe2 / project1",
"path": "project1",
"path_with_namespace": "namespace1/project1",
"created_at": "2020-05-07T04:27:17.016Z"
}
Get a single repository storage move for a project
GET /projects/:project_id/repository_storage_moves/:repository_storage_id
Parameters:
Attribute | Type | Required | Description |
---|---|---|---|
project_id |
integer | yes | ID of the project |
repository_storage_id |
integer | yes | ID of the project repository storage move |
Example request:
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/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",
"project": {
"id": 1,
"description": null,
"name": "project1",
"name_with_namespace": "John Doe2 / project1",
"path": "project1",
"path_with_namespace": "namespace1/project1",
"created_at": "2020-05-07T04:27:17.016Z"
}
Schedule a repository storage move for a project
POST /projects/:project_id/repository_storage_moves
Parameters:
Attribute | Type | Required | Description |
---|---|---|---|
project_id |
integer | yes | ID of the project |
destination_storage_name |
string | yes | Name of the destination storage shard |
Example request:
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/projects/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",
"project": {
"id": 1,
"description": null,
"name": "project1",
"name_with_namespace": "John Doe2 / project1",
"path": "project1",
"path_with_namespace": "namespace1/project1",
"created_at": "2020-05-07T04:27:17.016Z"
}