Define the schema 45/13445/1
authorMartin Skorupski <martin.skorupski@highstreet-technologies.com>
Wed, 25 Sep 2024 12:39:04 +0000 (14:39 +0200)
committerMartin Skorupski <martin.skorupski@highstreet-technologies.com>
Wed, 25 Sep 2024 12:39:04 +0000 (14:39 +0200)
- simplify network generation in total

Issue-ID: OAM-415
Change-Id: I19b978baf3d57096388746e93f45b0a34ad2cd54
Signed-off-by: Martin Skorupski <martin.skorupski@highstreet-technologies.com>
code/network-generator/network_generation/cli.py

index de428aa..2c7b6ad 100644 (file)
@@ -18,7 +18,6 @@ import os
 import sys
 
 from network_generation.base import NetworkGenerator
-from network_generation.model.python.o_ran_network import ORanNetwork
 from network_generation.parameter_validator import ParameterValidator
 from network_generation.view.network_viewer import NetworkViewer
 
@@ -28,57 +27,55 @@ Module as entry point to generate an ietf topology json
 """
 
 
+def save_viewer_output(
+    viewer: NetworkViewer,
+    filename: str,
+    task: dict[str, str] | dict[str, int],
+    method_name: str,
+) -> None:
+    """
+    Save the output using the specified method of NetworkViewer.
+    """
+    if task["enabled"]:
+        method = getattr(viewer, method_name, None)
+        if callable(method):
+            method(filename, task["compressed"])
+
+
 def main() -> None:  # pragma: no cover
     """
     The main function executes on commands:
     `python -m network_generation`.
-
     """
-    validator: ParameterValidator = ParameterValidator(sys.argv)
+    validator = ParameterValidator(sys.argv)
 
-    if validator.is_valid():
-        configuration: dict = validator.configuration()
-        generator: NetworkGenerator = NetworkGenerator(
-            configuration["network"]
-        )
-        network: ORanNetwork = generator.generate()
-        viewer: NetworkViewer = NetworkViewer(network)
-
-        output_folder: str = configuration["outputFolder"]
-        # If folder doesn't exist, then create it.
-        if not os.path.isdir(output_folder):
-            os.makedirs(output_folder)
+    if not validator.is_valid():
+        print(validator.error_message())
+        return
 
-        name: str = str(configuration["network"]["name"]).lower()
-        filename: str = "/".join([output_folder, name])
+    configuration = validator.configuration()
+    generator = NetworkGenerator(configuration["network"])
+    network = generator.generate()
+    viewer = NetworkViewer(network)
 
-        # topology json
-        if configuration["generationTasks"]["topology"]["enabled"] is True:
-            viewer.json().save(
-                filename,
-                configuration["generationTasks"]["topology"]["compressed"]
-            )
+    output_folder = str(configuration["outputFolder"])
+    if not os.path.isdir(output_folder):
+        os.makedirs(output_folder)
 
-        # dir structure for day0 configuration
-        # Note: compressed option ignored
-        if configuration["generationTasks"]["network_dir"]["enabled"] is True:
-            viewer.to_directory(
-                output_folder
-            )
+    name = str(configuration["network"]["name"]).lower()
+    filename = os.path.join(output_folder, name)
 
-        # svg xml
-        if configuration["generationTasks"]["svg"]["enabled"] is True:
-            viewer.svg(
-                filename,
-                configuration["generationTasks"]["svg"]["compressed"]
-            )
+    generation_tasks = configuration["generationTasks"]
 
-        # kml/kmz xml
-        if configuration["generationTasks"]["kml"]["enabled"] is True:
-            viewer.kml(
-                filename,
-                configuration["generationTasks"]["kml"]["compressed"]
-            )
+    # Dictionary mapping task keys to viewer method names
+    task_to_method = {
+        "rfc8345": "rfc8345",
+        "day0Config": "to_directory",
+        "svg": "svg",
+        "kml": "kml",
+    }
 
-    else:
-        print(validator.error_message())
+    for task_key, method_name in task_to_method.items():
+        save_viewer_output(
+            viewer, filename, generation_tasks.get(task_key, {}), method_name
+        )