如何获取当前附加到节点的卷列表?我有该Node
对象,但由于我在使用创建节点时使用块设备映射创建了卷deploy_node
,因此我没有可以用作参考的卷对象。
问问题
351 次
1 回答
1
我发现没有直接的方法来获取StorageVolume
附加到节点的 s 列表。然而,有一个解决方案。
使用 EC2 驱动程序,您可以使用Node
的块设备映射来获取卷 ID 和设备名称。获得卷 ID 后,您可以轻松地从list_volumes()
. 下面,我通过获取设备名称/dev/sdb
附加到 a的 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
请记住,如果您正在使用的驱动程序未在其dict中提供块设备映射,则无法使用此确切方法Node
。extra
如果您不使用 EC2 驱动程序,请首先检查 aNode
的extra
dict 提供了哪些元数据。
于 2014-07-15T13:35:12.500 回答