如何获取当前附加到节点的卷列表?我有Node
对象,但是当我使用deploy_node
创建节点时,我创建了带有块设备映射的卷,我没有可以用作参考的卷对象。
答案 0 :(得分:1)
我发现没有直接的方法来获取附加到节点的StorageVolume
列表。但是,有一个解决方案。
使用EC2驱动程序,您可以使用Node
的块设备映射来获取卷ID和设备名称。获得卷ID后,您可以从list_volumes()
返回的列表中轻松选择该卷。下面,我通过获取附加到/dev/sdb
的设备名称Node
的EBS卷的ID,然后从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
的{{1}} dict中提供块设备映射,则无法使用此确切方法。如果您不使用EC2驱动程序,请首先检查extra
的{{1}}字典提供的元数据。