From b2c88ea5cebb46f5af8701573079cf2d834254f2 Mon Sep 17 00:00:00 2001 From: Eu Pin Tien Date: Thu, 30 Jan 2025 11:26:42 +0000 Subject: [PATCH 1/2] Replaced server API endpoint calls to '/machine/' with 'instruments/{instrument_name}/machine' --- src/murfey/cli/transfer.py | 10 ++++++++-- src/murfey/client/tui/app.py | 5 ++++- src/murfey/client/tui/screens.py | 26 ++++++++++++++------------ 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/src/murfey/cli/transfer.py b/src/murfey/cli/transfer.py index 4b23793c4..8fd49578e 100644 --- a/src/murfey/cli/transfer.py +++ b/src/murfey/cli/transfer.py @@ -10,11 +10,13 @@ from rich.prompt import Confirm from murfey.client import read_config +from murfey.util.config import MachineConfig def run(): config = read_config() - known_server = config["Murfey"].get("server") + known_server = config["Murfey"].get("server", "") + instrument_name = config["Murfey"].get("instrument_name", "") parser = argparse.ArgumentParser(description="Transfer using a remote rsync daemon") @@ -35,7 +37,11 @@ def run(): console = Console() murfey_url = urlparse(args.server, allow_fragments=False) - machine_data = requests.get(f"{murfey_url.geturl()}/machine").json() + machine_data = MachineConfig( + requests.get( + f"{murfey_url.geturl()}/instruments/{instrument_name}/machine" + ).json() + ) if Path(args.source or ".").resolve() in machine_data.data_directories: console.print("[red]Source directory is the base directory, exiting") return diff --git a/src/murfey/client/tui/app.py b/src/murfey/client/tui/app.py index 8b43cc5c7..a50bcee46 100644 --- a/src/murfey/client/tui/app.py +++ b/src/murfey/client/tui/app.py @@ -46,6 +46,7 @@ ReactiveType = TypeVar("ReactiveType") token = read_config()["Murfey"].get("token", "") +instrument_name = read_config()["Murfey"].get("instrument_name", "") requests.get = partial(requests.get, headers={"Authorization": f"Bearer {token}"}) requests.post = partial(requests.post, headers={"Authorization": f"Bearer {token}"}) @@ -154,7 +155,9 @@ def _start_rsyncer_multigrid( ): log.info(f"starting multigrid rsyncer: {source}") destination_overrides = destination_overrides or {} - machine_data = requests.get(f"{self._environment.url.geturl()}/machine").json() + machine_data = requests.get( + f"{self._environment.url.geturl()}/instruments/{instrument_name}/machine" + ).json() if destination_overrides.get(source): destination = destination_overrides[source] + f"/{extra_directory}" else: diff --git a/src/murfey/client/tui/screens.py b/src/murfey/client/tui/screens.py index 2d278bb88..4d9ded7e0 100644 --- a/src/murfey/client/tui/screens.py +++ b/src/murfey/client/tui/screens.py @@ -64,6 +64,7 @@ ReactiveType = TypeVar("ReactiveType") token = read_config()["Murfey"].get("token", "") +instrument_name = read_config()["Murfey"].get("instrument_name", "") requests.get = partial(requests.get, headers={"Authorization": f"Bearer {token}"}) requests.post = partial(requests.post, headers={"Authorization": f"Bearer {token}"}) @@ -261,8 +262,9 @@ def __init__( self._context = SPAModularContext def compose(self): + machine_data = requests.get( - f"{self.app._environment.url.geturl()}/machine" + f"{self.app._environment.url.geturl()}/instruments/{instrument_name}/machine" ).json() self._dir_tree = _DirectoryTree( str(self._selected_dir), @@ -311,7 +313,7 @@ def _add_directory(self, directory: str, add_destination: bool = True): return self.app._environment.sources.append(source) machine_data = requests.get( - f"{self.app._environment.url.geturl()}/machine" + f"{self.app._environment.url.geturl()}/instruments/{instrument_name}/machine" ).json() self.app._default_destinations[source] = ( f"{machine_data.get('rsync_module') or 'data'}/{datetime.now().year}" @@ -701,7 +703,7 @@ def on_button_pressed(self, event: Button.Pressed): ) log.info(f"Posted visit registration: {response.status_code}") machine_data = requests.get( - f"{self.app._environment.url.geturl()}/machine" + f"{self.app._environment.url.geturl()}/instruments/{instrument_name}/machine" ).json() if self._switch_status: @@ -768,12 +770,16 @@ def on_button_pressed(self, event: Button.Pressed): ) log.info(f"Posted visit registration: {response.status_code}") machine_data = requests.get( - f"{self.app._environment.url.geturl()}/machine" + f"{self.app._environment.url.geturl()}/instruments/{instrument_name}/machine" ).json() self.app.install_screen( DirectorySelection( - [p for p in machine_data.get("data_directories", []) if p.exists()] + [ + p + for p in machine_data.get("data_directories", []) + if Path(p).exists() + ] ), "directory-select", ) @@ -789,11 +795,7 @@ def on_button_pressed(self, event: Button.Pressed): ) self.app.push_screen("gain-ref-select") else: - if self._switch_status: - self.app.push_screen("directory-select") - else: - self.app.install_screen(LaunchScreen(basepath=Path("./")), "launcher") - self.app.push_screen("launcher") + self.app.push_screen("directory-select") if machine_data.get("upstream_data_directories"): upstream_downloads = requests.get( @@ -819,7 +821,7 @@ def compose(self): def on_button_pressed(self, event: Button.Pressed): machine_data = requests.get( - f"{self.app._environment.url.geturl()}/machine" + f"{self.app._environment.url.geturl()}/instruments/{instrument_name}/machine" ).json() if machine_data.get("upstream_data_download_directory"): # Create the directory locally to save files to @@ -1012,7 +1014,7 @@ def compose(self): not in machine_config["create_directories"].values() ): machine_data = requests.get( - f"{self.app._environment.url.geturl()}/machine" + f"{self.app._environment.url.geturl()}/instruments/{instrument_name}/machine" ).json() dest = determine_default_destination( self.app._visit, From 445c42bb51f08a29be2c4197ab2028aa90faa8ce Mon Sep 17 00:00:00 2001 From: Eu Pin Tien Date: Thu, 30 Jan 2025 11:27:23 +0000 Subject: [PATCH 2/2] Added debug log to report on the rsync remote path used for file transfer --- src/murfey/client/rsync.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/murfey/client/rsync.py b/src/murfey/client/rsync.py index 74a122f56..50c9ff0db 100644 --- a/src/murfey/client/rsync.py +++ b/src/murfey/client/rsync.py @@ -73,10 +73,14 @@ def __init__( self._local = local self._server_url = server_url self._notify = notify + + # Set rsync destination if local: self._remote = str(basepath_remote) else: self._remote = f"{server_url.hostname}::{basepath_remote}/" + logger.debug(f"rsync remote path set to {self._remote}") + # For local tests you can use something along the lines of # self._remote = f"wra62962@ws133:/dls/tmp/wra62962/junk/{basepath_remote}" # to avoid having to set up an rsync daemon