6.123. ImageTransfer

このサービスは、イメージ転送を制御するメカニズムを提供します。クライアントは、イメージ転送 サービスの 追加 を使用し、データを転送するイメージを指定して転送を作成する必要があります。

その後、転送はこのサービスによって管理されます。

oVirt の Python の SDK を使用する:

ID が 123disk をアップロードします (データセンター内のランダムなホスト上に)。

transfers_service = system_service.image_transfers_service()
transfer = transfers_service.add(
   types.ImageTransfer(
      disk=types.Disk(
         id='123'
      )
   )
)

ID が 456host に ID が 123disk をアップロードします。

transfers_service = system_service.image_transfers_service()
transfer = transfers_service.add(
   types.ImageTransfer(
      disk=types.Disk(
         id='123'
      ),
      host=types.Host(
         id='456'
     )
   )
)

ユーザーがディスクをアップロードではなくダウンロードしたい場合は、転送の direction 属性として download を指定する必要があります。これにより、書き込み権限ではなく、イメージからの読み取り権限が付与されます。

例:

transfers_service = system_service.image_transfers_service()
transfer = transfers_service.add(
   types.ImageTransfer(
      disk=types.Disk(
         id='123'
      ),
      direction=types.ImageTransferDirection.DOWNLOAD
   )
)

転送には、アップロード/ダウンロードのフローを管理するフェーズがあります。このようなフローを実装するクライアントは、転送のフェーズをポーリング/チェックし、それに応じて動作する必要があります。想定されるすべてのフェーズは、ImageTransferPhase にあります。

新しい転送を追加した後、そのフェーズは 初期化 されます。クライアントは、転送が変更されるまで、転送のフェーズをポーリングする必要があります。フェーズが 転送中 になると、セッションは転送を開始できる状態になります。

以下はその例です。

transfer_service = transfers_service.image_transfer_service(transfer.id)
while transfer.phase == types.ImageTransferPhase.INITIALIZING:
   time.sleep(3)
   transfer = transfer_service.get()

その段階で、転送のフェーズが paused_system である場合は、セッションが正常に確立されていないことになります。これは、選択したホストで ovirt-imageio が実行されていない場合に発生する可能性があります。

表6.374 メソッドの概要

名前概要

cancel

イメージ転送セッションをキャンセルします。

extend

イメージ転送セッションを延長します。

finalize

データの転送が終了したら、転送を完了します。

get

イメージ転送エンティティーを取得します。

pause

イメージ転送セッションを一時停止します。

再開

イメージ転送セッションを再開します。

6.123.1. cancel POST

イメージ転送セッションをキャンセルします。これにより、転送操作が終了し、部分的なイメージが削除されます。

6.123.2. extend POST

イメージ転送セッションを延長します。

6.123.3. finalize POST

データの転送が終了したら、転送を完了します。

これにより、転送されるデータが有効であり、転送の対象となったイメージエンティティーに適合していることが確認されます。具体的には、イメージエンティティーが QCOW ディスクの場合、アップロードされたデータが実際に QCOW ファイルであり、イメージにバッキングファイルがないことを確認します。

6.123.4. get GET

イメージ転送エンティティーを取得します。

表6.375 パラメーターの概要

名前タイプ方向概要

follow

文字列

In

たどる 必要のある内部リンクを指定します。

image_transfer

ImageTransfer

Out

 

6.123.4.1. follow

たどる 必要のある内部リンクを指定します。これらのリンクで参照されるオブジェクトは、現在の要求の一部としてフェッチされます。詳細は、こちら を参照してください。

6.123.5. pause POST

イメージ転送セッションを一時停止します。

6.123.6. resume POST

イメージ転送セッションを再開します。クライアントは、転送のフェーズが resuming と異なるまで、ポーリングする必要があります。以下はその例です。

transfer_service = transfers_service.image_transfer_service(transfer.id)
transfer_service.resume()
transfer = transfer_service.get()

while transfer.phase == types.ImageTransferPhase.RESUMING:
   time.sleep(1)
   transfer = transfer_service.get()