正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

グループリポジトリストレージ移動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"
}