グループリポジトリストレージ移動API
- プラン: Premium、Ultimate
- 提供形態: GitLab Self-Managed、GitLab Dedicated
このAPIを使用して、グループリポジトリストレージの移動を管理します。このAPIは、例えば、Gitaly Cluster (Praefect)へ移行する 、またはグループWikiを移行するのに役立ちます。このAPIは、グループ内のプロジェクトリポジトリストレージを管理しません。プロジェクトの移動をスケジュールするには、プロジェクトリポジトリストレージ移動APIを使用します。
GitLabがグループリポジトリストレージの移動を処理する際に、さまざまな状態を移行します。stateの値は次のとおりです:
initial: レコードは作成されましたが、バックグラウンドジョブはまだスケジュールされていません。scheduled: バックグラウンドジョブがスケジュールされました。started: グループリポジトリストレージがターゲットストレージにコピーされています。replicated: グループが移動されました。failed: グループリポジトリストレージのコピーに失敗したか、チェックサムが一致しませんでした。finished: グループは移動され、ソーストレージ上のリポジトリストレージは削除されました。cleanup failed: グループは移動されましたが、ソーストレージ上のリポジトリストレージを削除できませんでした。
データの一貫性を確保するため、GitLabは移動期間中、グループを一時的な読み取り専用状態にします。この間、ユーザーが新しいコミットをプッシュすると、このメッセージが表示されます:
The repository is temporarily read-only. Please try again later.このAPIを使用するには、管理者として認証する必要があります。
他の種類のリポジトリストレージを移動するためのAPIも利用できます:
すべてのグループリポジトリストレージ移動を一覧表示
インスタンスのすべてのグループリポジトリストレージ移動を一覧表示します。
GET /group_repository_storage_movesデフォルトでは、GETリクエストは一度に20件の結果を返します。これは、APIの結果がページ分割されているためです。
リクエスト例:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/group_repository_storage_moves"レスポンス例:
[
{
"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 /groups/:group_id/repository_storage_movesデフォルトでは、GETリクエストは一度に20件の結果を返します。これは、APIの結果がページ分割されているためです。
サポートされている属性は以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
group_id | 整数 | はい | グループのID。 |
リクエスト例:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/1/repository_storage_moves"レスポンス例:
[
{
"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 /group_repository_storage_moves/:repository_storage_idサポートされている属性は以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
repository_storage_id | 整数 | はい | グループリポジトリストレージ移動のID。 |
リクエスト例:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/group_repository_storage_moves/1"レスポンス例:
{
"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 /groups/:group_id/repository_storage_moves/:repository_storage_idサポートされている属性は以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
group_id | 整数 | はい | グループのID。 |
repository_storage_id | 整数 | はい | グループリポジトリストレージ移動のID。 |
リクエスト例:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/1/repository_storage_moves/1"レスポンス例:
{
"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"
}
}グループリポジトリストレージ移動を作成
指定されたグループのグループリポジトリストレージ移動を作成します。このエンドポイントは、次のように動作します。
- グループWikiリポジトリストレージのみを移動します。
- グループ内のプロジェクトのリポジトリストレージは移動しません。プロジェクトの移動をスケジュールするには、プロジェクトリポジトリストレージ移動 APIを使用します。
POST /groups/:group_id/repository_storage_movesサポートされている属性は以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
group_id | 整数 | はい | グループのID。 |
destination_storage_name | 文字列 | いいえ | ターゲットストレージシャードの名前。指定がない場合、ストレージウェイトに基づいてストレージが選択されます。 |
リクエスト例:
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/groups/1/repository_storage_moves"レスポンス例:
{
"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"
}
}ストレージシャードのグループリポジトリストレージ移動を作成
指定されたストレージシャード上のすべてのグループのリポジトリストレージ移動を作成します。
POST /group_repository_storage_movesサポートされている属性は以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
source_storage_name | 文字列 | はい | ソーストレージシャードの名前。 |
destination_storage_name | 文字列 | いいえ | ターゲットストレージシャードの名前。指定がない場合、ストレージウェイトに基づいてストレージが選択されます。 |
リクエスト例:
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/group_repository_storage_moves"レスポンス例:
{
"message": "202 Accepted"
}