55from fastapi .responses import Response
66from prometheus_client import CONTENT_TYPE_LATEST , generate_latest
77
8+ from .aws import AWSCostExplorer
89from .const_usage import USAGE_MAP
910from .date_utils import get_now_date , parse_from_to_in_query_params
1011from .logs import get_logger
1112from .metrics import MetricsMiddleware
12- from .prometheus import (
13- query_usage ,
14- query_user_groups ,
15- query_users_with_multiple_groups ,
16- query_users_with_no_groups ,
17- )
18- from .query_cost_aws import (
19- query_hub_names ,
20- query_total_costs ,
21- query_total_costs_per_component ,
22- query_total_costs_per_group ,
23- query_total_costs_per_hub ,
24- query_total_costs_per_user ,
25- )
13+ from .prometheus import Prometheus
2614
2715app = FastAPI ()
2816app .add_middleware (MetricsMiddleware )
2917logger = get_logger (__name__ )
18+ prometheus = Prometheus ()
19+ aws_ce = AWSCostExplorer (prometheus = prometheus )
3020
3121
3222@app .get ("/" )
@@ -58,7 +48,7 @@ def hub_names(
5848 date_range = parse_from_to_in_query_params (from_date , to_date )
5949
6050 try :
61- return query_hub_names (date_range )
51+ return aws_ce . query_hub_names (date_range )
6252 except Exception as e :
6353 raise HTTPException (status_code = 500 , detail = f"{ e } " )
6454
@@ -90,7 +80,7 @@ def total_costs(
9080 date_range = parse_from_to_in_query_params (from_date , to_date )
9181
9282 try :
93- return query_total_costs (date_range )
83+ return aws_ce . query_total_costs (date_range )
9484 except Exception as e :
9585 raise HTTPException (status_code = 500 , detail = f"{ e } " )
9686
@@ -110,7 +100,7 @@ def user_groups(
110100 """
111101
112102 try :
113- return query_user_groups (hub , username , usergroup )
103+ return prometheus . query_user_groups (hub , username , usergroup )
114104 except requests .exceptions .HTTPError as e :
115105 response = e .response
116106 raise HTTPException (
@@ -140,7 +130,9 @@ def users_with_multiple_groups(
140130 )
141131
142132 try :
143- return query_users_with_multiple_groups (date_range , hub_name , user_name )
133+ return prometheus .query_users_with_multiple_groups (
134+ date_range , hub_name , user_name
135+ )
144136 except requests .exceptions .HTTPError as e :
145137 response = e .response
146138 raise HTTPException (
@@ -170,7 +162,7 @@ def users_with_no_groups(
170162 )
171163
172164 try :
173- return query_users_with_no_groups (date_range , hub_name , user_name )
165+ return prometheus . query_users_with_no_groups (date_range , hub_name , user_name )
174166 except requests .exceptions .HTTPError as e :
175167 response = e .response
176168 raise HTTPException (
@@ -196,7 +188,7 @@ def total_costs_per_hub(
196188 date_range = parse_from_to_in_query_params (from_date , to_date )
197189
198190 try :
199- return query_total_costs_per_hub (date_range )
191+ return aws_ce . query_total_costs_per_hub (date_range )
200192 except Exception as e :
201193 raise HTTPException (status_code = 500 , detail = f"{ e } " )
202194
@@ -226,7 +218,7 @@ def total_costs_per_component(
226218 component = None
227219
228220 try :
229- return query_total_costs_per_component (date_range , hub , component )
221+ return aws_ce . query_total_costs_per_component (date_range , hub , component )
230222 except Exception as e :
231223 raise HTTPException (status_code = 500 , detail = f"{ e } " )
232224
@@ -247,7 +239,7 @@ def total_costs_per_group(
247239 date_range = parse_from_to_in_query_params (from_date , to_date )
248240
249241 try :
250- return query_total_costs_per_group (date_range )
242+ return aws_ce . query_total_costs_per_group (date_range )
251243 except requests .exceptions .HTTPError as e :
252244 response = e .response
253245 raise HTTPException (status_code = response .status_code , detail = response .text )
@@ -316,7 +308,7 @@ def costs_per_user(
316308 results = []
317309 for ug in usergroup :
318310 try :
319- per_user_costs = query_total_costs_per_user (
311+ per_user_costs = aws_ce . query_total_costs_per_user (
320312 date_range , hub , component , user , ug , limit
321313 )
322314 except requests .exceptions .HTTPError as e :
@@ -359,7 +351,7 @@ def total_usage(
359351 user = None
360352
361353 try :
362- return query_usage (date_range , hub , component , user )
354+ return prometheus . query_usage (date_range , hub , component , user )
363355 except requests .exceptions .HTTPError as e :
364356 response = e .response
365357 raise HTTPException (status_code = response .status_code , detail = response .text )
0 commit comments