# inspired by https://github.com/rochacbruno/python-project-template
-"""CLI interface for network_generation project.
-
-Be creative! do whatever you want!
-
-- Install click or typer and create a CLI app
-- Use builtin argparse
-- Start a web application
-- Import things from your .base module
-"""
-
-
-"""
-Module as entry point to generate an ietf topology json
-"""
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
+"""
+CLI interface for network_generation project.
+Module as entry point to generate an ietf topology json
+"""
-def main(): # pragma: no cover
+
+def main() -> None: # pragma: no cover
"""
The main function executes on commands:
`python -m network_generation`.
validator: ParameterValidator = ParameterValidator(sys.argv)
if validator.is_valid():
- configuration = validator.configuration()
- generator = NetworkGenerator(configuration["network"])
- network = generator.generate()
- viewer = NetworkViewer(network)
-
- output_folder: str = configuration["output-folder"]
+ 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)
- name: str = configuration["network"]["name"]
+ name: str = str(configuration["network"]["name"]).lower()
+ filename: str = "/".join([output_folder, name])
# topology json
- if configuration["generation-tasks"]["topology"] is True:
- filename: str = output_folder + "/" + name + "-operational.json"
- viewer.json().save(filename)
+ if configuration["generationTasks"]["topology"]["enabled"] is True:
+ viewer.json().save(
+ filename,
+ configuration["generationTasks"]["topology"]["compressed"]
+ )
+
+ # dir structure for day0 configuration
+ # Note: compressed option ignored
+ if configuration["generationTasks"]["network_dir"]["enabled"] is True:
+ viewer.to_directory(
+ output_folder
+ )
# svg xml
- if configuration["generation-tasks"]["svg"] is True:
- filename: str = output_folder + "/" + name + ".svg"
- viewer.svg(filename)
-
- # kml xml
- if configuration["generation-tasks"]["kml"] is True:
- filename: str = output_folder + "/" + name + ".kml"
- viewer.kml(filename)
+ if configuration["generationTasks"]["svg"]["enabled"] is True:
+ viewer.svg(
+ filename,
+ configuration["generationTasks"]["svg"]["compressed"]
+ )
+
+ # kml/kmz xml
+ if configuration["generationTasks"]["kml"]["enabled"] is True:
+ viewer.kml(
+ filename,
+ configuration["generationTasks"]["kml"]["compressed"]
+ )
else:
print(validator.error_message())