2015-04-07 37 views
0

我使用Python 2.7和Boto.latest。Python博託列表存儲設備連接到實例

我創建一個動態庫存劇本,我想列出附加到每個實例的存儲設備

例子:

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映射到的內容。

+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

要得到所有的卷ID與一個實例 - atttached:

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