diff --git a/datadog_sync/utils/base_resource.py b/datadog_sync/utils/base_resource.py index 265e6bfd..bf1bf25e 100644 --- a/datadog_sync/utils/base_resource.py +++ b/datadog_sync/utils/base_resource.py @@ -63,6 +63,9 @@ class ResourceConfig: tagging_config: Optional[TaggingConfig] = None async_lock: Optional[Lock] = None + async def init_async(self) -> None: + self.async_lock = Lock() + def __post_init__(self) -> None: self.build_excluded_attributes() if not self.concurrent: @@ -84,6 +87,9 @@ def __init__(self, config: Configuration) -> None: self.resource_type ) + async def init_async(self): + await self.resource_config.init_async() + @abc.abstractmethod async def get_resources(self, client: CustomClient) -> List[Dict]: pass diff --git a/datadog_sync/utils/configuration.py b/datadog_sync/utils/configuration.py index 90d76bf3..c69152cc 100644 --- a/datadog_sync/utils/configuration.py +++ b/datadog_sync/utils/configuration.py @@ -50,6 +50,8 @@ class Configuration(object): async def init_async(self, cmd: Command): await self.source_client._init_session() await self.destination_client._init_session() + for resource in self.resources.values(): + await resource.init_async() # Validate the clients. For import we only validate the source client # For sync/diffs we validate the destination client.