def asset_parser(context_asset, host_name='host', username='username',
    password='password', auth=None, **kwargs):
    """Take in a context asset and break it into params for an ``__init__`` call on BasicRestEndpoint
    
    Args:
        context_asset: Context asset object
        host_name: host key name to grab from asset, defaults to ``host``
        username: username key name to grab from asset, defaults to ``username``
        password: password key name to grab from asset, defaults to ``password``
        auth: optional auth argument to override username/password. Set to None to disable auth
        kwargs: optional keyword args to overwrite the parameters with
    
    Returns:
        Dictionary of key args to use with \\*\\*{} in the ``super().__init__()`` of a BasicRestEndpoint

    """
    host = context_asset.get(host_name)
    if host is not None:
        host = host.strip(' /')
        if 'port' in context_asset:
            host = '{}:{}'.format(host, context_asset['port'])
    params = {'host': host, 'verify': context_asset.get('verify_ssl', True),
        'proxy': context_asset.get('http_proxy')}
    if auth == 'basic':
        params['auth'] = context_asset[username], context_asset[password]
    elif auth:
        params['auth'] = auth
    params.update(kwargs)
    return params
