Skip to content

Commit e4144d6

Browse files
committed
Combine database and instrument server information about rsync instances
1 parent fb55af3 commit e4144d6

File tree

1 file changed

+29
-3
lines changed

1 file changed

+29
-3
lines changed

src/murfey/server/api/instrument.py

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
from murfey.server.murfey_db import murfey_db
2424
from murfey.util import secure_path
2525
from murfey.util.config import get_machine_config
26-
from murfey.util.db import Session, SessionProcessingParameters
26+
from murfey.util.db import RsyncInstance, Session, SessionProcessingParameters
2727
from 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")
442447
async 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

Comments
 (0)