diff --git a/backend/dataall/base/aws/cognito.py b/backend/dataall/base/aws/cognito.py index 57bd9b98f..d0bce9962 100644 --- a/backend/dataall/base/aws/cognito.py +++ b/backend/dataall/base/aws/cognito.py @@ -18,7 +18,14 @@ def get_user_emailids_from_group(self, groupName): parameter_path = f'/dataall/{envname}/cognito/userpool' ssm = boto3.client('ssm', region_name=os.getenv('AWS_REGION', 'eu-west-1')) user_pool_id = ssm.get_parameter(Name=parameter_path)['Parameter']['Value'] - cognito_user_list = self.client.list_users_in_group(UserPoolId=user_pool_id, GroupName=groupName)["Users"] + paginator = self.client.get_paginator('list_users_in_group') + pages = paginator.paginate( + UserPoolId=user_pool_id, + GroupName=groupName + ) + cognito_user_list = [] + for page in pages: + cognito_user_list += page['Users'] group_email_ids = [] attributes = [] # Make a flat list @@ -39,18 +46,23 @@ def get_user_emailids_from_group(self, groupName): return group_email_ids def list_groups(self, envname: str, region: str): + user_pool_id = None + groups = [] try: parameter_path = f'/dataall/{envname}/cognito/userpool' ssm = boto3.client('ssm', region_name=region) user_pool_id = ssm.get_parameter(Name=parameter_path)['Parameter']['Value'] cognito = boto3.client('cognito-idp', region_name=region) - groups = cognito.list_groups(UserPoolId=user_pool_id)['Groups'] + paginator = cognito.get_paginator('list_groups') + pages = paginator.paginate(UserPoolId=user_pool_id) + for page in pages: + groups += [gr['GroupName'] for gr in page['Groups']] except Exception as e: log.error( f'Failed to list groups of user pool {user_pool_id} due to {e}' ) - else: - return groups + raise e + return groups def get_groups_for_user(self, user_id): return [] diff --git a/backend/dataall/core/groups/api/resolvers.py b/backend/dataall/core/groups/api/resolvers.py index 01e44beeb..d62de2b27 100644 --- a/backend/dataall/core/groups/api/resolvers.py +++ b/backend/dataall/core/groups/api/resolvers.py @@ -69,8 +69,8 @@ def list_groups(context, source, filter: dict = None): invited_group_uris = [item.groupUri for item in invited_groups] res = [] for group in groups: - if group['GroupName'] not in invited_group_uris: - res.append({"groupName": group['GroupName']}) + if group not in invited_group_uris: + res.append({"groupName": group}) return res