Skip to content

Commit e140f35

Browse files
committed
Added backend server endpoint to check whether a multigrid controller exists
1 parent 7a14ecc commit e140f35

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

src/murfey/server/api/instrument.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import datetime
55
import logging
66
from pathlib import Path
7-
from typing import Annotated, List, Optional
7+
from typing import Annotated, Any, List, Optional
88
from urllib.parse import quote
99

1010
import aiohttp
@@ -165,6 +165,30 @@ async def start_multigrid_watcher(session_id: MurfeySessionID, db=murfey_db):
165165
return data
166166

167167

168+
@router.post("/sessions/{session_id}/multigrid_controller/status")
169+
async def check_multigrid_controller_exists(session_id: MurfeySessionID, db=murfey_db):
170+
session = db.exec(select(Session).where(Session.id == session_id)).one()
171+
instrument_name = session.instrument_name
172+
machine_config = get_machine_config(instrument_name=instrument_name)[
173+
instrument_name
174+
]
175+
if machine_config.instrument_server_url:
176+
log.debug(
177+
f"Submitting request to inspect multigrid controller for session {session_id}"
178+
)
179+
async with aiohttp.ClientSession() as clientsession:
180+
async with clientsession.post(
181+
f"{machine_config.instrument_server_url}{url_path_for('api.router', 'check_multigrid_controller_exists', session_id=session_id)}",
182+
headers={
183+
"Authorization": f"Bearer {instrument_server_tokens[session_id]['access_token']}"
184+
},
185+
) as resp:
186+
data: dict[str, Any] = await resp.json()
187+
else:
188+
data = {"detail": "No instrument server URL found"}
189+
return data
190+
191+
168192
class ProvidedProcessingParameters(BaseModel):
169193
dose_per_frame: float
170194
extract_downscale: bool = True

0 commit comments

Comments
 (0)