Create an init version of a network viewer
[oam.git] / code / network-generator / network_generator.py
1 # Copyright 2023 highstreet technologies GmbH
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 #     http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14
15 #!/usr/bin/python
16
17 """
18 Module as entry point to generate an ietf topology json
19 """
20 import os
21 import sys
22
23 from view.network_viewer import NetworkViewer
24 from controller.network_generator import NetworkGenerator
25 from controller.parameter_validator import ParameterValidator
26
27 validator: ParameterValidator = ParameterValidator(sys.argv)
28
29 if validator.is_valid():
30     configuration = validator.configuration()
31     generator = NetworkGenerator(configuration['network'])
32     network = generator.generate()
33     viewer = NetworkViewer(network)
34
35     output_folder:str = configuration['output-folder']
36     # If folder doesn't exist, then create it.
37     if not os.path.isdir(output_folder):
38         os.makedirs(output_folder)
39         
40     name: str = configuration['network']['name']
41
42     # topology json
43     if configuration['generation-tasks']['topology'] is True:
44         filename: str = output_folder + "/" + name + "-operational.json"
45         viewer.json().save(filename)
46
47     # svg xml
48     if configuration['generation-tasks']['svg'] is True:
49         filename: str = output_folder + "/" + name + ".svg"
50         viewer.svg(filename)
51
52     # kml xml
53     if configuration['generation-tasks']['kml'] is True:
54         filename: str = output_folder + "/" + name + ".kml"
55         viewer.kml(filename)
56
57 else:
58     print(validator.error_message())