6.123. ImageTransfer
このサービスは、イメージ転送を制御するメカニズムを提供します。クライアントは、イメージ転送 サービスの 追加 を使用し、データを転送するイメージを指定して転送を作成する必要があります。
その後、転送はこのサービスによって管理されます。
oVirt の Python の SDK を使用する:
ID が 123
の disk
をアップロードします (データセンター内のランダムなホスト上に)。
transfers_service = system_service.image_transfers_service() transfer = transfers_service.add( types.ImageTransfer( disk=types.Disk( id='123' ) ) )
ID が 456
の host
に ID が 123
の disk
をアップロードします。
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 が実行されていない場合に発生する可能性があります。
名前 | Summary |
---|---|
| イメージ転送セッションをキャンセルします。 |
| イメージ転送セッションを延長します。 |
| データの転送が終了したら、転送を完了します。 |
| イメージ転送エンティティーを取得します。 |
| イメージ転送セッションを一時停止します。 |
| イメージ転送セッションを再開します。 |
6.123.1. cancel POST
イメージ転送セッションをキャンセルします。これにより、転送操作が終了し、部分的なイメージが削除されます。
6.123.2. extend POST
イメージ転送セッションを延長します。
6.123.3. finalize POST
データの転送が終了したら、転送を完了します。
これにより、転送されるデータが有効であり、転送の対象となったイメージエンティティーに適合していることが確認されます。具体的には、イメージエンティティーが QCOW ディスクの場合、アップロードされたデータが実際に QCOW ファイルであり、イメージにバッキングファイルがないことを確認します。
6.123.4. get GET
イメージ転送エンティティーを取得します。
名前 | 型 | 方向 | Summary |
---|---|---|---|
| In | たどる 必要のある内部リンクを指定します。 | |
| 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()