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