From 15bb068a69d98ad5e018cf95c8d2cd783c647da9 Mon Sep 17 00:00:00 2001
From: Chris <christoph.pastl@fro.at>
Date: Tue, 19 Sep 2023 18:53:55 +0200
Subject: [PATCH] fix: config naming and nesting

---
 config/sample.engine.docker.yaml        |  5 ++---
 config/sample.engine.yaml               |  9 ++++-----
 src/aura_engine/base/config.py          |  3 ++-
 src/aura_engine/core/channels.py        |  2 +-
 src/aura_engine/core/client.py          |  2 +-
 src/aura_engine/engine.py               |  7 +++----
 src/aura_engine/plugins/monitor.py      | 13 +++++++------
 src/aura_engine/scheduling/scheduler.py |  6 +++---
 8 files changed, 23 insertions(+), 24 deletions(-)

diff --git a/config/sample.engine.docker.yaml b/config/sample.engine.docker.yaml
index 036d9427..33392359 100644
--- a/config/sample.engine.docker.yaml
+++ b/config/sample.engine.docker.yaml
@@ -9,9 +9,8 @@ general:
   cache_dir: /tmp
 
   # Details for the Station Fallback
-  fallback:
-    show_name: ${AURA_ENGINE_FALLBACK_SHOW_NAME}
-    show_id: ${AURA_ENGINE_FALLBACK_SHOW_ID}
+  fallback_show_name: ${AURA_ENGINE_FALLBACK_SHOW_NAME}
+  fallback_show_id: ${AURA_ENGINE_FALLBACK_SHOW_ID}
 
 log:
   # Directory where the log file resides
diff --git a/config/sample.engine.yaml b/config/sample.engine.yaml
index 24639558..8fcb2c34 100644
--- a/config/sample.engine.yaml
+++ b/config/sample.engine.yaml
@@ -9,9 +9,8 @@ general:
   cache_dir: ./.cache
 
   # Details for the Station Fallback
-  fallback:
-    show_name: Random Music
-    show_id: -1
+  fallback_show_name: Random Music
+  fallback_show_id: -1
 
 log:
   # Directory where the log file resides
@@ -87,10 +86,10 @@ api:
 scheduler:
   # Database settings: Use 'postgresql', 'sqlite' or 'mysql'. In case of SQLite the "db_name" is the name of the file.
   db:
-    type: sqlite
+    type: postgresql
     name: aura_engine
     user: aura_engine
-    pwd: ---SECRET--PASSWORD---
+    pwd: "1234"
     host: localhost
     charset: utf8
     
