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

def is_replication_enabled(host=None, core_name=None):
    '''
    SLAVE CALL
    Check for errors, and determine if a slave is replicating or not.

    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.

    Return : dict<str,obj>::

        {'success':boolean, 'data':dict, 'errors':list, 'warnings':list}

    CLI Example:

    .. code-block:: bash

        salt '*' solr.is_replication_enabled music
    '''
    ret = _get_return_dict()
    success = True
    # since only slaves can call this let's check the config:
    if _is_master() and host is None:
        errors = ['Only "slave" minions can run "is_replication_enabled"']
        return ret.update({'success': False, 'errors': errors})

    # define a convenience method so we don't duplicate code
    def _checks(ret, success, resp, core):
        if response['success']:
            slave = resp['data']['details']['slave']
            # we need to initialize this to false in case there is an error
            # on the master and we can't get this info.
            enabled = 'false'
            master_url = slave['masterUrl']
            # check for errors on the slave
            if 'ERROR' in slave:
                success = False
                err = "{0}: {1} - {2}".format(core, slave['ERROR'], master_url)
                resp['errors'].append(err)
                # if there is an error return everything
                data = slave if core is None else {core: {'data': slave}}
            else:
                enabled = slave['masterDetails']['master'][
                    'replicationEnabled']
                # if replication is turned off on the master, or polling is
                # disabled we need to return false. These may not be errors,
                # but the purpose of this call is to check to see if the slaves
                # can replicate.
            if enabled == 'false':
                resp['warnings'].append("Replication is disabled on master.")
                success = False
            if slave['isPollingDisabled'] == 'true':
                success = False
                resp['warning'].append("Polling is disabled")
            # update the return
            ret = _update_return_dict(ret, success, data,
                                        resp['errors'], resp['warnings'])
        return (ret, success)

    if _get_none_or_value(core_name) is None and _check_for_cores():
        for name in __opts__['solr.cores']:
            response = _replication_request('details', host=host,
                                            core_name=name)
            ret, success = _checks(ret, success, response, name)
    else:
        response = _replication_request('details', host=host,
                                        core_name=core_name)
        ret, success = _checks(ret, success, response, core_name)

    return ret