feat(playout): use liquidsoap version functions

- remove "packaging" package
This commit is contained in:
jo 2022-07-16 23:22:55 +02:00 committed by Kyle Robbertze
parent 58ad40f997
commit 2bc7d64cc4
9 changed files with 83 additions and 54 deletions

View file

@ -2,7 +2,6 @@
Python part of radio playout (pypo)
"""
import re
import signal
import sys
import telnetlib
@ -11,7 +10,7 @@ from datetime import datetime
from pathlib import Path
from queue import Queue
from threading import Lock
from typing import Optional
from typing import Optional, Tuple
import click
from libretime_api_client.version1 import AirtimeApiClient as ApiClient
@ -20,8 +19,8 @@ from libretime_shared.config import DEFAULT_ENV_PREFIX
from libretime_shared.logging import level_from_name, setup_logger
from loguru import logger
from . import pure
from .config import CACHE_DIR, RECORD_DIR, Config
from .liquidsoap.version import LIQUIDSOAP_MIN_VERSION, parse_liquidsoap_version
from .listenerstat import ListenerStat
from .pypofetch import PypoFetch
from .pypofile import PypoFile
@ -31,8 +30,6 @@ from .pypopush import PypoPush
from .recorder import Recorder
from .timeout import ls_timeout
LIQUIDSOAP_MIN_VERSION = "1.1.1"
class Global:
def __init__(self, api_client):
@ -51,7 +48,7 @@ def keyboardInterruptHandler(signum, frame):
@ls_timeout
def liquidsoap_get_info(telnet_lock, host, port):
def liquidsoap_get_info(telnet_lock, host, port) -> Optional[Tuple[int, int, int]]:
logger.debug("Checking to see if Liquidsoap is running")
try:
telnet_lock.acquire()
@ -66,50 +63,38 @@ def liquidsoap_get_info(telnet_lock, host, port):
finally:
telnet_lock.release()
return get_liquidsoap_version(response)
def get_liquidsoap_version(version_string):
m = re.match(r"Liquidsoap (\d+.\d+.\d+)", version_string)
if m:
return m.group(1)
else:
return None
return parse_liquidsoap_version(response)
def liquidsoap_startup_test(telnet_lock, liquidsoap_host, liquidsoap_port):
liquidsoap_version_string = liquidsoap_get_info(
liquidsoap_version = liquidsoap_get_info(
telnet_lock,
liquidsoap_host,
liquidsoap_port,
)
while not liquidsoap_version_string:
logger.warning(
"Liquidsoap doesn't appear to be running!, " + "Sleeping and trying again"
)
while not liquidsoap_version:
logger.warning("Liquidsoap doesn't appear to be running! Trying again later...")
time.sleep(1)
liquidsoap_version_string = liquidsoap_get_info(
liquidsoap_version = liquidsoap_get_info(
telnet_lock,
liquidsoap_host,
liquidsoap_port,
)
while pure.version_cmp(liquidsoap_version_string, LIQUIDSOAP_MIN_VERSION) < 0:
while not LIQUIDSOAP_MIN_VERSION <= liquidsoap_version:
logger.warning(
"Liquidsoap is running but in incorrect version! "
+ "Make sure you have at least Liquidsoap %s installed"
% LIQUIDSOAP_MIN_VERSION
f"Found invalid Liquidsoap version! "
f"Liquidsoap<={LIQUIDSOAP_MIN_VERSION} is required!"
)
time.sleep(1)
liquidsoap_version_string = liquidsoap_get_info(
time.sleep(5)
liquidsoap_version = liquidsoap_get_info(
telnet_lock,
liquidsoap_host,
liquidsoap_port,
)
logger.info("Liquidsoap version string found %s" % liquidsoap_version_string)
logger.info(f"Liquidsoap version {liquidsoap_version}")
@click.command(context_settings={"auto_envvar_prefix": DEFAULT_ENV_PREFIX})