':returns: item_list - list of cloud_trail items.
: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()
    item_list = []
    exception_map = {}
    from security_monkey.common.sts_connect import connect
    for account in self.accounts:
        for region in regions():
            app.logger.debug('Checking    {}/{}/{}'.format(self.index, account, region.name))
            try:
                cloud_trail = connect(account, 'boto3.cloudtrail.client', region=region)
                app.logger.debug('Cloud    Trail    is:    {}'.format(cloud_trail))
                response = self.wrap_aws_rate_limited_call(cloud_trail.describe_trails)
                trails = response.get('trailList', [])
            except Exception as e:
                app.logger.debug('Exception    found:    {}'.format(e))
                if (region.name not in TROUBLE_REGIONS):
                    exc = BotoConnectionIssue(str(e), self.index, account, region.name)
                    self.slurp_exception((self.index, account, region.name), exc, exception_map)
                continue
            app.logger.debug('Found    {}    {}.'.format(len(trails), self.i_am_plural))
            for trail in trails:
                name = trail.get('Name')
                home_region = trail.get('HomeRegion')
                trail_enabled = ''
                try:
                    get_trail_status = self.wrap_aws_rate_limited_call(cloud_trail.get_trail_status, Name=trail['TrailARN'])
                    trail_enabled = get_trail_status['IsLogging']
                except Exception as e:
                    app.logger.debug('Issues    getting    the    status    of    cloudtrail')
                    location = (self.index, account, region.name, name)
                    store_exception('cloudtrail', location, e)
                if self.check_ignore_list(name):
                    continue
                item_config = {'trail': name, 'trail_status': trail_enabled, 's3_bucket_name': trail['S3BucketName'], 's3_key_prefix': trail.get('S3KeyPrefix'), 'sns_topic_name': trail.get('SnsTopicName'), 'include_global_service_events': trail.get('IncludeGlobalServiceEvents', False), 'is_multi_region_trail': trail.get('IsMultiRegionTrail', False), 'home_region': home_region, 'trail_arn': trail.get('TrailARN'), 'log_file_validation_enabled': trail.get('LogFileValidationEnabled', False), 'cloudwatch_logs_log_group_arn': trail.get('CloudWatchLogsLogGroupArn'), 'cloudwatch_logs_role_arn': trail.get('CloudWatchLogsRoleArn'), 'kms_key_id': trail.get('KmsKeyId')}
                item = CloudTrailItem(region=home_region, account=account, name=name, arn=trail.get('TrailARN'), config=item_config)
                item_list.append(item)
    return (item_list, exception_map)
