Skip to content

Commit 8f8b512

Browse files
committed
Add method to change visit end time in multigrid controller and all child rsync processes
1 parent 1cdae65 commit 8f8b512

File tree

3 files changed

+35
-0
lines changed

3 files changed

+35
-0
lines changed

src/murfey/client/multigrid_control.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,11 @@ def finalise(self):
149149
for p in self.rsync_processes.keys():
150150
self._finalise_rsyncer(p)
151151

152+
def update_visit_time(self, new_end_time: datetime):
153+
self.visit_end_time = new_end_time
154+
for rp in self.rsync_processes.values():
155+
rp._end_time = new_end_time
156+
152157
def _start_rsyncer_multigrid(
153158
self,
154159
source: Path,

src/murfey/instrument_server/api.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,13 @@ def stop_multigrid_watcher(session_id: MurfeySessionID, label: str):
214214
watchers[label].request_stop()
215215

216216

217+
@router.post("/sessions/{session_id}/multigrid_controller/visit_end_time/{timestamp}")
218+
def update_multigrid_controller_visit_end_time(
219+
session_id: MurfeySessionID, timestamp: float
220+
):
221+
controllers[session_id].update_visit_time(datetime.fromtimestamp(timestamp))
222+
223+
217224
class RsyncerSource(BaseModel):
218225
source: Path
219226
label: str

src/murfey/server/api/instrument.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,29 @@ async def finalise_session(session_id: MurfeySessionID, db=murfey_db):
394394
return data
395395

396396

397+
@router.post("/sessions/{session_id}/multigrid_controller/visit_end_time/{timestamp}")
398+
async def update_visit_end_time(
399+
session_id: MurfeySessionID, timestamp: float, db=murfey_db
400+
):
401+
data = {}
402+
instrument_name = (
403+
db.exec(select(Session).where(Session.id == session_id)).one().instrument_name
404+
)
405+
machine_config = get_machine_config(instrument_name=instrument_name)[
406+
instrument_name
407+
]
408+
if machine_config.instrument_server_url:
409+
async with aiohttp.ClientSession() as clientsession:
410+
async with clientsession.post(
411+
f"{machine_config.instrument_server_url}{url_path_for('api.router', 'update_multigrid_controller_visit_end_time', session_id=session_id, timestamp=timestamp)}",
412+
headers={
413+
"Authorization": f"Bearer {instrument_server_tokens[session_id]['access_token']}"
414+
},
415+
) as resp:
416+
data = await resp.json()
417+
return data
418+
419+
397420
@router.post("/sessions/{session_id}/abandon_session")
398421
async def abandon_session(session_id: MurfeySessionID, db=murfey_db):
399422
data = {}

0 commit comments

Comments
 (0)