':returns: item_list - list of IAM Groups.
: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:
        try:
            boto3_iam_resource = connect(account, 'boto3.iam.resource')
            managed_policies = all_managed_policies(boto3_iam_resource)
            iam = connect(account, 'iam')
            groups = self.get_all_groups(iam)
        except Exception as e:
            exc = BotoConnectionIssue(str(e), 'iamgroup', account, None)
            self.slurp_exception((self.index, account, 'universal'), exc, exception_map, source='{}-watcher'.format(self.index))
            continue
        for group in groups:
            app.logger.debug(('Slurping    %s    (%s)    from    %s' % (self.i_am_singular, group.group_name, account)))
            if self.check_ignore_list(group.group_name):
                continue
            item_config = {'group': dict(group), 'grouppolicies': {}, 'users': {}}
            if (group.arn in managed_policies):
                item_config['managed_policies'] = managed_policies.get(group.arn)
            group_policies = self.get_all_group_policies(iam, group.group_name)
            for policy_name in group_policies:
                policy = self.wrap_aws_rate_limited_call(iam.get_group_policy, group.group_name, policy_name)
                policy = policy.policy_document
                policy = urllib.unquote(policy)
                try:
                    policydict = json.loads(policy)
                except:
                    exc = InvalidAWSJSON(policy)
                    self.slurp_exception((self.index, account, 'universal', group.group_name), exc, exception_map, source='{}-watcher'.format(self.index))
                item_config['grouppolicies'][policy_name] = dict(policydict)
            group_users = self.get_all_group_users(iam, group['group_name'])
            for user in group_users:
                item_config['users'][user.arn] = user.user_name
            item = IAMGroupItem(account=account, name=group.group_name, config=item_config, arn=item_config.get('group', {}).get('arn'))
            item_list.append(item)
    return (item_list, exception_map)
