From: Martin Skorupski Date: Wed, 25 Sep 2024 12:39:04 +0000 (+0200) Subject: Define the schema X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F45%2F13445%2F1;p=oam.git Define the schema - simplify network generation in total Issue-ID: OAM-415 Change-Id: I19b978baf3d57096388746e93f45b0a34ad2cd54 Signed-off-by: Martin Skorupski --- diff --git a/code/network-generator/network_generation/cli.py b/code/network-generator/network_generation/cli.py index de428aa..2c7b6ad 100644 --- a/code/network-generator/network_generation/cli.py +++ b/code/network-generator/network_generation/cli.py @@ -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 + )