From 08a77949a53551ddef5983e2e56b0437d0108055 Mon Sep 17 00:00:00 2001
From: gifrerenom <lluis.gifre@cttc.es>
Date: Thu, 29 Jun 2023 14:30:35 +0000
Subject: [PATCH] Interdomain component:

- Added setting to (de)activate the topology abstractor module.
---
 src/interdomain/Config.py           | 11 +++++++++++
 src/interdomain/service/__main__.py | 10 +++++++---
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/src/interdomain/Config.py b/src/interdomain/Config.py
index 38d04994f..f8e81dd2b 100644
--- a/src/interdomain/Config.py
+++ b/src/interdomain/Config.py
@@ -11,3 +11,14 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+
+from common.Settings import get_setting
+
+SETTING_NAME_TOPOLOGY_ABSTRACTOR = 'TOPOLOGY_ABSTRACTOR'
+TRUE_VALUES = {'Y', 'YES', 'TRUE', 'T', 'E', 'ENABLE', 'ENABLED'}
+
+def is_topology_abstractor_enabled() -> bool:
+    is_enabled = get_setting(SETTING_NAME_TOPOLOGY_ABSTRACTOR, default=None)
+    if is_enabled is None: return False
+    str_is_enabled = str(is_enabled).upper()
+    return str_is_enabled in TRUE_VALUES
diff --git a/src/interdomain/service/__main__.py b/src/interdomain/service/__main__.py
index f867dc378..b986f8921 100644
--- a/src/interdomain/service/__main__.py
+++ b/src/interdomain/service/__main__.py
@@ -18,6 +18,7 @@ from common.Constants import ServiceNameEnum
 from common.Settings import (
     ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, get_env_var_name, get_log_level, get_metrics_port,
     wait_for_environment_variables)
+from interdomain.Config import is_topology_abstractor_enabled
 from .topology_abstractor.TopologyAbstractor import TopologyAbstractor
 from .InterdomainService import InterdomainService
 from .RemoteDomainClients import RemoteDomainClients
@@ -63,14 +64,17 @@ def main():
     grpc_service.start()
 
     # Subscribe to Context Events
-    topology_abstractor = TopologyAbstractor()
-    topology_abstractor.start()
+    topology_abstractor_enabled = is_topology_abstractor_enabled()
+    if topology_abstractor_enabled:
+        topology_abstractor = TopologyAbstractor()
+        topology_abstractor.start()
 
     # Wait for Ctrl+C or termination signal
     while not terminate.wait(timeout=1.0): pass
 
     LOGGER.info('Terminating...')
-    topology_abstractor.stop()
+    if topology_abstractor_enabled:
+        topology_abstractor.stop()
     grpc_service.stop()
     remote_domain_clients.stop()
 
-- 
GitLab