Skip to content

Commit 3541c7b

Browse files
committed
Fixed metadata disk exclusion issue in vs capture command. (softlayer#723)
1 parent 4932cac commit 3541c7b

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,5 @@ docs/_build/*
1212
build/*
1313
dist/*
1414
*.egg-info
15+
.cache
16+

SoftLayer/managers/vs.py

+7-5
Original file line numberDiff line numberDiff line change
@@ -714,19 +714,21 @@ def capture(self, instance_id, name, additional_disks=False, notes=None):
714714
notes = "Some notes about this image"
715715
result = mgr.capture(instance_id=12345, name=name, notes=notes)
716716
"""
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]
717719
vsi = self.get_instance(instance_id)
718720

719721
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
721723
if additional_disks:
722724
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']
726728
if disk_filter(block_device)]
727729

728730
return self.guest.createArchiveTransaction(
729-
name, disks, notes, id=instance_id)
731+
name, non_metadata_disks, notes, id=instance_id)
730732

731733
def upgrade(self, instance_id, cpus=None, memory=None,
732734
nic_speed=None, public=True):

0 commit comments

Comments
 (0)