moved restapi functions into classes

This commit is contained in:
2025-01-18 12:37:04 +01:00
parent d8d8df847a
commit bfae60a588
+150 -127
View File
@@ -5,136 +5,173 @@ import requests
from slic.utils import json_validate
def advance_run_number(address, pgroup, *args, **kwargs):
params = {"pgroup": pgroup}
response = post_request(address, "advance_run_number", params, *args, **kwargs)
run_number = response["run_number"]
run_number = int(run_number)
return run_number
class BaseAPI:
def get_run_number(address, pgroup, *args, **kwargs):
params = {"pgroup": pgroup}
response = get_request(address, "get_current_run_number", params, *args, **kwargs)
run_number = response["run_number"]
run_number = int(run_number)
return run_number
def __init__(self, host, port, protocol="http"):
self.host = host
self.port = port
self.protocol = protocol
@property
def address(self):
return f"{self.protocol}://{self.host}:{self.port}"
def __repr__(self):
return self.address
def retrieve(address, *args, **kwargs):
response = post_request(address, "retrieve_from_buffers", *args, **kwargs)
res = {
"run_number": int(response["run_number"]),
"acq_number": int(response["acquisition_number"]),
"total_acq_number": int(response["unique_acquisition_number"]),
"filenames": response["files"]
}
return res
class BrokerAPI(BaseAPI):
def advance_run_number(self, pgroup, *args, **kwargs):
params = {"pgroup": pgroup}
response = post_request(self.address, "advance_run_number", params, *args, **kwargs)
run_number = response["run_number"]
run_number = int(run_number)
return run_number
def get_run_number(self, pgroup, *args, **kwargs):
params = {"pgroup": pgroup}
response = get_request(self.address, "get_current_run_number", params, *args, **kwargs)
run_number = response["run_number"]
run_number = int(run_number)
return run_number
def get_config_pvs(address, *args, **kwargs):
params = {}
response = get_request(address, "get_pvlist", params, *args, **kwargs)
return response.get("pv_list")
def set_config_pvs(address, pvs, *args, **kwargs):
params = {"pv_list": pvs}
response = post_request(address, "set_pvlist", params, *args, **kwargs)
return response.get("pv_list")
def power_on_detector(address, detector, *args, **kwargs):
params = {"detector_name": detector}
response = post_request(address, "power_on_detector", params, *args, **kwargs)
return response.get("message")
def get_running_detectors(address, *args, **kwargs):
params = {}
response = get_request(address, "get_running_detectors", params, *args, **kwargs)
target_keys = (
"missing_detectors",
"running_detectors",
"limping_detectors"
)
res = {k: response[k] for k in target_keys & response.keys()}
if res:
def retrieve(self, *args, **kwargs):
response = post_request(self.address, "retrieve_from_buffers", *args, **kwargs)
res = {
"run_number": int(response["run_number"]),
"acq_number": int(response["acquisition_number"]),
"total_acq_number": int(response["unique_acquisition_number"]),
"filenames": response["files"]
}
return res
else:
return response.get("detectors") #TODO: remove, kept for backwards compatibility
def get_allowed_detectors(address, *args, **kwargs):
params = {}
response = get_request(address, "get_allowed_detectors", params, *args, **kwargs)
return response.get("detectors")
def close_pgroup(address, pgroup, *args, **kwargs):
params = {"pgroup": pgroup}
response = post_request(address, "close_pgroup_writing", params, *args, **kwargs)
return response.get("message")
def take_pedestal(address, pgroup, detectors, *args, rate_multiplicator=1, pedestalmode=False, **kwargs):
params = {
"pgroup": pgroup,
"detectors": detectors,
"rate_multiplicator": rate_multiplicator,
"pedestalmode": pedestalmode
}
response = post_request(address, "take_pedestal", params, *args, **kwargs)
return response.get("message")
def power_on_modules(address, detector, modules, *args, **kwargs):
params = {
"detector_name": detector,
"modules": modules
}
response = post_request(address, "power_on_modules", params, *args, **kwargs)
return response.get("message")
def get_config_pvs(self, *args, **kwargs):
params = {}
response = get_request(self.address, "get_pvlist", params, *args, **kwargs)
return response.get("pv_list")
def power_off_modules(address, detector, modules, *args, **kwargs):
params = {
"detector_name": detector,
"modules": modules
}
response = post_request(address, "power_off_modules", params, *args, **kwargs)
return response.get("message")
def set_config_pvs(self, pvs, *args, **kwargs):
params = {"pv_list": pvs}
response = post_request(self.address, "set_pvlist", params, *args, **kwargs)
return response.get("pv_list")
def copy_user_files(address, pgroup, run_number, fnames, timeout=10):
endpoint = "copy_user_files"
requrl = make_requrl(address, endpoint)
params = {
"pgroup": pgroup,
"run_number": run_number,
"files": fnames
}
params = json_validate(params)
response = requests.post(requrl, json=params, timeout=timeout).json()
return response
def power_on_detector(self, detector, *args, **kwargs):
params = {"detector_name": detector}
response = post_request(self.address, "power_on_detector", params, *args, **kwargs)
return response.get("message")
def get_running_detectors(self, *args, **kwargs):
params = {}
response = get_request(self.address, "get_running_detectors", params, *args, **kwargs)
target_keys = (
"missing_detectors",
"running_detectors",
"limping_detectors"
)
res = {k: response[k] for k in target_keys & response.keys()}
if res:
return res
else:
return response.get("detectors") #TODO: remove, kept for backwards compatibility
def get_allowed_detectors(self, *args, **kwargs):
params = {}
response = get_request(self.address, "get_allowed_detectors", params, *args, **kwargs)
return response.get("detectors")
def close_pgroup(self, pgroup, *args, **kwargs):
params = {"pgroup": pgroup}
response = post_request(self.address, "close_pgroup_writing", params, *args, **kwargs)
return response.get("message")
def take_pedestal(self, pgroup, detectors, *args, rate_multiplicator=1, pedestalmode=False, **kwargs):
params = {
"pgroup": pgroup,
"detectors": detectors,
"rate_multiplicator": rate_multiplicator,
"pedestalmode": pedestalmode
}
response = post_request(self.address, "take_pedestal", params, *args, **kwargs)
return response.get("message")
def get_jfctrl_monitor(address, detector, *args, **kwargs):
params = {"detector_name": detector}
response = get_request(address, "get_jfctrl_monitor", params, *args, **kwargs)
return response.get("parameters")
def get_detector_temperatures(address, detector, *args, **kwargs):
params = {"detector_name": detector}
response = get_request(address, "get_detector_temperatures", params, *args, **kwargs)
return response.get("temperatures")
class BrokerSlowAPI(BaseAPI):
def power_on_modules(self, detector, modules, *args, **kwargs):
params = {
"detector_name": detector,
"modules": modules
}
response = post_request(self.address, "power_on_modules", params, *args, **kwargs)
return response.get("message")
def power_off_modules(self, detector, modules, *args, **kwargs):
params = {
"detector_name": detector,
"modules": modules
}
response = post_request(self.address, "power_off_modules", params, *args, **kwargs)
return response.get("message")
def get_detector_settings(address, detector, *args, **kwargs):
params = {"detector_name": detector}
response = get_request(address, "get_detector_settings", params, *args, **kwargs)
return response.get("parameters")
def copy_user_files(self, pgroup, run_number, fnames, timeout=10):
endpoint = "copy_user_files"
requrl = make_requrl(self.address, endpoint)
params = {
"pgroup": pgroup,
"run_number": run_number,
"files": fnames
}
params = json_validate(params)
response = requests.post(requrl, json=params, timeout=timeout).json()
return response
def get_jfctrl_monitor(self, detector, *args, **kwargs):
params = {"detector_name": detector}
response = get_request(self.address, "get_jfctrl_monitor", params, *args, **kwargs)
return response.get("parameters")
def get_detector_temperatures(self, detector, *args, **kwargs):
params = {"detector_name": detector}
response = get_request(self.address, "get_detector_temperatures", params, *args, **kwargs)
return response.get("temperatures")
def get_detector_settings(self, detector, *args, **kwargs):
params = {"detector_name": detector}
response = get_request(self.address, "get_detector_settings", params, *args, **kwargs)
return response.get("parameters")
def set_detector_settings(self, detector, parameters, *args, **kwargs):
params = {
"detector_name": detector,
"parameters": parameters
}
response = post_request(self.address, "set_detector_settings", params, *args, **kwargs)
return response.get("changed_parameters")
def get_dap_settings(self, detector, *args, **kwargs):
params = {"detector_name": detector}
response = get_request(self.address, "get_dap_settings", params, *args, **kwargs)
return response.get("parameters")
def set_dap_settings(self, detector, parameters, *args, **kwargs):
params = {
"detector_name": detector,
"parameters": parameters
}
response = post_request(self.address, "set_dap_settings", params, *args, **kwargs)
return response.get("changed_parameters")
def set_detector_settings(address, detector, parameters, *args, **kwargs):
params = {
"detector_name": detector,
"parameters": parameters
}
response = post_request(address, "set_detector_settings", params, *args, **kwargs)
return response.get("changed_parameters")
def make_detector_parameters(
delay = None,
@@ -150,20 +187,6 @@ def make_detector_parameters(
)
return parameters
def get_dap_settings(address, detector, *args, **kwargs):
params = {"detector_name": detector}
response = get_request(address, "get_dap_settings", params, *args, **kwargs)
return response.get("parameters")
def set_dap_settings(address, detector, parameters, *args, **kwargs):
params = {
"detector_name": detector,
"parameters": parameters
}
response = post_request(address, "set_dap_settings", params, *args, **kwargs)
return response.get("changed_parameters")
def make_dap_parameters(
aggregation_max = None,
apply_additional_mask = None,