JFJOCH: centralize URL resolution
This commit is contained in:
@@ -15,3 +15,17 @@ def mx_beamline() -> MXBeamline:
|
||||
return MXBeamline.SIMULATED
|
||||
name=name.strip().upper()
|
||||
return MXBeamline[name] if name in MXBeamline.__members__ else MXBeamline.SIMULATED
|
||||
|
||||
def get_jfjoch_url(bl: MXBeamline) -> str:
|
||||
"""Centralized URL resolution for JFJoch services."""
|
||||
match bl:
|
||||
case MXBeamline.X10SA:
|
||||
return "http://sls-gpu-002:8080"
|
||||
case MXBeamline.X06DA:
|
||||
return "http://sls-gpu-001:8080"
|
||||
case MXBeamline.SIMULATED:
|
||||
return "http://localhost:8080"
|
||||
case MXBeamline.X06SA:
|
||||
raise NotImplementedError("X06SA beamline not supported yet")
|
||||
case _:
|
||||
raise ValueError(f"No JFJoch URL configured for beamline: {bl}")
|
||||
@@ -4,7 +4,7 @@ from enum import Enum
|
||||
|
||||
import jfjoch_client
|
||||
|
||||
from aare.common.beamline import MXBeamline
|
||||
from aare.common.beamline import MXBeamline, get_jfjoch_url
|
||||
from aare.common.exception_handler import JFJochCommunicationError
|
||||
from aare.common.models import DAQStatusModel, FluorescenceSpectrumOutputModel
|
||||
from aare.common.raster_grid import RasterGridRequest
|
||||
@@ -20,20 +20,13 @@ class ScanTypeEnum(Enum):
|
||||
|
||||
class JFJochWrapper:
|
||||
def __init__(self, bl: MXBeamline):
|
||||
self.__simulated = False
|
||||
match bl:
|
||||
case MXBeamline.X06DA:
|
||||
self.__url = "http://sls-gpu-001:8080"
|
||||
case MXBeamline.X10SA:
|
||||
self.__url = "http://sls-gpu-002:8080"
|
||||
case MXBeamline.SIMULATED:
|
||||
self.__url = "http://localhost:8080"
|
||||
self.__client = None
|
||||
self.__api = None
|
||||
self.__simulated = True
|
||||
return
|
||||
case _:
|
||||
raise Exception("unknown beamline")
|
||||
self.__simulated = (bl == MXBeamline.SIMULATED)
|
||||
self.__url = get_jfjoch_url(bl)
|
||||
|
||||
if self.__url == "simulated":
|
||||
self.__client = None
|
||||
self.__api = None
|
||||
return
|
||||
|
||||
self.__client = jfjoch_client.ApiClient(jfjoch_client.Configuration(host=self.__url))
|
||||
self.__api = jfjoch_client.DefaultApi(self.__client)
|
||||
|
||||
@@ -6,6 +6,7 @@ from PySide6.QtGui import QPainter, QPen, QColor, QBrush
|
||||
from PySide6.QtCore import Qt, QRect
|
||||
from typing import List, Tuple
|
||||
|
||||
from aare.common.beamline import mx_beamline, get_jfjoch_url
|
||||
from aare.common.coordinate import Coordinate, SmargonCoordinate
|
||||
from aare.common.models import DAQStatusModel
|
||||
from aare.common.raster_grid import RasterGridRequest, CompletedRasterGrid, CompletedRasterGridElem
|
||||
@@ -95,6 +96,8 @@ class RasterGridManager(QObject):
|
||||
super().__init__()
|
||||
|
||||
self.__sample_id = -1
|
||||
self.__beamline = mx_beamline()
|
||||
self.__detector_url = get_jfjoch_url(self.__beamline)
|
||||
|
||||
self.__beam_size_mm = geom.beam_size_mm
|
||||
self.__geom = geom
|
||||
@@ -299,7 +302,7 @@ class RasterGridManager(QObject):
|
||||
self.__loaded_image_index = grid.result.images[cell].number
|
||||
print(f"Load {grid.result.file_prefix} {grid.result.images[cell].number}")
|
||||
#self.image_selected.emit(grid.result.file_prefix, grid.result.images[cell].number)
|
||||
self.image_selected.emit("http://sls-gpu-001:8080", grid.result.images[cell].number)
|
||||
self.image_selected.emit(self.__detector_url, grid.result.images[cell].number)
|
||||
|
||||
def is_part_of_active_grid(self, point: QPointF) -> bool:
|
||||
if not self._is_grid_visible(self.__active_grid):
|
||||
@@ -712,7 +715,7 @@ class RasterGridManager(QObject):
|
||||
com = last_raster.centre_of_mass
|
||||
logger.info(f"COM: {com}")
|
||||
cell = com.max_image if com else 0
|
||||
self.image_selected.emit("http://sls-gpu-001:8080", cell)
|
||||
self.image_selected.emit(self.__detector_url, cell)
|
||||
self.completed_grid_updated.emit()
|
||||
|
||||
@Slot(int, bool)
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
from PySide6.QtCore import QObject, Slot
|
||||
from PySide6.QtDBus import QDBusConnection, QDBusInterface
|
||||
from aare.common.beamline import MXBeamline, mx_beamline, get_jfjoch_url
|
||||
|
||||
|
||||
class JFJochDBusClient(QObject):
|
||||
def __init__(self):
|
||||
@@ -9,6 +11,12 @@ class JFJochDBusClient(QObject):
|
||||
self.__interface = None
|
||||
self.__dbus_available = False
|
||||
|
||||
self.__beamline = mx_beamline()
|
||||
try:
|
||||
self.__detector_url = get_jfjoch_url(self.__beamline)
|
||||
except ValueError:
|
||||
self.__detector_url = None
|
||||
|
||||
try:
|
||||
self.__session_bus = QDBusConnection.sessionBus()
|
||||
if self.__session_bus.isConnected():
|
||||
@@ -66,5 +74,5 @@ class JFJochDBusClient(QObject):
|
||||
return
|
||||
|
||||
if self._ensure_interface():
|
||||
reply = self.__interface.call("LoadFile", "http://sls-gpu-001:8080", -1, 1)
|
||||
reply = self.__interface.call("LoadFile", self.__detector_url, -1, 1)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user