Skip to content

Commit a484dfc

Browse files
committed
CAIP-79 add simple caching for skd flag
1 parent 5fd1c72 commit a484dfc

2 files changed

Lines changed: 25 additions & 3 deletions

File tree

symphony/bdk/core/auth/auth_session.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ async def refresh(self):
3636
"""
3737
logger.debug("Authenticate")
3838
self._session_token = await self._authenticator.retrieve_session_token()
39-
self._key_manager_token = await self._authenticator.retrieve_key_manager_token()
39+
if await self.skd_enabled:
40+
self._key_manager_token = ""
41+
return
42+
self.key_manager_token = await self._authenticator.retrieve_key_manager_token()
4043

4144
@property
4245
async def session_token(self):

symphony/bdk/core/service/version/agent_version_service.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import re
2+
from datetime import datetime, timezone
23

34
from symphony.bdk.core.auth.auth_session import AuthSession
5+
from symphony.bdk.core.auth.jwt_helper import generate_expiration_time
46
from symphony.bdk.core.config.model.bdk_retry_config import BdkRetryConfig
57
from symphony.bdk.core.retry import retry
68
from symphony.bdk.gen.agent_api.signals_api import SignalsApi
@@ -19,12 +21,29 @@ class AgentVersionService:
1921
def __init__(self, signals_api: SignalsApi, retry_config: BdkRetryConfig):
2022
self._signals_api = signals_api
2123
self._retry_config = retry_config
24+
self._is_skd_supported = None
25+
self._expire_at = -1
2226

23-
@retry
2427
async def is_skd_supported(self) -> bool:
25-
"""
28+
""" AgentVersionService stores cached version flag.
29+
Caching interval is the same as in to session token caching.
30+
Once cache is expired it calls agent info api to update version.
31+
2632
:return: boolean flag if skd supported for agent
2733
"""
34+
if (
35+
self._is_skd_supported is not None
36+
and self._expire_at
37+
> datetime.now(timezone.utc).timestamp()
38+
):
39+
return self._is_skd_supported
40+
self._expire_at = generate_expiration_time()
41+
self._is_skd_supported = await self._get_agent_skd_support()
42+
return self._is_skd_supported
43+
44+
45+
@retry
46+
async def _get_agent_skd_support(self) -> bool:
2847
try:
2948
agent_info = await self._signals_api.v1_info_get()
3049
if not agent_info or not agent_info.version:

0 commit comments

Comments
 (0)