現在ノードに接続されているボリュームのリストを取得するにはどうすればよいですか? オブジェクトはありNode
ますが、 でノードを作成したときにブロック デバイス マッピングでボリュームを作成したdeploy_node
ため、参照できるボリューム オブジェクトがありません。
質問する
351 次
1 に答える
1
StorageVolume
ノードに接続されている のリストを直接取得する方法がないことがわかりました。ただし、解決策はあります。
EC2 ドライバーでは、Node
のブロック デバイス マッピングを使用して、ボリューム ID とデバイス名を取得できます。ボリューム ID を取得したら、 によって返されたリストからそのボリュームを簡単に選択できますlist_volumes()
。/dev/sdb
以下では、デバイス名が にアタッチされた EBS ボリュームの ID を取得し、によって返されたリストからNode
一致するものを選択することで、これを示しています。StorageVolume
list_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
使用しているドライバーがextra
dictでブロック デバイス マッピングを提供しない場合、この正確な方法は使用できないことに注意してください。Node
EC2 ドライバーを使用していない場合は、まず、のextra
dictによって提供されるメタデータを確認してください。
于 2014-07-15T13:35:12.500 に答える