diff --git a/src/aura_engine/app.py b/src/aura_engine/app.py index 52765e3155134d07f36eb0d079948537650401fa..958da7cf29f3e79c574b59692500caeaca760408 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 d95fe7ee6c185208d4080342bebab7755074ed3e..a5bfaebfb87c95ffe4a0121fc74c34a8bf453e9b 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 b2554bbd7c5ea566f74c93190031ce82ffb08d0e..e18bc36e887d2a469b36a5394321b6ed20eeddbf 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 4bec67ed6144c9d650393a29224eaa0fb4eeda01..0f1da1fe23b8e39d837cfbf8663ec37fe68610fc 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 4f29f068c6775d67676b5fca7ba99b9038e6d744..190cd244cab52ea9559dba75b2924a03163f4dea 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 d4d8cead57f46c4e12a5747ac3d932cb3dec2d8b..b6a5f8f6265b01fa62d72b680a01fa330adbdf0e 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 24ab8fd08878d0ae17cd3ec9690a8cf8092ee683..3b42d0ca4cfaf8f126aed355265af6750c717d4d 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 0313ae644d576c20d392acee8b5a622a2cef11e1..91131e71cba074438c7c3c55e800762ef97de52f 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 bb1f29b333856c068ed72560106c58669bf769d3..1ce21d162765cad676c3e790a444d9933b91336c 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()