'Base URL from catalog
:param filters: Used to filter results
Filters can be:
- service: service type name such as compute, image, etc.
- region: service region name
- name: service name, only if service exists
- endpoint_type: type of endpoint such as
adminURL, publicURL, internalURL
- api_version: the version of api used to replace catalog version
- skip_path: skips the suffix path of the url and uses base URL
:rtype: string
:return: url with filters applied'

def base_url(self, filters, auth_data=None):

    if (auth_data is None):
        auth_data = self.get_auth()
    (token, _auth_data) = auth_data
    service = filters.get('service')
    region = filters.get('region')
    name = filters.get('name')
    endpoint_type = filters.get('endpoint_type', 'publicURL')
    if (service is None):
        raise exceptions.EndpointNotFound('No    service    provided')
    _base_url = None
    for ep in _auth_data['serviceCatalog']:
        if (ep['type'] == service):
            if ((name is not None) and (ep['name'] != name)):
                continue
            for _ep in ep['endpoints']:
                if ((region is not None) and (_ep['region'] == region)):
                    _base_url = _ep.get(endpoint_type)
            if (not _base_url):
                _base_url = ep['endpoints'][0].get(endpoint_type)
            break
    if (_base_url is None):
        raise exceptions.EndpointNotFound(('service:    %s,    region:    %s,    endpoint_type:    %s,    name:    %s' % (service, region, endpoint_type, name)))
    return apply_url_filters(_base_url, filters)
