From 2cccce5ca9eec31d62d846c7caf3f22cc80140e5 Mon Sep 17 00:00:00 2001 From: Chris Pastl <chris@crispybits.app> Date: Wed, 16 Aug 2023 01:37:06 +0200 Subject: [PATCH] fix: use config singleton instance --- src/aura_engine/app.py | 2 +- src/aura_engine/base/config.py | 10 +++++++++- src/aura_engine/core/channels.py | 2 +- src/aura_engine/plugins/clock.py | 2 +- src/aura_engine/plugins/monitor.py | 2 +- src/aura_engine/scheduling/models.py | 2 +- src/aura_engine/scheduling/programme.py | 2 +- src/aura_engine/scheduling/scheduler.py | 4 ++-- src/aura_engine/scheduling/utils.py | 2 +- 9 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/aura_engine/app.py b/src/aura_engine/app.py index 52765e31..958da7cf 100755 --- a/src/aura_engine/app.py +++ b/src/aura_engine/app.py @@ -35,7 +35,7 @@ from aura_engine.base.logger import AuraLogger from aura_engine.engine import Engine from aura_engine.scheduling.models import DB -config = AuraConfig() +config = AuraConfig.instance def configure_flask(): diff --git a/src/aura_engine/base/config.py b/src/aura_engine/base/config.py index d95fe7ee..a5bfaebf 100644 --- a/src/aura_engine/base/config.py +++ b/src/aura_engine/base/config.py @@ -93,12 +93,20 @@ class AuraConfig: Holds the Engine Configuration as in the file `engine.ini`. """ - instance = None + _instance = None yaml_path = "" confuse_config = None config = None # points to a validated config (hopefully later) logger = None + @classmethod + @property + def instance(cls): + """Create and return singleton instance.""" + if cls._instance is None: + cls._instance = AuraConfig() + return cls._instance + def __init__(self, yaml_path="/etc/aura/engine.yaml"): """ Initialize the configuration, defaults to `/etc/aura/engine.yaml`. diff --git a/src/aura_engine/core/channels.py b/src/aura_engine/core/channels.py index b2554bbd..e18bc36e 100644 --- a/src/aura_engine/core/channels.py +++ b/src/aura_engine/core/channels.py @@ -576,7 +576,7 @@ class ChannelFactory: mixer (Mixer): The mixer instance """ - self.config = AuraConfig() + self.config = AuraConfig.instance self.logger = logging.getLogger("engine") self.mixer = mixer diff --git a/src/aura_engine/plugins/clock.py b/src/aura_engine/plugins/clock.py index 4bec67ed..0f1da1fe 100644 --- a/src/aura_engine/plugins/clock.py +++ b/src/aura_engine/plugins/clock.py @@ -45,7 +45,7 @@ class ClockInfoHandler: Initialize. """ self.logger = logging.getLogger("engine") - self.config = AuraConfig.config().config + self.config = AuraConfig.instance.config self.api = SimpleRestApi() self.engine = engine diff --git a/src/aura_engine/plugins/monitor.py b/src/aura_engine/plugins/monitor.py index 4f29f068..190cd244 100644 --- a/src/aura_engine/plugins/monitor.py +++ b/src/aura_engine/plugins/monitor.py @@ -87,7 +87,7 @@ class AuraMonitor: Initialize Monitoring. """ self.logger = logging.getLogger("engine") - self.config = AuraConfig.config() + self.config = AuraConfig.instance.config self.engine = engine self.status = dict() self.status["engine"] = dict() diff --git a/src/aura_engine/scheduling/models.py b/src/aura_engine/scheduling/models.py index d4d8cead..b6a5f8f6 100644 --- a/src/aura_engine/scheduling/models.py +++ b/src/aura_engine/scheduling/models.py @@ -45,7 +45,7 @@ from aura_engine.base.utils import SimpleUtil from aura_engine.resources import ResourceUtil # Initialize DB Model and session -config = AuraConfig() +config = AuraConfig.instance engine = sa.create_engine(config.get_database_uri()) Base = declarative_base() Base.metadata.bind = engine diff --git a/src/aura_engine/scheduling/programme.py b/src/aura_engine/scheduling/programme.py index 24ab8fd0..3b42d0ca 100644 --- a/src/aura_engine/scheduling/programme.py +++ b/src/aura_engine/scheduling/programme.py @@ -50,7 +50,7 @@ class ProgrammeService: programme_store = None def __init__(self): - self.config = AuraConfig.config().config + self.config = AuraConfig.instance.config self.logger = logging.getLogger("engine") self.programme_store = ProgrammeStore() diff --git a/src/aura_engine/scheduling/scheduler.py b/src/aura_engine/scheduling/scheduler.py index 0313ae64..91131e71 100644 --- a/src/aura_engine/scheduling/scheduler.py +++ b/src/aura_engine/scheduling/scheduler.py @@ -65,7 +65,7 @@ class AuraScheduler(threading.Thread): is_engine_ready: bool = None def __init__(self, engine): - self.config = AuraConfig.config().config + self.config = AuraConfig.instance.config self.logger = logging.getLogger("engine") self.timetable = ProgrammeService() self.timetable_renderer = TimetableRenderer(self) @@ -441,7 +441,7 @@ class TimeslotCommand(EngineExecutor): engine (Engine): The engine timeslot (Timeslot): The timeslot which is starting at this time """ - self.config = AuraConfig() + self.config = AuraConfig.instance self.engine = engine now_unix = SU.timestamp() diff --git a/src/aura_engine/scheduling/utils.py b/src/aura_engine/scheduling/utils.py index bb1f29b3..1ce21d16 100644 --- a/src/aura_engine/scheduling/utils.py +++ b/src/aura_engine/scheduling/utils.py @@ -121,7 +121,7 @@ class M3UPlaylistProcessor: playlist_folder = None def __init__(self): - self.config = AuraConfig.config() + self.config = AuraConfig.instance self.logger = logging.getLogger("engine") self.playlist_folder = self.config.abs_playlist_path() -- GitLab