added trigger mapping

This commit is contained in:
2024-12-05 13:29:56 +01:00
parent 51b8647ded
commit 9623cfcf2c
6 changed files with 47 additions and 8 deletions
+21
View File
@@ -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
+9 -5
View File
@@ -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()
+6
View File
@@ -1,4 +1,10 @@
<?xml version="1.0" encoding="utf-8" ?>
<cpuGovernorAutoAdjust>
<logLevel>Debug</logLevel>
<testMode>true</testMode>
<triggers>
<trigger>
<name>roon</name>
</trigger>
</triggers>
</cpuGovernorAutoAdjust>
+7
View File
@@ -0,0 +1,7 @@
from types import MappingProxyType
from triggers.roon import RoonTrigger
_dict_mapping = {
'roon': RoonTrigger
}
trigger_mapping = MappingProxyType(_dict_mapping)
+2 -1
View File
@@ -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__}')
+2 -2
View File
@@ -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)