- すべてのグループリポジトリの移動を取得します。
- 単一のグループのすべてのリポジトリストレージの移動を取得します。
- 単一のグループリポジトリのストレージ移動の取得
- グループの単一のリポジトリストレージの移動を取得します。
- グループのリポジトリストレージの移動をスケジュールします。
- ストレージシャード上のすべてのグループのリポジトリストレージの移動をスケジュールします。
グループリポジトリのAPI移動
GitLab 13.9 で導入されました。
グループWikiリポジトリをストレージ間で移動することができます。このAPIは、例えばGitalyクラスタへのマイグレーションや グループWikiのマイグレーションに役立ちます。このAPIはグループ内のプロジェクトリポジトリを管理しません。プロジェクトの移動をスケジュールするには、プロジェクトリポジトリストレージ移動APIを使用してください。
グループリポジトリの移動が処理されると、さまざまな状態に遷移します。state
の値は次のとおりです:
-
initial
:レコードは作成されましたが、バックグラウンドジョブはまだスケジュールされていません。 -
scheduled
:バックグラウンド・ジョブはスケジュール済みです。 -
started
:グループリポジトリをコピー先ストレージにコピー中です。 -
replicated
:グループを移動しました。 -
failed
:グループのリポジトリがコピーに失敗したか、チェックサムが一致しませんでした。 -
finished
:グループは移動され、移動元のリポジトリは削除されました。 -
cleanup failed
:グループは移動されましたが、ソースストレージ上のリポジトリは削除できませんでした。
データのインテグレーションを保証するため、グループは移動の間、一時的に読み取り専用状態になります。この間、ユーザーが新しいコミットをプッシュしようとすると、このメッセージが表示されます:
The repository is temporarily read-only. Please try again later.
このAPIを使用するには、管理者としての認証が必要です。
他の種類のリポジトリを移動するためのAPIも利用可能です:
- プロジェクトリポジトリ移動API。
- スニペットリポジトリの移動APIを参照してください。
すべてのグループリポジトリの移動を取得します。
GET /group_repository_storage_moves
デフォルトでは、API の結果はページ分割されているため、GET
リクエストは一度に 20 件の結果を返します。
リクエストの例
curl --header "PRIVATE-TOKEN: <your_access_token>" "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
デフォルトでは、API の結果はページ分割されているため、GET
リクエストは一度に 20 件の結果を返します。
サポートされる属性:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
group_id | 整数。 | yes | グループのID。 |
リクエストの例
curl --header "PRIVATE-TOKEN: <your_access_token>" "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 | 整数。 | yes | グループリポジトリのストレージ移動の ID。 |
リクエストの例
curl --header "PRIVATE-TOKEN: <your_access_token>" "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 | 整数。 | yes | グループのID。 |
repository_storage_id | 整数。 | yes | グループリポジトリのストレージ移動の ID。 |
リクエストの例
curl --header "PRIVATE-TOKEN: <your_access_token>" "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 | 整数。 | yes | グループのID。 |
destination_storage_name | 文字列です。 | いいえ | 保存先ストレージシャードの名前。GitLab 13.5以降では、提供されていない場合、ストレージの重みに基づいてストレージが選択されます。 |
リクエストの例
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"
応答例
{
"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 | 文字列です。 | yes | ソースストレージシャードの名前。 |
destination_storage_name | 文字列です。 | いいえ | 宛先ストレージ・シャードの名前。提供されない場合は、ストレージの重みに基づいてストレージが選択されます。 |
リクエストの例
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"
応答例
{
"message": "202 Accepted"
}