<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def _format_url(handler, host=None, core_name=None, extra=None):
    '''
    PRIVATE METHOD
    Formats the URL based on parameters, and if cores are used or not

    handler : str
        The request handler to hit.
    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.
    extra : list<str> ([])
        A list of name value pairs in string format. e.g. ['name=value']

    Return: str
        Fully formatted URL (http://<host>:<port>/solr/<handler>?wt=json&<extra>)
    '''
    extra = [] if extra is None else extra
    if _get_none_or_value(host) is None or host == 'None':
        host = __salt__['config.option']('solr.host')
    port = __salt__['config.option']('solr.port')
    baseurl = __salt__['config.option']('solr.baseurl')
    if _get_none_or_value(core_name) is None:
        if not extra:
            return "http://{0}:{1}{2}/{3}?wt=json".format(
                    host, port, baseurl, handler)
        else:
            return "http://{0}:{1}{2}/{3}?wt=json&{4}".format(
                    host, port, baseurl, handler, "&".join(extra))
    else:
        if not extra:
            return "http://{0}:{1}{2}/{3}/{4}?wt=json".format(
                    host, port, baseurl, core_name, handler)
        else:
            return "http://{0}:{1}{2}/{3}/{4}?wt=json&{5}".format(
                    host, port, baseurl, core_name, handler, "&".join(extra))