Получить тома, подключенные к узлу с помощью apache-libcloud
Как я могу получить список томов, которые в данный момент подключены к узлу? у меня есть Node
объект, но так как я создал тома с отображением блочного устройства, когда я создал узел с deploy_node
У меня нет объекта объема, который я мог бы использовать в качестве ссылки.
1 ответ
Я обнаружил, что нет прямого способа получить список StorageVolume
привязаны к узлу. Однако есть решение.
С драйвером EC2 вы можете использовать Node
Отображение блочных устройств для получения идентификаторов томов и имен устройств. Получив идентификаторы томов, вы можете легко выбрать этот том из списка, возвращенного list_volumes()
, Ниже я продемонстрирую это, получив идентификатор тома EBS с именем устройства /dev/sdb
прикреплен к 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
"s extra
ДИКТ. Если вы не работаете с драйвером EC2, сначала проверьте, какие метаданные предоставляются Node
"s extra
ДИКТ.