From 9623cfcf2ce890c6feab055e9303b8319c13448f Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 5 Dec 2024 13:29:56 +0100 Subject: [PATCH] added trigger mapping --- config.py | 21 +++++++++++++++++++++ cpu_governor_auto_adjust.py | 14 +++++++++----- cpu_governor_auto_adjust.xml | 6 ++++++ mapping.py | 7 +++++++ trigger.py | 3 ++- triggers/roon.py | 4 ++-- 6 files changed, 47 insertions(+), 8 deletions(-) create mode 100644 mapping.py diff --git a/config.py b/config.py index 767ded4..0099a02 100644 --- a/config.py +++ b/config.py @@ -2,6 +2,11 @@ from pathlib import Path from lxml import etree from functools import cached_property from arguments import ArgumentsParser +from typing import NamedTuple + + +class TriggerTuple(NamedTuple): + name: str class Config: @@ -20,3 +25,19 @@ class Config: @cached_property def loglevel(self) -> str: return self.app_root.xpath('logLevel').pop().text + + @cached_property + def testmode(self) -> bool: + value = self.app_root.xpath('testMode').pop().text.lower() + if value not in ['true', 'false']: + raise ValueError("testMode can only be 'true' or 'false") + return True if value == 'true' else False + + @cached_property + def triggertuples(self) -> list[TriggerTuple]: + ret_val = [] + _triggers = self.app_root.xpath('triggers/trigger') + for trigger in _triggers: + name = trigger.xpath('name').pop().text + ret_val.append(TriggerTuple(name=name)) + return ret_val diff --git a/cpu_governor_auto_adjust.py b/cpu_governor_auto_adjust.py index 9d3c4f0..51c0136 100755 --- a/cpu_governor_auto_adjust.py +++ b/cpu_governor_auto_adjust.py @@ -1,17 +1,21 @@ #!/usr/bin/python3 from pathlib import Path from logger import getLogger -from triggers.roon import RoonTrigger +from mapping import trigger_mapping from config import Config -def main(): +def main() -> None: basepath = Path(__file__).parent.resolve() config = Config(basepath) log = getLogger('main', loglevel=config.loglevel.upper()) - log.info("starting") - new_trigger = RoonTrigger(config) - + if config.testmode: + log.warning("starting in testmode, cpu adjustments have been disabled") + triggers = [] + for triggertuple in config.triggertuples: + triggers.append( + trigger_mapping[triggertuple.name](triggertuple.name, config) + ) if __name__ == "__main__": main() diff --git a/cpu_governor_auto_adjust.xml b/cpu_governor_auto_adjust.xml index 137799a..f41955d 100644 --- a/cpu_governor_auto_adjust.xml +++ b/cpu_governor_auto_adjust.xml @@ -1,4 +1,10 @@ Debug + true + + + roon + + diff --git a/mapping.py b/mapping.py new file mode 100644 index 0000000..8ac7bdb --- /dev/null +++ b/mapping.py @@ -0,0 +1,7 @@ +from types import MappingProxyType +from triggers.roon import RoonTrigger + +_dict_mapping = { + 'roon': RoonTrigger +} +trigger_mapping = MappingProxyType(_dict_mapping) \ No newline at end of file diff --git a/trigger.py b/trigger.py index 45618b8..e83b204 100644 --- a/trigger.py +++ b/trigger.py @@ -2,7 +2,8 @@ from logger import getLogger from config import Config class Trigger: - def __init__(self, config: Config) -> None: + def __init__(self, name: str, config: Config) -> None: + self.name = name self.log = getLogger('trigger', loglevel=config.loglevel.upper()) self.log.info(f'initializing {self.__class__.__name__}') \ No newline at end of file diff --git a/triggers/roon.py b/triggers/roon.py index 4fd6edd..b8fed26 100644 --- a/triggers/roon.py +++ b/triggers/roon.py @@ -2,6 +2,6 @@ from trigger import Trigger from config import Config class RoonTrigger(Trigger): - def __init__(self, config: Config) -> None: - super().__init__(config) + def __init__(self, name: str, config: Config) -> None: + super().__init__(name, config) \ No newline at end of file