diff --git a/tracardi/domain/bridge.py b/tracardi/domain/bridge.py index 2f1a600f..8fc7c4e4 100644 --- a/tracardi/domain/bridge.py +++ b/tracardi/domain/bridge.py @@ -1,7 +1,9 @@ +from hashlib import md5 from typing import Optional from tracardi.domain.named_entity import NamedEntity from tracardi.service.plugin.domain.register import Form +from tracardi.service.utils.hasher import uuid4_from_md5 class Bridge(NamedEntity): @@ -10,3 +12,7 @@ class Bridge(NamedEntity): config: Optional[dict] = {} form: Optional[Form] = None manual: Optional[str] = None + + def get_id_in_context_of_tenant(self, context) -> str: + id_in_context_of_tenant = md5(f"{self.id}-{context.tenant}".encode()).hexdigest() + return uuid4_from_md5(id_in_context_of_tenant) diff --git a/tracardi/service/storage/mysql/service/bridge_service.py b/tracardi/service/storage/mysql/service/bridge_service.py index 91bc0745..e3fbd1ed 100644 --- a/tracardi/service/storage/mysql/service/bridge_service.py +++ b/tracardi/service/storage/mysql/service/bridge_service.py @@ -1,5 +1,6 @@ from typing import List +from tracardi.context import get_context from tracardi.domain.bridge import Bridge from tracardi.exceptions.log_handler import get_logger from tracardi.service.storage.mysql.mapping.bridge_mapping import map_to_bridge_table @@ -32,14 +33,18 @@ async def replace(self, bridge: Bridge): @staticmethod async def bootstrap(default_bridges: List[Bridge]): + context = get_context() bs = BridgeService() for bridge in default_bridges: + bridge.id = bridge.get_id_in_context_of_tenant(context) await bs.insert(bridge) logger.info(f"Bridge {bridge.name} installed.") @staticmethod async def reinstall(default_bridges: List[Bridge]): + context = get_context() bs = BridgeService() for bridge in default_bridges: + bridge.id = bridge.get_id_in_context_of_tenant(context) await bs.replace(bridge) logger.info(f"Bridge {bridge.name} reinstalled.")