From 1e4ca8c40e4858976ecffcf0b7e79fdcc01c5254 Mon Sep 17 00:00:00 2001 From: yxd92326 Date: Thu, 9 Jan 2025 17:09:27 +0000 Subject: [PATCH 1/5] Remove the need for an ispyb environment variable --- src/murfey/server/ispyb.py | 9 +++++++-- src/murfey/util/config.py | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/murfey/server/ispyb.py b/src/murfey/server/ispyb.py index ce01b2cdc..d724cc965 100644 --- a/src/murfey/server/ispyb.py +++ b/src/murfey/server/ispyb.py @@ -2,7 +2,6 @@ import datetime import logging -import os from typing import Callable, List, Optional import ispyb @@ -31,9 +30,11 @@ url, ) +from murfey.util.config import get_security_config from murfey.util.models import FoilHoleParameters, GridSquareParameters, Sample, Visit log = logging.getLogger("murfey.server.ispyb") +security_config = get_security_config() try: Session = sqlalchemy.orm.sessionmaker( @@ -60,7 +61,11 @@ def __init__(self, transport_type): self.transport = workflows.transport.lookup(transport_type)() self.transport.connect() self.feedback_queue = "" - self.ispyb = ispyb.open() if os.getenv("ISYPB_CREDENTIALS") else None + self.ispyb = ( + ispyb.open(credentials=security_config.ispyb_credentials) + if security_config.ispyb_credentials + else None + ) self._connection_callback: Callable | None = None def reconnect(self): diff --git a/src/murfey/util/config.py b/src/murfey/util/config.py index 00750c806..66a3fa2de 100644 --- a/src/murfey/util/config.py +++ b/src/murfey/util/config.py @@ -97,6 +97,7 @@ class Security(BaseModel): feedback_queue: str = "murfey_feedback" graylog_host: str = "" graylog_port: Optional[int] = None + ispyb_credentials: Optional[str] = None @validator("graylog_port") def check_port_present_if_host_is( From a5f1c6fb39a9ab88c2ed1dd368d323d2a39e10b0 Mon Sep 17 00:00:00 2001 From: Eu Pin Tien Date: Thu, 9 Jan 2025 18:09:58 +0000 Subject: [PATCH 2/5] Use empty string to represent no file provided --- src/murfey/util/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/murfey/util/config.py b/src/murfey/util/config.py index 66a3fa2de..d22ba1fc2 100644 --- a/src/murfey/util/config.py +++ b/src/murfey/util/config.py @@ -97,7 +97,7 @@ class Security(BaseModel): feedback_queue: str = "murfey_feedback" graylog_host: str = "" graylog_port: Optional[int] = None - ispyb_credentials: Optional[str] = None + ispyb_credentials: str = "" @validator("graylog_port") def check_port_present_if_host_is( From 3a8c440022052a21465a7a662b623a2111c14106 Mon Sep 17 00:00:00 2001 From: Eu Pin Tien Date: Fri, 10 Jan 2025 09:34:23 +0000 Subject: [PATCH 3/5] Turned file path fields in Security BaseModel to Optional[Path] --- src/murfey/util/config.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/murfey/util/config.py b/src/murfey/util/config.py index d22ba1fc2..b81ff5bbf 100644 --- a/src/murfey/util/config.py +++ b/src/murfey/util/config.py @@ -83,8 +83,7 @@ def from_file(config_file_path: Path, instrument: str = "") -> Dict[str, Machine class Security(BaseModel): - rabbitmq_credentials: str - murfey_db_credentials: str + murfey_db_credentials: Optional[Path] = None crypto_key: str auth_key: str = "" auth_algorithm: str = "" @@ -94,10 +93,11 @@ class Security(BaseModel): session_token_timeout: Optional[int] = None auth_type: Literal["password", "cookie"] = "password" cookie_key: str = "" + rabbitmq_credentials: Optional[Path] = None feedback_queue: str = "murfey_feedback" graylog_host: str = "" graylog_port: Optional[int] = None - ispyb_credentials: str = "" + ispyb_credentials: Optional[Path] = None @validator("graylog_port") def check_port_present_if_host_is( From e8b615ad8956d9cc9ceebd7567eef2640be81be1 Mon Sep 17 00:00:00 2001 From: Eu Pin Tien Date: Fri, 10 Jan 2025 09:36:41 +0000 Subject: [PATCH 4/5] Murfey database is essential, so 'murfey_db_credentials' isn't Optional --- src/murfey/util/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/murfey/util/config.py b/src/murfey/util/config.py index b81ff5bbf..b6bcf8805 100644 --- a/src/murfey/util/config.py +++ b/src/murfey/util/config.py @@ -83,7 +83,7 @@ def from_file(config_file_path: Path, instrument: str = "") -> Dict[str, Machine class Security(BaseModel): - murfey_db_credentials: Optional[Path] = None + murfey_db_credentials: Path crypto_key: str auth_key: str = "" auth_algorithm: str = "" From 21e96ce5dc6c23ad8495fa8cbb06771de84c051d Mon Sep 17 00:00:00 2001 From: Eu Pin Tien Date: Fri, 10 Jan 2025 10:02:31 +0000 Subject: [PATCH 5/5] RabbitMQ credentials are mandatory as well for Murfey to operate correctly --- src/murfey/util/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/murfey/util/config.py b/src/murfey/util/config.py index b6bcf8805..9bbf55259 100644 --- a/src/murfey/util/config.py +++ b/src/murfey/util/config.py @@ -93,7 +93,7 @@ class Security(BaseModel): session_token_timeout: Optional[int] = None auth_type: Literal["password", "cookie"] = "password" cookie_key: str = "" - rabbitmq_credentials: Optional[Path] = None + rabbitmq_credentials: Path feedback_queue: str = "murfey_feedback" graylog_host: str = "" graylog_port: Optional[int] = None