2

現在ノードに接続されているボリュームのリストを取得するにはどうすればよいですか? オブジェクトはありNodeますが、 でノードを作成したときにブロック デバイス マッピングでボリュームを作成したdeploy_nodeため、参照できるボリューム オブジェクトがありません。

4

1 に答える 1

1

StorageVolumeノードに接続されている のリストを直接取得する方法がないことがわかりました。ただし、解決策はあります。

EC2 ドライバーでは、Nodeのブロック デバイス マッピングを使用して、ボリューム ID とデバイス名を取得できます。ボリューム ID を取得したら、 によって返されたリストからそのボリュームを簡単に選択できますlist_volumes()/dev/sdb以下では、デバイス名が にアタッチされた EBS ボリュームの ID を取得し、によって返されたリストからNode一致するものを選択することで、これを示しています。StorageVolumelist_volumes()

vol_id = [x['ebs']['volume_id'] for x in node.extra['block_device_mapping']
          if x['device_name'] == '/dev/sdb'][0]
# vol_id is a string
volume = [v for v in driver.list_volumes() if v.id == vol_id][0]
# volume is a StorageVolume

Node使用しているドライバーがextradictでブロック デバイス マッピングを提供しない場合、この正確な方法は使用できないことに注意してください。NodeEC2 ドライバーを使用していない場合は、まず、のextradictによって提供されるメタデータを確認してください。

于 2014-07-15T13:35:12.500 に答える