2015-04-07 8 views
0

Я использую Python 2.7 и Boto.latest.Python Boto List Устройства хранения, прикрепленные к экземпляру

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

Пример:

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__ 

Так У меня есть информация о томе, но не то, на что сопоставляется идентификатор томов.

+0

Вам нужен список идентификаторов тома, прикрепленных к каждому экземпляру или список экземпляров, прикрепленных к идентификатору тома? –

+0

список томов, прикрепленных к каждому отдельному экземпляру. thx –

ответ

1

Я думаю, что вы хотите 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.

+0

Спасибо. Теперь, когда я имею представление о том, что искать, я собираюсь получить всю необходимую информацию. –

0

Чтобы получить все тома идентификаторов atttached с 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