docs: def revert_snapshot(name, vm_snapshot=None, cleanup=False, **kwargs):
      '''
      Revert snapshot to the previous from current (if available) or to the specific.
  
      :param name: domain name
      :param vm_snapshot: name of the snapshot to revert
      :param cleanup: Remove all newer than reverted snapshots. Values: True or False (default False).
      :param connection: libvirt connection URI, overriding defaults
  
          .. versionadded:: 2019.2.0
      :param username: username to connect with, overriding defaults
  
          .. versionadded:: 2019.2.0
      :param password: password to connect with, overriding defaults
  
          .. versionadded:: 2019.2.0
  
      .. versionadded:: 2016.3.0
  
      CLI Example:
  
      .. code-block:: bash
  
          salt '*' virt.revert <domain>
          salt '*' virt.revert <domain> <snapshot>
      '''
      ret = dict()
      conn = __get_conn(**kwargs)
      domain = _get_domain(conn, name)
      snapshots = domain.listAllSnapshots()
  
      _snapshots = list()
      for snap_obj in snapshots:
          _snapshots.append({'idx': _parse_snapshot_description(snap_obj, unix_time=True)['created'], 'ptr': snap_obj})
      snapshots = [w_ptr['ptr'] for w_ptr in sorted(_snapshots, key=lambda item: item['idx'], reverse=True)]
      del _snapshots
  
      if not snapshots:
          conn.close()
          raise CommandExecutionError('No snapshots found')
      elif len(snapshots) == 1:
          conn.close()
          raise CommandExecutionError('Cannot revert to itself: only one snapshot is available.')
  
      snap = None
      for p_snap in snapshots:
          if not vm_snapshot:
              if p_snap.isCurrent() and snapshots[snapshots.index(p_snap) + 1:]:
                  snap = snapshots[snapshots.index(p_snap) + 1:][0]
                  break
          elif p_snap.getName() == vm_snapshot:
              snap = p_snap
              break
  
      if not snap:
          conn.close()
          raise CommandExecutionError(
              snapshot and 'Snapshot "{0}" not found'.format(vm_snapshot) or 'No more previous snapshots available')
      elif snap.isCurrent():
          conn.close()
          raise CommandExecutionError('Cannot revert to the currently running snapshot.')
  
      domain.revertToSnapshot(snap)
      ret['reverted'] = snap.getName()
  
      if cleanup:
          delete = list()
          for p_snap in snapshots:
              if p_snap.getName() != snap.getName():
                  delete.append(p_snap.getName())
                  p_snap.delete()
              else:
                  break
          ret['deleted'] = delete
      else:
          ret['deleted'] = 'N/A'
  
      conn.close()
  
      return ret