Получить тома, подключенные к узлу с помощью 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 ДИКТ.

Другие вопросы по тегам