doc-locale/fr-fr/api/project_repository_storage_moves.md
{{< details >}}
{{< /details >}}
Les dépôts de projet, y compris les dépôts wiki et de conception, peuvent être déplacés entre les stockages. Cette API peut vous aider lors de la migration vers Gitaly Cluster (Praefect), par exemple.
Au fur et à mesure que les déplacements de stockage des dépôts de projet sont traités, ils passent par différents états. Les valeurs de state sont :
initial : L'enregistrement a été créé mais le job en arrière-plan n'a pas encore été planifié.scheduled : Le job en arrière-plan a été planifié.started : Les dépôts du projet sont en cours de copie vers le stockage de destination.replicated : Le projet a été déplacé.failed : La copie des dépôts du projet a échoué ou les sommes de contrôle ne correspondaient pas.finished : Le projet a été déplacé et les dépôts sur le stockage source ont été supprimés.cleanup failed : Le projet a été déplacé mais les dépôts sur le stockage source n'ont pas pu être supprimés.Pour garantir l'intégrité des données, les projets sont placés dans un état temporaire de lecture seule pendant la durée du déplacement. Pendant ce temps, les utilisateurs reçoivent un message The repository is temporarily read-only. Please try again later. s'ils essaient de pousser de nouveaux commits.
Cette API vous demande de vous authentifier en tant qu'administrateur.
Pour les autres types de dépôts, voir :
GET /project_repository_storage_moves
Par défaut, les requêtes GET renvoient 20 résultats à la fois car les résultats de l'API sont paginés.
Exemple de requête :
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/project_repository_storage_moves"
Exemple de réponse :
[
{
"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 /projects/:project_id/repository_storage_moves
Par défaut, les requêtes GET renvoient 20 résultats à la fois car les résultats de l'API sont paginés.
Paramètres :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
project_id | entier | oui | ID du projet |
Exemple de requête :
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/repository_storage_moves"
Exemple de réponse :
[
{
"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 /project_repository_storage_moves/:repository_storage_id
Paramètres :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
repository_storage_id | entier | oui | ID du déplacement de stockage du dépôt de projet |
Exemple de requête :
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/project_repository_storage_moves/1"
Exemple de réponse :
{
"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 /projects/:project_id/repository_storage_moves/:repository_storage_id
Paramètres :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
project_id | entier | oui | ID du projet |
repository_storage_id | entier | oui | ID du déplacement de stockage du dépôt de projet |
Exemple de requête :
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/repository_storage_moves/1"
Exemple de réponse :
{
"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"
}
}
POST /projects/:project_id/repository_storage_moves
Paramètres :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
project_id | entier | oui | ID du projet |
destination_storage_name | string | non | Nom du fragment de stockage de destination. Le stockage est sélectionné automatiquement en fonction des poids de stockage si non fourni |
Exemple de requête :
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{"destination_storage_name":"storage2"}' \
--url "https://gitlab.example.com/api/v4/projects/1/repository_storage_moves"
Exemple de réponse :
{
"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"
}
}
Crée des déplacements de stockage de dépôts pour chaque dépôt de projet stocké sur le fragment de stockage source. Ce point de terminaison migre tous les projets en une seule fois.
POST /project_repository_storage_moves
Paramètres :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
source_storage_name | string | oui | Nom du fragment de stockage source. |
destination_storage_name | string | non | Nom du fragment de stockage de destination. Le stockage est sélectionné automatiquement en fonction des poids de stockage si non fourni. |
Exemple de requête :
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{"source_storage_name":"default"}' \
--url "https://gitlab.example.com/api/v4/project_repository_storage_moves"
Exemple de réponse :
{
"message": "202 Accepted"
}