Skip to content

Commit ffb6d8d

Browse files
committed
Move prometheus update endpoints
1 parent 0b9c459 commit ffb6d8d

File tree

6 files changed

+92
-134
lines changed

6 files changed

+92
-134
lines changed

src/murfey/client/multigrid_control.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from murfey.client.tui.screens import determine_default_destination
2222
from murfey.client.watchdir import DirWatcher
2323
from murfey.server.api.file_manip import router as file_manip_router
24+
from murfey.server.api.prometheus import router as prom_router
2425
from murfey.server.api.session_control import router as session_router
2526
from murfey.server.api.workflow import router as workflow_router
2627
from murfey.server.api.workflow import spa_router as workflow_spa_router
@@ -535,7 +536,7 @@ def _start_dc(self, json, from_form: bool = False):
535536
def _increment_file_count(
536537
self, observed_files: List[Path], source: str, destination: str
537538
):
538-
url = f"{str(self._environment.url.geturl())}/visits/{str(self._environment.visit)}/increment_rsync_file_count"
539+
url = f"{str(self._environment.url.geturl())}{prom_router.url_path_for('increment_rsync_file_count', visit_name=self._environment.visit)}"
539540
num_data_files = len(
540541
[
541542
f
@@ -559,7 +560,7 @@ def _increment_transferred_files_prometheus(
559560
self, update: RSyncerUpdate, source: str, destination: str
560561
):
561562
if update.outcome is TransferResult.SUCCESS:
562-
url = f"{str(self._environment.url.geturl())}/visits/{str(self._environment.visit)}/increment_rsync_transferred_files_prometheus"
563+
url = f"{str(self._environment.url.geturl())}{prom_router.url_path_for('increment_rsync_transferred_files_prometheus', visit_name=self._environment.visit)}"
563564
data_files = (
564565
[update]
565566
if update.file_path.suffix in self._data_suffixes
@@ -588,7 +589,7 @@ def _increment_transferred_files(
588589
]
589590
if not checked_updates:
590591
return
591-
url = f"{str(self._environment.url.geturl())}/visits/{str(self._environment.visit)}/increment_rsync_transferred_files"
592+
url = f"{str(self._environment.url.geturl())}{prom_router.url_path_for('increment_rsync_transferred_files', visit_name=self._environment.visit)}"
592593
data_files = [
593594
u
594595
for u in updates

src/murfey/server/api/__init__.py

Lines changed: 1 addition & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
RsyncInstance,
1919
Session,
2020
)
21-
from murfey.util.models import ClientInfo, RsyncerInfo, RsyncerSource
21+
from murfey.util.models import ClientInfo, RsyncerSource
2222

2323
log = logging.getLogger("murfey.server.api")
2424

@@ -110,70 +110,6 @@ def register_restarted_rsyncer(
110110
db.commit()
111111

112112

113-
@router.post("/visits/{visit_name}/increment_rsync_file_count")
114-
def increment_rsync_file_count(
115-
visit_name: str, rsyncer_info: RsyncerInfo, db=murfey_db
116-
):
117-
rsync_instance = db.exec(
118-
select(RsyncInstance).where(
119-
RsyncInstance.source == rsyncer_info.source,
120-
RsyncInstance.destination == rsyncer_info.destination,
121-
RsyncInstance.session_id == rsyncer_info.session_id,
122-
)
123-
).one()
124-
rsync_instance.files_counted += rsyncer_info.increment_count
125-
db.add(rsync_instance)
126-
db.commit()
127-
db.close()
128-
prom.seen_files.labels(rsync_source=rsyncer_info.source, visit=visit_name).inc(
129-
rsyncer_info.increment_count
130-
)
131-
prom.seen_data_files.labels(rsync_source=rsyncer_info.source, visit=visit_name).inc(
132-
rsyncer_info.increment_data_count
133-
)
134-
135-
136-
@router.post("/visits/{visit_name}/increment_rsync_transferred_files")
137-
def increment_rsync_transferred_files(
138-
visit_name: str, rsyncer_info: RsyncerInfo, db=murfey_db
139-
):
140-
rsync_instance = db.exec(
141-
select(RsyncInstance).where(
142-
RsyncInstance.source == rsyncer_info.source,
143-
RsyncInstance.destination == rsyncer_info.destination,
144-
RsyncInstance.session_id == rsyncer_info.session_id,
145-
)
146-
).one()
147-
rsync_instance.files_transferred += rsyncer_info.increment_count
148-
db.add(rsync_instance)
149-
db.commit()
150-
db.close()
151-
152-
153-
@router.post("/visits/{visit_name}/increment_rsync_transferred_files_prometheus")
154-
def increment_rsync_transferred_files_prometheus(
155-
visit_name: str, rsyncer_info: RsyncerInfo, db=murfey_db
156-
):
157-
prom.transferred_files.labels(
158-
rsync_source=rsyncer_info.source, visit=visit_name
159-
).inc(rsyncer_info.increment_count)
160-
prom.transferred_files_bytes.labels(
161-
rsync_source=rsyncer_info.source, visit=visit_name
162-
).inc(rsyncer_info.bytes)
163-
prom.transferred_data_files.labels(
164-
rsync_source=rsyncer_info.source, visit=visit_name
165-
).inc(rsyncer_info.increment_data_count)
166-
prom.transferred_data_files_bytes.labels(
167-
rsync_source=rsyncer_info.source, visit=visit_name
168-
).inc(rsyncer_info.data_bytes)
169-
170-
171-
@router.post("/visits/{visit_name}/monitoring/{on}")
172-
def change_monitoring_status(visit_name: str, on: int):
173-
prom.monitoring_switch.labels(visit=visit_name)
174-
prom.monitoring_switch.labels(visit=visit_name).set(on)
175-
176-
177113
@router.get("/prometheus/{metric_name}")
178114
def inspect_prometheus_metrics(
179115
metric_name: str,

src/murfey/server/api/instrument.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
from werkzeug.utils import secure_filename
1414

1515
from murfey.server import sanitise
16-
from murfey.server.api import MurfeySessionID
1716
from murfey.server.api.auth import (
17+
MurfeySessionID,
1818
create_access_token,
1919
instrument_server_tokens,
2020
oauth2_scheme,
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
from fastapi import APIRouter, Depends
2+
from sqlmodel import select
3+
4+
import murfey.server.prometheus as prom
5+
from murfey.server.api.auth import validate_token
6+
from murfey.server.murfey_db import murfey_db
7+
from murfey.util.db import RsyncInstance
8+
from murfey.util.models import RsyncerInfo
9+
10+
router = APIRouter(
11+
prefix="/prometheus",
12+
dependencies=[Depends(validate_token)],
13+
tags=["prometheus"],
14+
)
15+
16+
17+
@router.post("/visits/{visit_name}/increment_rsync_file_count")
18+
def increment_rsync_file_count(
19+
visit_name: str, rsyncer_info: RsyncerInfo, db=murfey_db
20+
):
21+
rsync_instance = db.exec(
22+
select(RsyncInstance).where(
23+
RsyncInstance.source == rsyncer_info.source,
24+
RsyncInstance.destination == rsyncer_info.destination,
25+
RsyncInstance.session_id == rsyncer_info.session_id,
26+
)
27+
).one()
28+
rsync_instance.files_counted += rsyncer_info.increment_count
29+
db.add(rsync_instance)
30+
db.commit()
31+
db.close()
32+
prom.seen_files.labels(rsync_source=rsyncer_info.source, visit=visit_name).inc(
33+
rsyncer_info.increment_count
34+
)
35+
prom.seen_data_files.labels(rsync_source=rsyncer_info.source, visit=visit_name).inc(
36+
rsyncer_info.increment_data_count
37+
)
38+
39+
40+
@router.post("/visits/{visit_name}/increment_rsync_transferred_files")
41+
def increment_rsync_transferred_files(
42+
visit_name: str, rsyncer_info: RsyncerInfo, db=murfey_db
43+
):
44+
rsync_instance = db.exec(
45+
select(RsyncInstance).where(
46+
RsyncInstance.source == rsyncer_info.source,
47+
RsyncInstance.destination == rsyncer_info.destination,
48+
RsyncInstance.session_id == rsyncer_info.session_id,
49+
)
50+
).one()
51+
rsync_instance.files_transferred += rsyncer_info.increment_count
52+
db.add(rsync_instance)
53+
db.commit()
54+
db.close()
55+
56+
57+
@router.post("/visits/{visit_name}/increment_rsync_transferred_files_prometheus")
58+
def increment_rsync_transferred_files_prometheus(
59+
visit_name: str, rsyncer_info: RsyncerInfo, db=murfey_db
60+
):
61+
prom.transferred_files.labels(
62+
rsync_source=rsyncer_info.source, visit=visit_name
63+
).inc(rsyncer_info.increment_count)
64+
prom.transferred_files_bytes.labels(
65+
rsync_source=rsyncer_info.source, visit=visit_name
66+
).inc(rsyncer_info.bytes)
67+
prom.transferred_data_files.labels(
68+
rsync_source=rsyncer_info.source, visit=visit_name
69+
).inc(rsyncer_info.increment_data_count)
70+
prom.transferred_data_files_bytes.labels(
71+
rsync_source=rsyncer_info.source, visit=visit_name
72+
).inc(rsyncer_info.data_bytes)
73+
74+
75+
@router.post("/visits/{visit_name}/monitoring/{on}")
76+
def change_monitoring_status(visit_name: str, on: int):
77+
prom.monitoring_switch.labels(visit=visit_name)
78+
prom.monitoring_switch.labels(visit=visit_name).set(on)

src/murfey/server/demo_api.py

Lines changed: 1 addition & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@
3030
)
3131
from murfey.server import shutdown as _shutdown
3232
from murfey.server import templates
33-
from murfey.server.api import MurfeySessionID
34-
from murfey.server.api.auth import validate_token
33+
from murfey.server.api.auth import MurfeySessionID, validate_token
3534
from murfey.server.api.session_info import Visit
3635
from murfey.server.api.workflow import (
3736
DCGroupParameters,
@@ -60,15 +59,11 @@
6059
)
6160
from murfey.util.models import (
6261
ClientInfo,
63-
CurrentGainRef,
6462
FoilHoleParameters,
6563
GridSquareParameters,
66-
PostInfo,
6764
RegistrationMessage,
6865
RsyncerInfo,
6966
RsyncerSource,
70-
SessionInfo,
71-
TiltInfo,
7267
)
7368
from murfey.util.processing_params import default_spa_parameters
7469

@@ -601,30 +596,6 @@ def get_tilts(client_id: int, tilt_series_tag: str, db=murfey_db):
601596
return tilts
602597

603598

604-
@router.post("/visits/{visit_name}/{client_id}/tilt")
605-
def register_tilt(visit_name: str, client_id: int, tilt_info: TiltInfo, db=murfey_db):
606-
session_id = (
607-
db.exec(
608-
select(ClientEnvironment).where(ClientEnvironment.client_id == client_id)
609-
)
610-
.one()
611-
.session_id
612-
)
613-
tilt_series_id = (
614-
db.exec(
615-
select(TiltSeries)
616-
.where(TiltSeries.tag == tilt_info.tilt_series_tag)
617-
.where(TiltSeries.session_id == session_id)
618-
.where(TiltSeries.rsync_source == tilt_info.source)
619-
)
620-
.one()
621-
.id
622-
)
623-
tilt = Tilt(movie_path=tilt_info.movie_path, tilt_series_id=tilt_series_id)
624-
db.add(tilt)
625-
db.commit()
626-
627-
628599
@router.get("/instruments/{instrument_name}/visits_raw", response_model=List[Visit])
629600
def get_current_visits(instrument_name: str, db=murfey.server.ispyb.DB):
630601
return murfey.server.ispyb.get_all_ongoing_visits(instrument_name, db)
@@ -998,25 +969,6 @@ async def get_sessions_by_instrument_name(
998969
return sessions
999970

1000971

1001-
@router.post("/instruments/{instrument_name}/clients/{client_id}/session")
1002-
def link_client_to_session(
1003-
instrument_name: str, client_id: int, sess: SessionInfo, db=murfey_db
1004-
):
1005-
sid = sess.session_id
1006-
if sid is None:
1007-
s = Session(name=sess.session_name, instrument_name=instrument_name)
1008-
db.add(s)
1009-
db.commit()
1010-
sid = s.id
1011-
client = db.exec(
1012-
select(ClientEnvironment).where(ClientEnvironment.client_id == client_id)
1013-
).one()
1014-
client.session_id = sid
1015-
db.add(client)
1016-
db.commit()
1017-
return sid
1018-
1019-
1020972
@router.delete("/clients/{client_id}/session")
1021973
def remove_session(client_id: int, db=murfey_db):
1022974
client = db.exec(
@@ -1146,26 +1098,10 @@ async def get_tiff(visit_name: str, session_id: int, tiff_path: str, db=murfey_d
11461098
return FileResponse(path=test_path)
11471099

11481100

1149-
@router.post("/failed_client_post")
1150-
def failed_client_post(post_info: PostInfo):
1151-
log.info("Post failed")
1152-
return
1153-
1154-
11551101
@router.post("/instruments/{instrument_name}/visits/{visit}/session/{name}")
11561102
def create_session(instrument_name: str, visit: str, name: str, db=murfey_db) -> int:
11571103
s = Session(name=name, visit=visit, instrument_name=instrument_name)
11581104
db.add(s)
11591105
db.commit()
11601106
sid = s.id
11611107
return sid
1162-
1163-
1164-
@router.put("/sessions/{session_id}/current_gain_ref")
1165-
def update_current_gain_ref(
1166-
session_id: MurfeySessionID, new_gain_ref: CurrentGainRef, db=murfey_db
1167-
):
1168-
session = db.exec(select(Session).where(Session.id == session_id)).one()
1169-
session.current_gain_ref = new_gain_ref.path
1170-
db.add(session)
1171-
db.commit()

src/murfey/server/main.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import murfey.server.api.hub
2020
import murfey.server.api.instrument
2121
import murfey.server.api.processing_parameters
22+
import murfey.server.api.prometheus
23+
import murfey.server.api.session_control
2224
import murfey.server.api.session_info
2325
import murfey.server.api.spa
2426
import murfey.server.api.workflow
@@ -78,11 +80,16 @@ class Settings(BaseSettings):
7880
app.include_router(murfey.server.api.instrument.router)
7981
app.include_router(murfey.server.api.hub.router)
8082
app.include_router(murfey.server.api.processing_parameters.router)
83+
app.include_router(murfey.server.api.prometheus.router)
8184
app.include_router(murfey.server.api.file_manip.router)
85+
app.include_router(murfey.server.api.session_control.router)
86+
app.include_router(murfey.server.api.session_control.spa_router)
8287
app.include_router(murfey.server.api.session_info.router)
88+
app.include_router(murfey.server.api.session_info.correlative_router)
8389
app.include_router(murfey.server.api.session_info.spa_router)
8490
app.include_router(murfey.server.api.session_info.tomo_router)
8591
app.include_router(murfey.server.api.workflow.router)
92+
app.include_router(murfey.server.api.workflow.correlative_router)
8693
app.include_router(murfey.server.api.workflow.spa_router)
8794
app.include_router(murfey.server.api.workflow.tomo_router)
8895
app.include_router(murfey.server.websocket.ws)

0 commit comments

Comments
 (0)