Skip to content

Commit 12b4116

Browse files
committed
Replaced most other instances of URL requests to the instrument or backend servers to 'url_path_for'
1 parent 12a6000 commit 12b4116

File tree

16 files changed

+95
-67
lines changed

16 files changed

+95
-67
lines changed

src/murfey/bootstrap/__main__.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77
import pathlib
88
import subprocess
99
import sys
10-
from urllib.parse import urlparse
10+
from urllib.parse import ParseResult, urlparse
1111
from urllib.request import urlopen
1212

13+
from murfey.util.api import url_path_for
14+
1315
"""
1416
A script to simplify installing Murfey on a network-isolated machine.
1517
This could in theory be invoked by
@@ -64,10 +66,13 @@ def _download_to_file(url: str, outfile: str):
6466
# Construct a minimal base path string
6567
# Extract the host name for pip installation purposes
6668
try:
67-
murfey_url = urlparse(args.server)
69+
murfey_url: ParseResult = urlparse(args.server)
6870
except Exception:
6971
exit(f"{args.server} is not a valid URL")
72+
murfey_proxy_path = murfey_url.path.rstrip("/")
7073
murfey_base = f"{murfey_url.scheme}://{murfey_url.netloc}"
74+
if murfey_proxy_path:
75+
murfey_base = f"{murfey_base}{murfey_proxy_path}"
7176
murfey_hostname = murfey_url.netloc.split(":")[0]
7277

7378
# Check that Python version is supported
@@ -82,7 +87,10 @@ def _download_to_file(url: str, outfile: str):
8287
# Step 1: Download pip wheel
8388
print()
8489
print(f"1/4 -- Connecting to murfey server on {murfey_base}...")
85-
_download_to_file(f"{murfey_base}/bootstrap/pip.whl", "pip.whl")
90+
_download_to_file(
91+
f"{murfey_base}{url_path_for('bootstrap.bootstrap', 'get_pip_wheel')}",
92+
"pip.whl",
93+
)
8694

8795
# Step 2: Get pip to install itself
8896
print()
@@ -96,7 +104,7 @@ def _download_to_file(url: str, outfile: str):
96104
"--trusted-host",
97105
murfey_hostname,
98106
"-i",
99-
f"{murfey_base}/pypi",
107+
f"{murfey_base}{url_path_for('bootstrap.pypi', 'get_pypi_index')}",
100108
"pip",
101109
]
102110
)
@@ -116,7 +124,7 @@ def _download_to_file(url: str, outfile: str):
116124
"--trusted-host",
117125
murfey_hostname,
118126
"-i",
119-
f"{murfey_base}/pypi",
127+
f"{murfey_base}{url_path_for('bootstrap.pypi', 'get_pypi_index')}",
120128
"--upgrade",
121129
"pip",
122130
]
@@ -135,7 +143,7 @@ def _download_to_file(url: str, outfile: str):
135143
"--trusted-host",
136144
murfey_hostname,
137145
"-i",
138-
f"{murfey_base}/pypi",
146+
f"{murfey_base}{url_path_for('bootstrap.pypi', 'get_pypi_index')}",
139147
"murfey[client]",
140148
]
141149
)

src/murfey/cli/spa_ispyb_messages.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from murfey.server.ispyb import ISPyBSession, TransportManager, get_session_id
2323
from murfey.server.murfey_db import url
2424
from murfey.util import db
25+
from murfey.util.api import url_path_for
2526
from murfey.util.config import get_machine_config, get_microscope, get_security_config
2627

2728

@@ -69,7 +70,7 @@ def run():
6970
help="Path to directory containing image files",
7071
)
7172
parser.add_argument(
72-
"--suffic",
73+
"--suffix",
7374
dest="suffix",
7475
required=True,
7576
type=str,
@@ -203,7 +204,9 @@ def run():
203204
]
204205
)
205206
binning_factor = 1
206-
server_config = requests.get(f"{args.url}/machine").json()
207+
server_config = requests.get(
208+
f"{args.url}{url_path_for('session_control.router', 'machine_info_by_instrument', instrument_name=args.microscope)}"
209+
).json()
207210
if server_config.get("superres"):
208211
# If camera is capable of superres and collection is in superres
209212
binning_factor = 2

src/murfey/cli/transfer.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33
import argparse
44
import subprocess
55
from pathlib import Path
6-
from urllib.parse import urlparse
6+
from urllib.parse import ParseResult, urlparse
77

88
import requests
99
from rich.console import Console
1010
from rich.prompt import Confirm
1111

1212
from murfey.client import read_config
13+
from murfey.util.api import url_path_for
1314
from murfey.util.config import MachineConfig
1415

1516

@@ -35,11 +36,11 @@ def run():
3536
args = parser.parse_args()
3637

3738
console = Console()
38-
murfey_url = urlparse(args.server, allow_fragments=False)
39+
murfey_url: ParseResult = urlparse(args.server, allow_fragments=False)
3940

4041
machine_data = MachineConfig(
4142
requests.get(
42-
f"{murfey_url.geturl()}/instruments/{instrument_name}/machine"
43+
f"{murfey_url.geturl()}{url_path_for('session_control.router', 'machine_info_by_instrument', instrument_name=instrument_name)}"
4344
).json()
4445
)
4546
if Path(args.source or ".").resolve() in machine_data.data_directories:

src/murfey/client/__init__.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,9 @@ def run():
275275
rich_handler.setLevel(logging.DEBUG if args.debug else logging.INFO)
276276

277277
# Set up websocket app and handler
278-
client_id = requests.get(f"{murfey_url.geturl()}/new_client_id/").json()
278+
client_id = requests.get(
279+
f"{murfey_url.geturl()}{url_path_for('session_control.router', 'new_client_id')}"
280+
).json()
279281
ws = murfey.client.websocket.WSApp(
280282
server=args.server,
281283
id=client_id["new_id"],
@@ -292,7 +294,7 @@ def run():
292294

293295
# Load machine data for subsequent sections
294296
machine_data = requests.get(
295-
f"{murfey_url.geturl()}/instruments/{instrument_name}/machine"
297+
f"{murfey_url.geturl()}{url_path_for('session_control.router', 'machine_info_by_instrument', instrument_name=instrument_name)}"
296298
).json()
297299
gain_ref: Path | None = None
298300

src/murfey/client/contexts/clem.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
from murfey.client.context import Context
1616
from murfey.client.instance_environment import MurfeyInstanceEnvironment
17+
from murfey.util.api import url_path_for
1718
from murfey.util.client import capture_post, get_machine_config_client
1819

1920
# Create logger object
@@ -351,7 +352,7 @@ def register_lif_file(
351352
"""
352353
try:
353354
# Construct URL to post to post the request to
354-
url = f"{str(environment.url.geturl())}/sessions/{environment.murfey_session}/clem/lif_files?lif_file={quote(str(lif_file), safe='')}"
355+
url = f"{environment.url.geturl()}{url_path_for('clem.router', 'register_lif_file', session_id=environment.murfey_session)}?lif_file={quote(str(lif_file), safe='')}"
355356
# Validate
356357
if not url:
357358
logger.error(
@@ -381,7 +382,7 @@ def process_lif_file(
381382

382383
try:
383384
# Construct the URL to post the request to
384-
url = f"{str(environment.url.geturl())}/sessions/{environment.murfey_session}/clem/preprocessing/process_raw_lifs?lif_file={quote(str(lif_file), safe='')}"
385+
url = f"{environment.url.geturl()}{url_path_for('clem.router', 'process_raw_lifs', session_id=environment.murfey_session)}?lif_file={quote(str(lif_file), safe='')}"
385386
# Validate
386387
if not url:
387388
logger.error(
@@ -408,7 +409,7 @@ def register_tiff_file(
408409
"""
409410

410411
try:
411-
url = f"{str(environment.url.geturl())}/sessions/{environment.murfey_session}/clem/tiff_files?tiff_file={quote(str(tiff_file), safe='')}"
412+
url = f"{environment.url.geturl()}{url_path_for('clem.router', 'register_tiff_file', session_id=environment.murfey_session)}?tiff_file={quote(str(tiff_file), safe='')}"
412413
if not url:
413414
logger.error(
414415
"URL could not be constructed from the environment and file path"
@@ -437,7 +438,7 @@ def process_tiff_series(
437438

438439
try:
439440
# Construct URL for Murfey server to communicate with
440-
url = f"{str(environment.url.geturl())}/sessions/{environment.murfey_session}/clem/preprocessing/process_raw_tiffs"
441+
url = f"{environment.url.geturl()}{url_path_for('clem.router', 'process_raw_tiffs', session_id=environment.murfey_session)}"
441442
if not url:
442443
logger.error(
443444
"URL could not be constructed from the environment and file path"

src/murfey/client/contexts/fib.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
from murfey.client.context import Context
1212
from murfey.client.instance_environment import MurfeyInstanceEnvironment
13+
from murfey.util.api import url_path_for
1314
from murfey.util.client import authorised_requests
1415

1516
logger = logging.getLogger("murfey.client.contexts.fib")
@@ -95,7 +96,7 @@ def post_transfer(
9596
).name
9697
# post gif list to gif making API call
9798
requests.post(
98-
f"{str(environment.url.geturl())}/visits/{datetime.now().year}/{environment.visit}/{environment.murfey_session}/make_milling_gif",
99+
f"{environment.url.geturl()}{url_path_for('workflow.correlative_router', 'make_gif', year=datetime.now().year, visit_name=environment.visit, session_id=environment.murfey_session)}",
99100
json={
100101
"lamella_number": lamella_number,
101102
"images": gif_list,

src/murfey/client/contexts/spa.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ def _position_analysis(
405405
] = (None, None, None, None, None, None, None)
406406
data_collection_group = (
407407
requests.get(
408-
f"{str(environment.url.geturl())}/sessions/{environment.murfey_session}/data_collection_groups"
408+
f"{environment.url.geturl()}{url_path_for('session_info.router', 'get_dc_groups', session_id=environment.murfey_session)}"
409409
)
410410
.json()
411411
.get(str(source), {})
@@ -567,7 +567,7 @@ def post_transfer(
567567
)
568568
if not environment.movie_counters.get(str(source)):
569569
movie_counts_get = capture_get(
570-
f"{str(environment.url.geturl())}/num_movies",
570+
f"{environment.url.geturl()}{url_path_for('session_info.router', 'count_number_of_movies')}",
571571
)
572572
if movie_counts_get is not None:
573573
environment.movie_counters[str(source)] = count(

src/murfey/client/multigrid_control.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def __post_init__(self):
6363
requests.delete, headers={"Authorization": f"Bearer {self.token}"}
6464
)
6565
machine_data = requests.get(
66-
f"{self.murfey_url}/instruments/{self.instrument_name}/machine"
66+
f"{self.murfey_url}{url_path_for('session_control.router', 'machine_info_by_instrument', instrument_name=self.instrument_name)}"
6767
).json()
6868
self.rsync_url = machine_data.get("rsync_url", "")
6969
self.rsync_module = machine_data.get("rsync_module", "data")
@@ -209,10 +209,10 @@ def _start_rsyncer_multigrid(
209209

210210
def _rsyncer_stopped(self, source: Path, explicit_stop: bool = False):
211211
if explicit_stop:
212-
remove_url = f"{self.murfey_url}/sessions/{self.session_id}/rsyncer?source={quote(str(source), safe='')}"
212+
remove_url = f"{self.murfey_url}{url_path_for('session_control.router', 'delete_rsyncer', session_id=self.session_id)}?source={quote(str(source), safe='')}"
213213
requests.delete(remove_url)
214214
else:
215-
stop_url = f"{self.murfey_url}/sessions/{self.session_id}/rsyncer_stopped"
215+
stop_url = f"{self.murfey_url}{url_path_for('session_control.router', 'register_stopped_rsyncer', session_id=self.session_id)}"
216216
capture_post(stop_url, json={"source": str(source)})
217217

218218
def _finalise_rsyncer(self, source: Path):
@@ -228,7 +228,7 @@ def _finalise_rsyncer(self, source: Path):
228228

229229
def _restart_rsyncer(self, source: Path):
230230
self.rsync_processes[source].restart()
231-
restarted_url = f"{self.murfey_url}/sessions/{self.session_id}/rsyncer_started"
231+
restarted_url = f"{self.murfey_url}{url_path_for('session_control.router', 'register_restarted_rsyncer', session_id=self.session_id)}"
232232
capture_post(restarted_url, json={"source": str(source)})
233233

234234
def _request_watcher_stop(self, source: Path):
@@ -251,9 +251,7 @@ def _start_rsyncer(
251251
log.info(f"starting rsyncer: {source}")
252252
if transfer:
253253
# Always make sure the destination directory exists
254-
make_directory_url = (
255-
f"{self.murfey_url}/sessions/{self.session_id}/make_rsyncer_destination"
256-
)
254+
make_directory_url = f"{self.murfey_url}{url_path_for('file_manip.router', 'make_rsyncer_destination', session_id=self.session_id)}"
257255
capture_post(make_directory_url, json={"destination": destination})
258256
if self._environment:
259257
self._environment.default_destinations[source] = destination
@@ -323,12 +321,10 @@ def rsync_result(update: RSyncerUpdate):
323321
secondary=True,
324322
)
325323
if restarted:
326-
restarted_url = (
327-
f"{self.murfey_url}/sessions/{self.session_id}/rsyncer_started"
328-
)
324+
restarted_url = f"{self.murfey_url}{url_path_for('session_control.router', 'register_restarted_rsyncer', session_id=self.session_id)}"
329325
capture_post(restarted_url, json={"source": str(source)})
330326
else:
331-
url = f"{str(self._environment.url.geturl())}/sessions/{str(self._environment.murfey_session)}/rsyncer"
327+
url = f"{str(self._environment.url.geturl())}{url_path_for('session_control.router', 'register_rsyncer', session_id=self._environment.murfey_session)}"
332328
rsyncer_data = {
333329
"source": str(source),
334330
"destination": destination,

src/murfey/client/tui/app.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -621,7 +621,7 @@ async def on_button_pressed(self, event: Button.Pressed):
621621

622622
async def on_mount(self) -> None:
623623
exisiting_sessions = requests.get(
624-
f"{self._environment.url.geturl()}/sessions"
624+
f"{self._environment.url.geturl()}{url_path_for('session_control.router', 'get_sessions')}"
625625
).json()
626626
if self.visits:
627627
self.install_screen(VisitSelection(self.visits), "visit-select-screen")

src/murfey/client/tui/screens.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -699,12 +699,12 @@ def on_button_pressed(self, event: Button.Pressed):
699699
self.app._visit = text
700700
self.app._environment.visit = text
701701
response = requests.post(
702-
f"{self.app._environment.url.geturl()}/visits/{text}",
702+
f"{self.app._environment.url.geturl()}{url_path_for('session_control.router', 'register_client_to_visit', visit_name=text)}",
703703
json={"id": self.app._environment.client_id},
704704
)
705705
log.info(f"Posted visit registration: {response.status_code}")
706706
machine_data = requests.get(
707-
f"{self.app._environment.url.geturl()}/instruments/{instrument_name}/machine"
707+
f"{self.app._environment.url.geturl()}{url_path_for('session_control.router', 'machine_info_by_instrument', instrument_name=instrument_name)}"
708708
).json()
709709

710710
if self._switch_status:
@@ -766,7 +766,7 @@ def on_button_pressed(self, event: Button.Pressed):
766766
self.app._visit = text
767767
self.app._environment.visit = text
768768
response = requests.post(
769-
f"{self.app._environment.url.geturl()}/visits/{text}",
769+
f"{self.app._environment.url.geturl()}{url_path_for('session_control.router', 'register_client_to_visit', visit_name=text)}",
770770
json={"id": self.app._environment.client_id},
771771
)
772772
log.info(f"Posted visit registration: {response.status_code}")

0 commit comments

Comments
 (0)