22
33from dataclasses import dataclass
44
5+ from renku_data_services .app_config import logging
56from renku_data_services .authz .authz import Authz
67from renku_data_services .capacity_reservation .db import CapacityReservationRepository , OccurrenceRepository
78from renku_data_services .capacity_reservation .k8s_client import CapacityReservationK8sClient
89from renku_data_services .capacity_reservation .tasks import CapacityReservationTasks
910from renku_data_services .crc .db import ClusterRepository
1011from renku_data_services .data_tasks .config import Config
1112from renku_data_services .k8s .clients import K8sClusterClientsPool
12- from renku_data_services .k8s .config import KubeConfigEnv
13+ from renku_data_services .k8s .config import KubeConfigEnv , get_clusters
1314from renku_data_services .k8s .db import K8sDbCache
1415from renku_data_services .metrics .core import StagingMetricsService
1516from renku_data_services .metrics .db import MetricsRepository
1617from renku_data_services .namespace .db import GroupRepository
17- from renku_data_services .notebooks .config import get_clusters
1818from renku_data_services .notebooks .constants import AMALTHEA_SESSION_GVK
1919from renku_data_services .project .db import ProjectRepository
20+ from renku_data_services .resource_usage .core import (
21+ DefaultResourcesRequestRecorder ,
22+ NoopResourcesRequestRecorder ,
23+ ResourceRequestsFetch ,
24+ ResourcesRequestRecorder ,
25+ )
26+ from renku_data_services .resource_usage .db import ResourceRequestsRepo
2027from renku_data_services .search .db import SearchUpdatesRepo
2128from renku_data_services .session .db import SessionRepository
2229from renku_data_services .session .tasks import SessionTasks
2532from renku_data_services .users .kc_api import IKeycloakAPI , KeycloakAPI
2633from renku_data_services .users .models import UnsavedUserInfo
2734
35+ logger = logging .getLogger (__file__ )
36+
2837
2938@dataclass
3039class DependencyManager :
@@ -40,6 +49,7 @@ class DependencyManager:
4049 kc_api : IKeycloakAPI
4150 session_tasks : SessionTasks
4251 capacity_reservation_tasks : CapacityReservationTasks
52+ resource_requests_recorder : ResourcesRequestRecorder
4353
4454 @classmethod
4555 def from_env (cls , cfg : Config | None = None ) -> "DependencyManager" :
@@ -83,10 +93,11 @@ def from_env(cls, cfg: Config | None = None) -> "DependencyManager":
8393 session_tasks = SessionTasks (session_environment_repo = session_environment_repo )
8494 cluster_repo = ClusterRepository (session_maker = cfg .db .async_session_maker )
8595 k8s_db_cache = K8sDbCache (cfg .db .async_session_maker )
96+ default_kubeconfig = KubeConfigEnv ()
8697 k8s_client = K8sClusterClientsPool (
8798 lambda : get_clusters (
8899 kube_conf_root_dir = cfg .k8s_config_root ,
89- default_kubeconfig = KubeConfigEnv () ,
100+ default_kubeconfig = default_kubeconfig ,
90101 cluster_repo = cluster_repo ,
91102 cache = k8s_db_cache ,
92103 kinds_to_cache = [AMALTHEA_SESSION_GVK ],
@@ -100,6 +111,16 @@ def from_env(cls, cfg: Config | None = None) -> "DependencyManager":
100111 ),
101112 k8s_client = cr_k8s_client ,
102113 )
114+
115+ resource_requests_recorder : ResourcesRequestRecorder
116+ if cfg .enable_resource_request_tracking :
117+ resource_requests_recorder = DefaultResourcesRequestRecorder (
118+ repo = ResourceRequestsRepo (cfg .db .async_session_maker ), fetch = ResourceRequestsFetch (k8s_client )
119+ )
120+ else :
121+ logger .warning ("Resource request tracking is disabled!" )
122+ resource_requests_recorder = NoopResourcesRequestRecorder ()
123+
103124 kc_api : IKeycloakAPI
104125 if cfg .dummy_stores :
105126 dummy_users = [
@@ -127,4 +148,5 @@ def from_env(cls, cfg: Config | None = None) -> "DependencyManager":
127148 kc_api = kc_api ,
128149 session_tasks = session_tasks ,
129150 capacity_reservation_tasks = capacity_reservation_tasks ,
151+ resource_requests_recorder = resource_requests_recorder ,
130152 )
0 commit comments