Skip to content

Commit 167bceb

Browse files
authored
fix: dispatch metrics by k8s kind (#1368)
Closes #915.
1 parent d978816 commit 167bceb

1 file changed

Lines changed: 26 additions & 1 deletion

File tree

  • components/renku_data_services/k8s/watcher

components/renku_data_services/k8s/watcher/core.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from renku_data_services.k8s.constants import DEFAULT_K8S_CLUSTER, ClusterId
2020
from renku_data_services.k8s.db import K8sDbCache
2121
from renku_data_services.k8s.models import GVK, APIObjectInCluster, K8sObject, K8sObjectFilter
22+
from renku_data_services.notebooks.constants import AMALTHEA_SESSION_GVK
2223
from renku_data_services.notebooks.crs import State
2324

2425
logger = logging.getLogger(__name__)
@@ -189,8 +190,32 @@ async def collect_metrics(
189190
rp_repo: ResourcePoolQueryRepository,
190191
) -> None:
191192
"""Track product metrics."""
192-
user = APIUser(id=user_id)
193+
# Dispatch metric collection by kind
194+
match new_obj.meta.gvk:
195+
case gvk if gvk == AMALTHEA_SESSION_GVK:
196+
await __collect_session_metrics(
197+
previous_obj=previous_obj,
198+
new_obj=new_obj,
199+
event_type=event_type,
200+
user_id=user_id,
201+
metrics=metrics,
202+
rp_repo=rp_repo,
203+
)
204+
case _:
205+
# NOTE: at the moment, we only collect metrics on sessions
206+
pass
193207

208+
209+
async def __collect_session_metrics(
210+
previous_obj: K8sObject | None,
211+
new_obj: APIObjectInCluster,
212+
event_type: str,
213+
user_id: str,
214+
metrics: MetricsService,
215+
rp_repo: ResourcePoolQueryRepository,
216+
) -> None:
217+
"""Track product metrics for sessions."""
218+
user = APIUser(id=user_id)
194219
if event_type == "DELETED":
195220
# session stopping
196221
await metrics.session_stopped(user=user, metadata={"session_id": new_obj.meta.name})

0 commit comments

Comments
 (0)