':returns: item_list - list of subnets.
: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_subnets = self.get_all_subnets(**kwargs)
        if all_subnets:
            app.logger.debug('Found    {}    {}'.format(len(all_subnets), self.i_am_plural))
            for subnet in all_subnets:
                subnet_name = None
                for tag in subnet.get('Tags', []):
                    if (tag.get('Key') == 'Name'):
                        subnet_name = tag.get('Value')
                subnet_id = subnet.get('SubnetId')
                if subnet_name:
                    subnet_name = '{0}    ({1})'.format(subnet_name, subnet_id)
                else:
                    subnet_name = subnet_id
                if self.check_ignore_list(subnet_name):
                    continue
                arn = 'arn:aws:ec2:{region}:{account_number}:subnet/{subnet_id}'.format(region=kwargs['region'], account_number=kwargs['account_number'], subnet_id=subnet_id)
                config = {'name': subnet_name, 'arn': arn, 'id': subnet_id, 'cidr_block': subnet.get('CidrBlock'), 'availability_zone': subnet.get('AvailabilityZone'), 'defaultForAz': subnet.get('DefaultForAz'), 'mapPublicIpOnLaunch': subnet.get('MapPublicIpOnLaunch'), 'state': subnet.get('State'), 'tags': subnet.get('Tags'), 'vpc_id': subnet.get('VpcId')}
                item = SubnetItem(region=kwargs['region'], account=kwargs['account_name'], name=subnet_name, arn=arn, config=config)
                item_list.append(item)
        return (item_list, exception_map)
    return slurp_items()
