Skip to content

Commit a3096b3

Browse files
committed
Migrate app.py to use new classes
1 parent 390c130 commit a3096b3

3 files changed

Lines changed: 688 additions & 684 deletions

File tree

src/jupyterhub_cost_monitoring/app.py

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,18 @@
55
from fastapi.responses import Response
66
from prometheus_client import CONTENT_TYPE_LATEST, generate_latest
77

8+
from .aws import AWSCostExplorer
89
from .const_usage import USAGE_MAP
910
from .date_utils import get_now_date, parse_from_to_in_query_params
1011
from .logs import get_logger
1112
from .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

2715
app = FastAPI()
2816
app.add_middleware(MetricsMiddleware)
2917
logger = 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

Comments
 (0)