From 331ae92843cdd5aa3025daed40867601b370c284 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20De=20la=20Torre=20Vico?= Date: Tue, 9 Apr 2024 09:20:06 +0200 Subject: [PATCH] chore(Azure): Optimize Entra service to use async funcs (#3706) --- .../azure/services/entra/entra_service.py | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/prowler/providers/azure/services/entra/entra_service.py b/prowler/providers/azure/services/entra/entra_service.py index eac1e4f660..134065b3a1 100644 --- a/prowler/providers/azure/services/entra/entra_service.py +++ b/prowler/providers/azure/services/entra/entra_service.py @@ -1,4 +1,4 @@ -import asyncio +from asyncio import gather, get_event_loop from dataclasses import dataclass from typing import Any, List, Optional from uuid import UUID @@ -19,26 +19,30 @@ from prowler.providers.azure.lib.service.service import AzureService class Entra(AzureService): def __init__(self, provider: AzureProvider): super().__init__(GraphServiceClient, provider) - self.users = asyncio.get_event_loop().run_until_complete(self.__get_users__()) - self.authorization_policy = asyncio.get_event_loop().run_until_complete( - self.__get_authorization_policy__() - ) - self.group_settings = asyncio.get_event_loop().run_until_complete( - self.__get_group_settings__() - ) - self.security_default = asyncio.get_event_loop().run_until_complete( - self.__get_security_default__() - ) - self.named_locations = asyncio.get_event_loop().run_until_complete( - self.__get_named_locations__() - ) - self.directory_roles = asyncio.get_event_loop().run_until_complete( - self.__get_directory_roles__() - ) - self.conditional_access_policy = asyncio.get_event_loop().run_until_complete( - self.__get_conditional_access_policy__() + + loop = get_event_loop() + + # Get users first alone because it is a dependency for other attributes + self.users = loop.run_until_complete(self.__get_users__()) + + attributes = loop.run_until_complete( + gather( + self.__get_authorization_policy__(), + self.__get_group_settings__(), + self.__get_security_default__(), + self.__get_named_locations__(), + self.__get_directory_roles__(), + self.__get_conditional_access_policy__(), + ) ) + self.authorization_policy = attributes[0] + self.group_settings = attributes[1] + self.security_default = attributes[2] + self.named_locations = attributes[3] + self.directory_roles = attributes[4] + self.conditional_access_policy = attributes[5] + async def __get_users__(self): logger.info("Entra - Getting users...") users = {}