|
19 | 19 | from renku_data_services.k8s.constants import DEFAULT_K8S_CLUSTER, ClusterId |
20 | 20 | from renku_data_services.k8s.db import K8sDbCache |
21 | 21 | from renku_data_services.k8s.models import GVK, APIObjectInCluster, K8sObject, K8sObjectFilter |
| 22 | +from renku_data_services.notebooks.constants import AMALTHEA_SESSION_GVK |
22 | 23 | from renku_data_services.notebooks.crs import State |
23 | 24 |
|
24 | 25 | logger = logging.getLogger(__name__) |
@@ -189,8 +190,32 @@ async def collect_metrics( |
189 | 190 | rp_repo: ResourcePoolQueryRepository, |
190 | 191 | ) -> None: |
191 | 192 | """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 |
193 | 207 |
|
| 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) |
194 | 219 | if event_type == "DELETED": |
195 | 220 | # session stopping |
196 | 221 | await metrics.session_stopped(user=user, metadata={"session_id": new_obj.meta.name}) |
|
0 commit comments