Устройства хранения списка Python Boto, подключенные к экземпляру

Я использую Python 2.7 и Boto.latest.

Я создаю сценарий динамической инвентаризации, и я хотел бы перечислить устройства хранения, которые подключены к каждому экземпляру

Пример:

ID: i-3rblah
Storage:
-  /dev/sda 
- /dev/sdb
- /dev/sdc

Пытался:

for reservation in reservations:
  for i in reservation.instances:
    volumes = conn.get_all_volumes(filters={'attachment.instance-id': i.id})
    print i.__dict__
    print volumes.__dict__ 

Таким образом, у меня есть некоторая информация о томе, но не то, на что отображается VolumeID.

2 ответа

Решение

Я думаю, что вы хотите BlockDeviceMapping для примера. Исходя из вашего примера выше, следующее должно найти block_device_mapping для экземпляра, который является словарем. Каждый ключ в словаре является именем устройства, а значение - BlockDeviceType объект, который содержит информацию о блочном устройстве, связанном с этим именем устройства.

for reservation in reservations:
    for instance in reservation.instances:
        bdm = instance.block_device_mapping
        for device in bdm:
            print('Device: {}'.format(device)
            bdt = bdm[device]
            print('\tVolumeID: {}'.format(bdt.volume_id))
            print('\tVolume Status: {}'.format(bd.volume_status))

Это должно напечатать что-то вроде:

Device: /dev/sda1
    VolumeID: vol-1d011806
    Volume Size: attached

Есть другие поля в BlockDeviceType объект. Вы должны быть в состоянии найти больше информации об этом в документации Boto.

Чтобы получить все идентификаторы тома с помощью instance-:

inst=conn.get_all_instances()

    for reservation in inst:
      for i in reservation.instances:
        volumes = conn.get_all_volumes(filters={'attachment.instance-id': i.id})
        print "This instance:",i.id," is attached to ", volumes
Другие вопросы по тегам