docs: def capture(self, instance_id, name, additional_disks=False, notes=None):
          """Capture one or all disks from a VS to a SoftLayer image.
  
          Parameters set to None will be ignored and not attempted to be updated.
  
          :param integer instance_id: the instance ID to edit
          :param string name: name assigned to the image
          :param bool additional_disks: set to true to include all additional
                                          attached storage devices
          :param string notes: notes about this particular image
  
          :returns: dictionary -- information about the capture transaction.
  
          Example::
              name = "Testing Images"
              notes = "Some notes about this image"
              result = mgr.capture(instance_id=12345, name=name, notes=notes)
          """
  
          vsi = self.client.call(
              'Virtual_Guest',
              'getObject',
              id=instance_id,
              mask="""id,
              blockDevices[id,device,mountType,
              diskImage[id,metadataFlag,type[keyName]]]""")
  
          disks_to_capture = []
          for block_device in vsi['blockDevices']:
  
              # We never want metadata disks
              if utils.lookup(block_device, 'diskImage', 'metadataFlag'):
                  continue
  
              # We never want swap devices
              type_name = utils.lookup(block_device, 'diskImage', 'type', 'keyName')
              if type_name == 'SWAP':
                  continue
  
              # We never want CD images
              if block_device['mountType'] == 'CD':
                  continue
  
              # Only use the first block device if we don't want additional disks
              if not additional_disks and str(block_device['device']) != '0':
                  continue
  
              disks_to_capture.append(block_device)
  
          return self.guest.createArchiveTransaction(
              name, disks_to_capture, notes, id=instance_id)