':returns: item_list - list of dhcp option sets.
: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']))
        dhcp_option_sets = self.describe_dhcp_options(**kwargs)
        if dhcp_option_sets:
            app.logger.debug('Found    {}    {}'.format(len(dhcp_option_sets), self.i_am_plural))
            for dhcpopt in dhcp_option_sets:
                dhcpopt_id = dhcpopt.get('DhcpOptionsId')
                if self.check_ignore_list(dhcpopt_id):
                    continue
                dhcpopt_configurations = dhcpopt.get('DhcpConfigurations', [])
                config = {'id': dhcpopt_id}
                for option in dhcpopt_configurations:
                    key = option['Key']
                    values = option['Values']
                    if (len(values) == 1):
                        config[key] = values[0]['Value']
                    else:
                        config[key] = []
                        for val in values:
                            config[key].append(val['Value'])
                item = DHCPItem(region=kwargs['region'], account=kwargs['account_name'], name=dhcpopt_id, config=config)
                item_list.append(item)
        return (item_list, exception_map)
    return slurp_items()
