code: def handle_snapshot(config_spec, object_ref, reloc_spec, template, vm_):
      '''
      Returns a clone spec for cloning from shapshots
      :rtype vim.vm.CloneSpec
      '''
      if 'snapshot' not in vm_:
          return None
  
      allowed_types = [
          FLATTEN_DISK_FULL_CLONE,
          COPY_ALL_DISKS_FULL_CLONE,
          CURRENT_STATE_LINKED_CLONE,
          QUICK_LINKED_CLONE,
      ]
  
      clone_spec = get_clonespec_for_valid_snapshot(
          config_spec,
          object_ref,
          reloc_spec,
          template,
          vm_)
      if not clone_spec:
          raise SaltCloudSystemExit('Invalid disk move type specified'
                                    ' supported types are'
                                    ' {0}'.format(' '.join(allowed_types)))
      return clone_spef handle_snapshot(config_spec, object_ref, reloc_spec, template, vm_):
      '''
      Returns a clone spec for cloning from shapshots
      :rtype vim.vm.CloneSpec
      '''
      if 'snapshot' not in vm_:
          return None
  
      allowed_types = [
          FLATTEN_DISK_FULL_CLONE,
          COPY_ALL_DISKS_FULL_CLONE,
          CURRENT_STATE_LINKED_CLONE,
          QUICK_LINKED_CLONE,
      ]
  
      clone_spec = get_clonespec_for_valid_snapshot(
          config_spec,
          object_ref,
          reloc_spec,
          template,
          vm_)
      if not clone_spec:
          raise SaltCloudSystemExit('Invalid disk move type specified'
                                    ' supported types are'
                                    ' {0}'.format(' '.join(allowed_types)))
      return clone_spec
docs: Returns a clone spec for cloning from shapshots
      :rtype vim.vm.CloneSpec