From ddf5e8e9235346dd13910932549f0106e5cb0e16 Mon Sep 17 00:00:00 2001 From: David Trattnig <david.trattnig@o94.at> Date: Fri, 28 Aug 2020 10:10:17 +0200 Subject: [PATCH] Ability to disable federation. --- config/sample/sample-development.engine-api.ini | 2 ++ config/sample/sample-docker.engine-api.ini | 2 ++ config/sample/sample-production.engine-api.ini | 2 ++ src/app.py | 7 +++++-- src/service.py | 11 ++++++++++- src/sync.py | 2 +- test/config/engine-0-api.ini | 2 ++ test/config/engine-1-api.ini | 2 ++ test/config/engine-2-api.ini | 2 ++ 9 files changed, 28 insertions(+), 4 deletions(-) diff --git a/config/sample/sample-development.engine-api.ini b/config/sample/sample-development.engine-api.ini index 61f2546..eff6651 100644 --- a/config/sample/sample-development.engine-api.ini +++ b/config/sample/sample-development.engine-api.ini @@ -23,6 +23,8 @@ api_port=8008 [federation] +enable_federation="false" + # Defines the engine number id for identification of record sources. Default values are: # # 1 ... Engine 1 (main node) diff --git a/config/sample/sample-docker.engine-api.ini b/config/sample/sample-docker.engine-api.ini index e039e80..28e2d22 100644 --- a/config/sample/sample-docker.engine-api.ini +++ b/config/sample/sample-docker.engine-api.ini @@ -23,6 +23,8 @@ api_port=8008 [federation] +enable_federation="false" + # Defines the engine number id for identification of record sources. Default values are: # # 1 ... Engine 1 (main node) diff --git a/config/sample/sample-production.engine-api.ini b/config/sample/sample-production.engine-api.ini index e039e80..28e2d22 100644 --- a/config/sample/sample-production.engine-api.ini +++ b/config/sample/sample-production.engine-api.ini @@ -23,6 +23,8 @@ api_port=8008 [federation] +enable_federation="false" + # Defines the engine number id for identification of record sources. Default values are: # # 1 ... Engine 1 (main node) diff --git a/src/app.py b/src/app.py index c70122f..29cecd1 100644 --- a/src/app.py +++ b/src/app.py @@ -95,8 +95,11 @@ with app.app_context(): # Run sync job only in SYNC NODE mode if node_type == NodeType.SYNC: - sync_job = SyncJob(config, logger, app) - sync_job.start() + if config.get("enable_federation") == "false": + logger.info("Node synchronization disabled") + else: + sync_job = SyncJob(config, logger, app) + sync_job.start() atexit.register(shutdown) logger.info("Engine API server initialized.") diff --git a/src/service.py b/src/service.py index 3e1ea49..234809e 100644 --- a/src/service.py +++ b/src/service.py @@ -150,6 +150,9 @@ class ApiService(): if not data.log_source: data.log_source = self.config.get("host_id") + if self.config.get("enable_federation") == "false": + return + # Main Node: Alway log entry, independed of the source # Sync Node: Only log entry when it's coming from an active source if self.node_type == NodeType.MAIN or \ @@ -205,6 +208,9 @@ class ApiService(): clock_info = ClockInfo(body.engine_source, body.current_playlist, body.current_schedule, body.next_schedule) clock_info.merge() + if self.config.get("enable_federation") == "false": + return + # Main Node: Push to Sync Node, if enabled if self.node_type == NodeType.MAIN and self.sync_host and self.api_clockinfo: try: @@ -215,7 +221,7 @@ class ApiService(): else: self.logger.error("HTTP %s | Error while pushing clock info to sync-node: " % (r.status_code, str(r.json()))) except Exception as e: - self.logger.error("Error while putting clock info to sync-node API '%s'!\n%s" % (api_url, str(e))) + self.logger.error("Error while putting clock info to sync-node API '%s'!\n%s" % (api_url, str(e))) def set_default_source(self, source_number): @@ -287,6 +293,9 @@ class ApiService(): if not data.log_source: data.log_source = self.host_id + if self.config.get("enable_federation") == "false": + return + # Main Node: Alway log entry, independed of the source # Sync Node: Only log entry when it's coming from an active source if self.node_type == NodeType.MAIN or \ diff --git a/src/sync.py b/src/sync.py index e2c0cb1..52b5224 100644 --- a/src/sync.py +++ b/src/sync.py @@ -73,7 +73,7 @@ class SyncJob(threading.Thread): def run(self): """ Starts the Job. - """ + """ self.synchronize() while not self.exit_event.wait(self.sync_interval): try: diff --git a/test/config/engine-0-api.ini b/test/config/engine-0-api.ini index 67018e4..00b71d0 100644 --- a/test/config/engine-0-api.ini +++ b/test/config/engine-0-api.ini @@ -23,6 +23,8 @@ api_port=8010 [federation] +enable_federation="false" + # Defines the engine number id for identification of record sources. Default values are: # # 1 ... Engine 1 (main node) diff --git a/test/config/engine-1-api.ini b/test/config/engine-1-api.ini index a42c198..5b1f60f 100644 --- a/test/config/engine-1-api.ini +++ b/test/config/engine-1-api.ini @@ -23,6 +23,8 @@ api_port=8008 [federation] +enable_federation="false" + # Defines the engine number id for identification of record sources. Default values are: # # 1 ... Engine 1 (main node) diff --git a/test/config/engine-2-api.ini b/test/config/engine-2-api.ini index 3feb1d0..30c3c08 100644 --- a/test/config/engine-2-api.ini +++ b/test/config/engine-2-api.ini @@ -23,6 +23,8 @@ api_port=8009 [federation] +enable_federation="false" + # Defines the engine number id for identification of record sources. Default values are: # # 1 ... Engine 1 (main node) -- GitLab