diff --git a/src/aura_engine/base/config.py b/src/aura_engine/base/config.py
index a575d855..e9ee8081 100644
--- a/src/aura_engine/base/config.py
+++ b/src/aura_engine/base/config.py
@@ -35,7 +35,8 @@ template = {
     "general": {
         "socket_dir": str,
         "cache_dir": str,
-        "fallback": {"show_name": str, "show_id": int},
+        "fallback_show_name": str,
+        "fallback_show_id": int,
     },
     "log": {
         "directory": str,
diff --git a/src/aura_engine/core/channels.py b/src/aura_engine/core/channels.py
index e18bc36e..8f7a70f0 100644
--- a/src/aura_engine/core/channels.py
+++ b/src/aura_engine/core/channels.py
@@ -148,7 +148,7 @@ class GenericChannel:
             mixer (Mixer): The mixer instance
 
         """
-        self.config = AuraConfig.config().config
+        self.config = AuraConfig.instance.config
         self.logger = logging.getLogger("engine")
         self.mixer = mixer
         self.name = channel_name
diff --git a/src/aura_engine/core/client.py b/src/aura_engine/core/client.py
index 39eac6fe..927b14c4 100644
--- a/src/aura_engine/core/client.py
+++ b/src/aura_engine/core/client.py
@@ -236,7 +236,7 @@ class CoreConnection:
         Initialize the connection.
         """
         self.logger = logging.getLogger("engine")
-        config = AuraConfig.config().config
+        config = AuraConfig.instance
         socket_path = config.config.general.socket_dir + "/engine.sock"
         self.socket_path = config.to_abs_path(socket_path)
         self.logger.debug(f"Using socket at '{self.socket_path}'")
diff --git a/src/aura_engine/engine.py b/src/aura_engine/engine.py
index 8cd0273c..01dfca24 100644
--- a/src/aura_engine/engine.py
+++ b/src/aura_engine/engine.py
@@ -179,9 +179,8 @@ class Engine:
         ctrl_version = toml_file["tool"]["poetry"]["version"]
         versions = self.playout.get_version()
         versions = DotDict(json.loads(versions))
-        self.config.set("version_control", ctrl_version)
-        self.config.set("version_core", versions.core)
-        self.config.set("version_liquidsoap", versions.liquidsoap)
+        versions.control = ctrl_version
+        AuraConfig.instance.init_version(versions)
 
     @staticmethod
     def engine_time():
@@ -261,7 +260,7 @@ class Player:
             event_dispatcher (EventDispather): Dispatcher for issuing events
 
         """
-        self.config = AuraConfig.config().config
+        self.config = AuraConfig.instance.config
         self.logger = logging.getLogger("engine")
         self.event_dispatcher = event_dispatcher
         self.resource_map = ResourceMapping()
diff --git a/src/aura_engine/plugins/monitor.py b/src/aura_engine/plugins/monitor.py
index 190cd244..84b1ef30 100644
--- a/src/aura_engine/plugins/monitor.py
+++ b/src/aura_engine/plugins/monitor.py
@@ -230,10 +230,9 @@ class AuraMonitor:
         Request the current status of all components.
         """
         self.engine.init_version()
-        ctrl_version = self.config.version.control
-        core_version = self.config.version.core
-        liq_version = self.config.version.liquidsoap
-
+        ctrl_version = AuraConfig.instance.confuse_config["version_control"].get()
+        core_version = AuraConfig.instance.confuse_config["version_core"].get()
+        liq_version = AuraConfig.instance.confuse_config["version_liquidsoap"].get()
         self.status["engine"]["version"] = ctrl_version
         self.status["lqs"]["version"] = {"core": core_version, "liquidsoap": liq_version}
         self.status["lqs"]["outputs"] = self.engine.player.mixer.get_outputs()
@@ -260,7 +259,9 @@ class AuraMonitor:
         """
         self.status["lqs"]["status"] = self.engine.update_playout_state()
         self.status["lqs"]["available"] = self.status["lqs"]["status"] is not None
-        self.status["audio_source"] = self.validate_directory(self.config.abs_audio_store_path())
+        self.status["audio_source"] = self.validate_directory(
+            AuraConfig.instance.abs_audio_store_path()
+        )
 
         # After first update start the Heartbeat Monitor
         if not self.heartbeat_running:
@@ -276,7 +277,7 @@ class AuraMonitor:
         """
         if self.has_valid_status(True):
             # Always check status, but only send heartbeat if wanted so
-            if self.config.monitoring.heartbeat.server != "":
+            if self.config.monitoring.heartbeat.host != "":
                 self.heartbeat_socket.sendto(
                     str.encode("OK"), (self.heartbeat_server, self.heartbeat_port)
                 )
diff --git a/src/aura_engine/scheduling/scheduler.py b/src/aura_engine/scheduling/scheduler.py
index 91131e71..04c49f3d 100644
--- a/src/aura_engine/scheduling/scheduler.py
+++ b/src/aura_engine/scheduling/scheduler.py
@@ -54,7 +54,7 @@ class AuraScheduler(threading.Thread):
 
     """
 
-    config: AuraConfig = None
+    config = None
     logger = None
     engine: Engine = None
     exit_event: threading.Event = None
@@ -100,7 +100,7 @@ class AuraScheduler(threading.Thread):
         """
         while not self.exit_event.is_set():
             try:
-                self.config.load_config()
+                AuraConfig.instance.load_config()
                 seconds_to_wait = self.config.scheduler.fetching_frequency
                 msg = f"== start fetching new timeslots (every {seconds_to_wait} seconds) =="
                 self.logger.info(SU.cyan(msg))
@@ -441,7 +441,7 @@ class TimeslotCommand(EngineExecutor):
             engine (Engine): The engine
             timeslot (Timeslot): The timeslot which is starting at this time
         """
-        self.config = AuraConfig.instance
+        self.config = AuraConfig.instance.config
         self.engine = engine
 
         now_unix = SU.timestamp()
-- 
GitLab