diff --git a/api/security.py b/api/security.py index ba3b2d7b..9157a528 100644 --- a/api/security.py +++ b/api/security.py @@ -106,6 +106,15 @@ def get_conn() -> Optional[Connector]: return conn +def get_configured_connector() -> Optional[Union[Connector, SSHConnector]]: + if connector == 'ispyb': + return get_conn() + elif connector == 'ssh_ispyb': + return get_remote_conn() + else: + return None + + class ISpyBSafeQuerySet(viewsets.ReadOnlyModelViewSet): def get_queryset(self): """ @@ -190,11 +199,7 @@ def get_proposals_for_user_from_ispyb(self, user): logger.info("user=%s needs_updating=%s", user.username, needs_updating) if needs_updating: - conn: Optional[Union[Connector, SSHConnector]] = None - if connector == 'ispyb': - conn = get_conn() - elif connector == 'ssh_ispyb': - conn = get_remote_conn() + conn: Optional[Union[Connector, SSHConnector]] = get_configured_connector() # If there is no connection (ISPyB credentials may be missing) # then there's nothing we can do except return an empty list. diff --git a/viewer/services.py b/viewer/services.py index 32794aa6..d0776cbf 100644 --- a/viewer/services.py +++ b/viewer/services.py @@ -4,14 +4,12 @@ import os from concurrent import futures from enum import Enum -from typing import Optional import requests from frag.utils.network_utils import get_driver -from ispyb.connector.mysqlsp.main import ISPyBMySQLSPConnector as Connector from pydiscourse import DiscourseClient -from api import security +from api.security import get_configured_connector from viewer.squonk2_agent import get_squonk2_agent logger = logging.getLogger(__name__) @@ -150,16 +148,16 @@ async def wrapper_service_query(*args, **kwargs): @service_query -def ispyb(func_id, name, ispyb_host=None) -> Optional[Connector]: +def ispyb(func_id, name, ispyb_host=None) -> bool: # Unused arguments del func_id, name, ispyb_host logger.debug("+ ispyb") - return security.get_conn() + return get_configured_connector() != None @service_query -def discourse(func_id, name, key=None, url=None, user=None) -> DiscourseClient: +def discourse(func_id, name, key=None, url=None, user=None) -> bool: # Unused arguments del func_id, name @@ -170,7 +168,7 @@ def discourse(func_id, name, key=None, url=None, user=None) -> DiscourseClient: api_key=os.environ.get(key, None), ) # TODO: some action on client? - return client + return client != None @service_query