docs: def backup(host=None, core_name=None, append_core_to_path=False):
      '''
      Tell solr make a backup.  This method can be mis-leading since it uses the
      backup API.  If an error happens during the backup you are not notified.
      The status: 'OK' in the response simply means that solr received the
      request successfully.
  
      host : str (None)
          The solr host to query. __opts__['host'] is default.
      core_name : str (None)
          The name of the solr core if using cores. Leave this blank if you are
          not using cores or if you want to check all cores.
      append_core_to_path : boolean (False)
          If True add the name of the core to the backup path. Assumes that
          minion backup path is not None.
  
      Return : dict<str,obj>::
  
          {'success':boolean, 'data':dict, 'errors':list, 'warnings':list}
  
      CLI Example:
  
      .. code-block:: bash
  
          salt '*' solr.backup music
      '''
      path = __opts__['solr.backup_path']
      num_backups = __opts__['solr.num_backups']
      if path is not None:
          if not path.endswith(os.path.sep):
              path += os.path.sep
  
      ret = _get_return_dict()
      if _get_none_or_value(core_name) is None and _check_for_cores():
          success = True
          for name in __opts__['solr.cores']:
              params = []
              if path is not None:
                  path = path + name if append_core_to_path else path
                  params.append("&location={0}".format(path + name))
              params.append("&numberToKeep={0}".format(num_backups))
              resp = _replication_request('backup', host=host, core_name=name,
                                          params=params)
              if not resp['success']:
                  success = False
              data = {name: {'data': resp['data']}}
              ret = _update_return_dict(ret, success, data,
                                          resp['errors'], resp['warnings'])
          return ret
      else:
          if core_name is not None and path is not None:
              if append_core_to_path:
                  path += core_name
          if path is not None:
              params = ["location={0}".format(path)]
          params.append("&numberToKeep={0}".format(num_backups))
          resp = _replication_request('backup', host=host, core_name=core_name,
                                      params=params)
          return resp