如何获取当前附加到节点的卷列表?我有 Node 对象,但是由于我在使用 deploy_node 创建节点时使用 block 设备映射创建了卷,所以我没有可以使用的卷对象用作引用。
请您参考如下方法:
我发现没有直接的方法来获取附加到节点的 StorageVolume 列表。但是,有一个解决方案。
借助 EC2 驱动程序,您可以使用 Node 的 block 设备映射来获取卷 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 中提供 block 设备映射,则无法使用此确切方法> 听写。如果您没有使用 EC2 驱动程序,请首先检查 Node 的 extra 字典提供了哪些元数据。
