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/rsync.py b/src/murfey/client/rsync.py index 9a60abd74..d67274c8b 100644 --- a/src/murfey/client/rsync.py +++ b/src/murfey/client/rsync.py @@ -75,12 +75,16 @@ 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}::{self._rsync_module}/{basepath_remote}/" ) + logger.debug(f"rsync destination 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 diff --git a/src/murfey/client/tui/app.py b/src/murfey/client/tui/app.py index e036f9486..012368721 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 262fff84f..e712ffccb 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}"}) @@ -264,8 +265,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), @@ -699,7 +701,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: @@ -766,12 +768,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", ) @@ -787,11 +793,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( @@ -817,7 +819,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