tryd to fix a oid connect related bug, but there is still a BIG problem
This commit is contained in:
@@ -1,4 +1,7 @@
|
||||
from backend import LrcException
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger("lrc.tools.exception_decorator")
|
||||
|
||||
|
||||
def exception_decorator(*exceptions):
|
||||
@@ -8,6 +11,9 @@ def exception_decorator(*exceptions):
|
||||
ret = func(*args, **kwargs)
|
||||
return ret
|
||||
except exceptions as e:
|
||||
logger.error(str(e))
|
||||
raise LrcException(e)
|
||||
|
||||
return new_func
|
||||
return decorator
|
||||
|
||||
return decorator
|
||||
|
||||
@@ -11,6 +11,7 @@ from typing import Union
|
||||
|
||||
import requests
|
||||
from requests.auth import HTTPBasicAuth
|
||||
from requests.exceptions import ConnectionError
|
||||
from multiprocessing.pool import ThreadPool
|
||||
from multiprocessing.context import TimeoutError
|
||||
|
||||
@@ -26,6 +27,8 @@ from backend.recorder_adapters.extron_smp import SMP35x
|
||||
from backend.tools.recorder_streams_sanity_checks import check_frame_is_valid, check_if_audio_is_valid
|
||||
from backend.tools.send_mail import send_error_mail, get_smtp_error_handler
|
||||
|
||||
from backend.tools.exception_decorator import exception_decorator
|
||||
|
||||
logger = logging.getLogger("lrc.tools.simple_state_checker")
|
||||
|
||||
smtp_error_handler = get_smtp_error_handler(subject="Errors have been detected while checking recorder states!")
|
||||
@@ -50,6 +53,7 @@ agent_states_lock = threading.RLock()
|
||||
agent_states = {}
|
||||
|
||||
|
||||
@exception_decorator(ConnectionError)
|
||||
def get_service_url(service_type: str):
|
||||
if service_type in config['service_urls']:
|
||||
return config['service_urls'][service_type]
|
||||
@@ -64,19 +68,23 @@ def get_service_url(service_type: str):
|
||||
return None
|
||||
|
||||
|
||||
@exception_decorator(ConnectionError)
|
||||
def get_calender(rec_id):
|
||||
params = {'agentid': rec_id}
|
||||
url = get_service_url('org.opencastproject.scheduler') + "/calendars"
|
||||
res = session.get(url, params=params)
|
||||
if res.ok:
|
||||
return Calendar(res.text)
|
||||
raise LrcException(res.text, res.status_code)
|
||||
|
||||
|
||||
@exception_decorator(ConnectionError)
|
||||
def get_capture_agents():
|
||||
url = get_service_url("org.opencastproject.capture.admin") + "/agents.json"
|
||||
res = session.get(url)
|
||||
if res.ok:
|
||||
return res.json()["agents"]["agent"]
|
||||
raise LrcException(res.text, res.status_code)
|
||||
|
||||
|
||||
def get_recorder_details_old():
|
||||
@@ -117,19 +125,25 @@ def get_recorder_adapter(recorder_info: Union[dict, Recorder]) -> RecorderAdapte
|
||||
type = recorder_info.get("type")
|
||||
except KeyError:
|
||||
type = RecorderModel.get_by_id(recorder_info.get('recorder_model_id')).model_name
|
||||
if "SMP" in type:
|
||||
rec = SMP35x(recorder_info.get('ip'), recorder_info.get('password'))
|
||||
else:
|
||||
rec = Epiphan(recorder_info.get('ip'), recorder_info.get("username"), recorder_info.get("password"))
|
||||
return rec
|
||||
try:
|
||||
if "SMP" in type:
|
||||
rec = SMP35x(recorder_info.get('ip'), recorder_info.get('password'))
|
||||
else:
|
||||
rec = Epiphan(recorder_info.get('ip'), recorder_info.get("username"), recorder_info.get("password"))
|
||||
return rec
|
||||
except LrcException:
|
||||
raise
|
||||
|
||||
|
||||
def check_stream_sanity(recorder_agent: Union[Recorder, dict], recorder_adapter: RecorderAdapter = None):
|
||||
if recorder_adapter is None:
|
||||
recorder_info = get_recorder_by_name(recorder_agent.get('name'))
|
||||
recorder_adapter = get_recorder_adapter(recorder_info)
|
||||
if not recorder_adapter.is_recording():
|
||||
return True, "not recording, so there is no stream!", recorder_agent.get('name')
|
||||
try:
|
||||
if recorder_adapter is None:
|
||||
recorder_info = get_recorder_by_name(recorder_agent.get('name'))
|
||||
recorder_adapter = get_recorder_adapter(recorder_info)
|
||||
if not recorder_adapter.is_recording():
|
||||
return True, "not recording, so there is no stream!", recorder_agent.get('name')
|
||||
except LrcException:
|
||||
return False, "Could not determine if recorder is recording!", recorder_agent.get('name')
|
||||
if recorder_agent.get('archive_stream1') is None and recorder_agent.get(
|
||||
'archive_stream2') is None: # fall back to default names and rtsp
|
||||
archive_stream_1_url = "rtsp://{}/{}".format(recorder_adapter.address, Config.DEFAULT_ARCHIVE_STREAM_1_NAME)
|
||||
@@ -186,7 +200,12 @@ def check_capture_agent_state(recorder_agent: Union[Recorder, dict]):
|
||||
return True, "Recorder is in offline / maintenance mode", recorder_agent.get('name')
|
||||
agent_state_error_msg = None
|
||||
logger.debug("Checking Agent {}".format(recorder_agent.get('name')))
|
||||
c = get_calender(recorder_agent.get('name'))
|
||||
try:
|
||||
c = get_calender(recorder_agent.get('name'))
|
||||
except LrcException:
|
||||
error_msg = "Could not get calender of recorder agent: {}!".format(recorder_agent.get('name'))
|
||||
logger.fatal(error_msg)
|
||||
return False, error_msg, recorder_agent.get('name')
|
||||
is_recording_in_calendar = len(list(c.timeline.now())) >= 1
|
||||
if is_recording_in_calendar:
|
||||
logger.info("{} has entry in Calender and should therefore be recording... checking now!".format(
|
||||
|
||||
Reference in New Issue
Block a user