2323from murfey .server .murfey_db import murfey_db
2424from murfey .util import secure_path
2525from murfey .util .config import get_machine_config
26- from murfey .util .db import Session , SessionProcessingParameters
26+ from murfey .util .db import RsyncInstance , Session , SessionProcessingParameters
2727from murfey .util .models import File , MultigridWatcherSetup
2828
2929# Create APIRouter class object
@@ -436,16 +436,24 @@ class RSyncerInfo(BaseModel):
436436 num_files_in_queue : int
437437 alive : bool
438438 stopping : bool
439+ destination : str
440+ tag : str
441+ files_transferred : int
442+ files_counted : int
443+ transferring : bool
439444
440445
441446@router .get ("/instruments/{instrument_name}/sessions/{session_id}/rsyncer_info" )
442447async def get_rsyncer_info (
443- instrument_name : str , session_id : MurfeySessionID
448+ instrument_name : str , session_id : MurfeySessionID , db = murfey_db
444449) -> List [RSyncerInfo ]:
445450 data = []
446451 machine_config = get_machine_config (instrument_name = instrument_name )[
447452 instrument_name
448453 ]
454+ rsync_instances = db .exec (
455+ select (RsyncInstance ).where (RsyncInstance .session_id == session_id )
456+ ).all ()
449457 if machine_config .instrument_server_url :
450458 async with lock :
451459 token = instrument_server_tokens [session_id ]["access_token" ]
@@ -455,4 +463,22 @@ async def get_rsyncer_info(
455463 headers = {"Authorization" : f"Bearer { token } " },
456464 ) as resp :
457465 data = await resp .json ()
458- return data
466+ combined_data = []
467+ data_source_lookup = {d .source : d for d in data }
468+ for ri in rsync_instances :
469+ d = data_source_lookup .get (ri .source , {})
470+ combined_data .append (
471+ RSyncerInfo (
472+ source = ri .source ,
473+ num_files_transferred = d .get ("num_files_transferred" , 0 ),
474+ num_files_in_queue = d .get ("num_files_in_queue" , 0 ),
475+ alive = d .get ("alive" , False ),
476+ stopping = d .get ("stopping" , True ),
477+ destination = ri .destination ,
478+ tag = ri .tag ,
479+ files_transferred = ri .files_transferred ,
480+ files_counted = ri .files_counted ,
481+ transferring = ri .transferring ,
482+ )
483+ )
484+ return combined_data
0 commit comments