':returns: item_list - list of vpn connections.
:returns: exception_map - A dict where the keys are a tuple containing the
location of the exception and the value is the actual exception'

def slurp(self):

    self.prep_for_slurp()
    @iter_account_region(index=self.index, accounts=self.accounts, service_name='ec2')
    def slurp_items(**kwargs):
        item_list = []
        exception_map = {}
        kwargs['exception_map'] = exception_map
        app.logger.debug('Checking    {}/{}/{}'.format(self.index, kwargs['account_name'], kwargs['region']))
        all_vpns = self.describe_vpns(**kwargs)
        if all_vpns:
            app.logger.debug('Found    {}    {}'.format(len(all_vpns), self.i_am_plural))
            for vpn in all_vpns:
                tags = vpn.get('Tags', {})
                joined_tags = {}
                for tag in tags:
                    if (tag.get('Key') and tag.get('Value')):
                        joined_tags[tag['Key']] = tag['Value']
                vpn_name = joined_tags.get('Name')
                vpn_id = vpn.get('VpnConnectionId')
                if vpn_name:
                    vpn_name = '{0}    ({1})'.format(vpn_name, vpn_id)
                else:
                    vpn_name = vpn_id
                if self.check_ignore_list(vpn_name):
                    continue
                tunnels = []
                for tunnel in vpn.get('VgwTelemetry'):
                    tunnels.append({'status': tunnel.get('Status'), 'accepted_route_count': tunnel.get('AcceptedRouteCount'), 'outside_ip_address': tunnel.get('OutsideIpAddress'), 'last_status_change': tunnel.get('LastStatusChange').astimezone(tzutc()).isoformat(), 'status_message': tunnel.get('StatusMessage')})
                arn = 'arn:aws:ec2:{region}:{account_number}:vpn-connection/{vpn_id}'.format(region=kwargs['region'], account_number=kwargs['account_number'], vpn_id=vpn_id)
                config = {'name': joined_tags.get('Name'), 'arn': arn, 'id': vpn_id, 'tags': joined_tags, 'type': vpn.get('Type'), 'state': vpn.get('State'), 'tunnels': tunnels, 'vpn_gateway_id': vpn.get('VpnGatewayId'), 'customer_gateway_id': vpn.get('CustomerGatewayId')}
                item = VPNItem(region=kwargs['region'], account=kwargs['account_name'], name=vpn_name, arn=arn, config=config)
                item_list.append(item)
        return (item_list, exception_map)
    return slurp_items()
