Skip to content

Commit ceff8aa

Browse files
committed
fix: read secret for linked provider error
1 parent 1a98a5d commit ceff8aa

File tree

1 file changed

+35
-5
lines changed

1 file changed

+35
-5
lines changed

keep/providers/providers_factory.py

+35-5
Original file line numberDiff line numberDiff line change
@@ -445,11 +445,19 @@ def get_installed_provider(
445445
BaseProvider: The instantiated provider class.
446446
"""
447447
context_manager = ContextManager(tenant_id=tenant_id)
448-
secret_manager = SecretManagerFactory.get_secret_manager(context_manager)
449-
provider_config = secret_manager.read_secret(
450-
secret_name=f"{tenant_id}_{provider_type}_{provider_id}",
451-
is_json=True,
452-
)
448+
449+
# check if the provider is linked,
450+
# if provider is linked it means the provider config is not stored in the secret manager
451+
if not ProvidersFactory.check_if_linked_providers(tenant_id, provider_id, provider_type):
452+
logger.debug("Provider not linked, trying to read secret from secret manager")
453+
secret_manager = SecretManagerFactory.get_secret_manager(context_manager)
454+
provider_config = secret_manager.read_secret(
455+
secret_name=f"{tenant_id}_{provider_type}_{provider_id}",
456+
is_json=True,
457+
)
458+
else:
459+
logger.debug("Provider linked, no need to read secret from secret manager")
460+
provider_config = {"authentication": {}}
453461
provider_class = ProvidersFactory.get_provider(
454462
context_manager=context_manager,
455463
provider_id=provider_id,
@@ -501,3 +509,25 @@ def get_linked_providers(tenant_id: str) -> list[Provider]:
501509
_linked_providers.append(provider)
502510

503511
return _linked_providers
512+
513+
@staticmethod
514+
def check_if_linked_providers(tenant_id: str, provider_id: str, provider_type: str) -> bool:
515+
"""
516+
Check if the provider is linked.
517+
518+
Args:
519+
tenant_id (str): The tenant id.
520+
provider_id (str): The provider id.
521+
provider_type (str): The provider type.
522+
523+
Returns:
524+
bool: True if the provider is linked, otherwise False.
525+
"""
526+
linked_providers = get_linked_providers(tenant_id)
527+
528+
for p in linked_providers:
529+
p_type, p_id, _ = p
530+
if p_id == provider_id and p_type == provider_type:
531+
return True
532+
533+
return False

0 commit comments

Comments
 (0)