diff --git a/src/cal_tools/calcat_interface2.py b/src/cal_tools/calcat_interface2.py index 464ff85c576b69ef4a7a7435f9a9cfe48b76fc95..9e819c5bb9adc39ecf944863932f6457c6304944 100644 --- a/src/cal_tools/calcat_interface2.py +++ b/src/cal_tools/calcat_interface2.py @@ -214,8 +214,17 @@ def setup_client( _default_caldb_root = None +def set_default_caldb_root(p: Path): + """Override the default root directory for constants in CalCat""" + global _default_caldb_root + _default_caldb_root = p + +def get_default_caldb_root(): + """Get the root directory for constants in CalCat. -def _get_default_caldb_root(): + The default location is different on Maxwell & ONC; this checks which one + exists. Calling ``set_default_caldb_root()`` overrides this. + """ global _default_caldb_root if _default_caldb_root is None: onc_path = Path("/common/cal/caldb_store") @@ -262,7 +271,7 @@ class SingleConstant: if caldb_root is not None: caldb_root = Path(caldb_root) else: - caldb_root = _get_default_caldb_root() + caldb_root = get_default_caldb_root() return caldb_root / self.path def dataset_obj(self, caldb_root=None) -> h5py.Dataset: diff --git a/src/cal_tools/constants.py b/src/cal_tools/constants.py index cd4abb00f819ef75f2da7b3315adaf4f863bd3c6..21b047c003b5c8c0541479e2b75aeefc9c3f85e3 100644 --- a/src/cal_tools/constants.py +++ b/src/cal_tools/constants.py @@ -11,7 +11,7 @@ import numpy as np import h5py from calibration_client import CalibrationClient -from cal_tools.calcat_interface2 import _get_default_caldb_root, get_client +from cal_tools.calcat_interface2 import get_default_caldb_root, get_client from cal_tools.tools import run_prop_seq_from_path from cal_tools.restful_config import calibration_client @@ -187,7 +187,7 @@ def inject_ccv(const_src, ccv_root, report_to=None): 'file_path': str(report_path) } - const_dest = _get_default_caldb_root() / const_rel_path / const_filename + const_dest = get_default_caldb_root() / const_rel_path / const_filename const_dest.parent.mkdir(parents=True, exist_ok=True) copyfile(const_src, const_dest) diff --git a/src/cal_tools/restful_config.py b/src/cal_tools/restful_config.py index 5a6d2e9e5245e6d4355ec40ae20c6ef557590c14..671dec619ffe287f26e9d4b415e3e3d86e212948 100644 --- a/src/cal_tools/restful_config.py +++ b/src/cal_tools/restful_config.py @@ -50,25 +50,20 @@ def extra_calibration_client(): from cal_tools import calcat_interface2 calcat_config = restful_config.get('calcat') + user_id = user_secret = None if calcat_config['use-oauth2']: - from oauth2_xfel_client import Oauth2ClientBackend - oauth_client = Oauth2ClientBackend( - client_id=calcat_config['user-id'], - client_secret=calcat_config['user-secret'], - token_url=calcat_config['token-url'], - scope='', - ) - else: - oauth_client = None + user_id, user_secret = calcat_config['user-id'], calcat_config['user-secret'] - if calcat_config['caldb-root']: - calcat_interface2._default_caldb_root = Path(calcat_config['caldb-root']) + base_api_url = calcat_config['base-api-url'].rstrip('/') + assert base_api_url.endswith('/api') + base_url = base_api_url[:-4] - client = calcat_interface2.CalCatAPIClient( - base_api_url=calcat_config['base-api-url'], - oauth_client=oauth_client, + calcat_interface2.setup_client( + base_url, + client_id=user_id, + client_secret=user_secret, user_email=calcat_config['user-email'], ) - - calcat_interface2.global_client = client - return client + if calcat_config['caldb-root']: + calcat_interface2.set_default_caldb_root(Path(calcat_config['caldb-root'])) + return calcat_interface2.get_client()