@@ -714,19 +714,21 @@ def capture(self, instance_id, name, additional_disks=False, notes=None):
714
714
notes = "Some notes about this image"
715
715
result = mgr.capture(instance_id=12345, name=name, notes=notes)
716
716
"""
717
+ disks = self .client .call ('Virtual_Guest' , 'getObject' , id = instance_id , mask = "id,blockDevices[id,diskImage[id,metadataFlag]]" )
718
+ metadata_disks = [element .get ('id' ) for element in disks .get ('blockDevices' ) if element .get ('diskImage' ).get ('metadataFlag' ) == True ]
717
719
vsi = self .get_instance (instance_id )
718
720
719
721
disk_filter = lambda x : x ['device' ] == '0'
720
- # Skip disk 1 (swap partition) and CD mounts
722
+ # Skip disk 1 (swap partition), CD mounts, and metadata disks
721
723
if additional_disks :
722
724
disk_filter = lambda x : (str (x ['device' ]) != '1' and
723
- x ['mountType' ] != 'CD' )
724
-
725
- disks = [block_device for block_device in vsi ['blockDevices' ]
725
+ x ['mountType' ] != 'CD' and
726
+ x [ 'id' ] not in metadata_disks )
727
+ non_metadata_disks = [block_device for block_device in vsi ['blockDevices' ]
726
728
if disk_filter (block_device )]
727
729
728
730
return self .guest .createArchiveTransaction (
729
- name , disks , notes , id = instance_id )
731
+ name , non_metadata_disks , notes , id = instance_id )
730
732
731
733
def upgrade (self , instance_id , cpus = None , memory = None ,
732
734
nic_speed = None , public = True ):
0 commit comments