diff --git a/modules/controller.py b/modules/controller.py new file mode 100644 index 0000000000000000000000000000000000000000..f7ca0b0a318408131d7ed42d5ded0c70a7a5f472 --- /dev/null +++ b/modules/controller.py @@ -0,0 +1,28 @@ +"""Contains functions for controller creation.""" + + +CONTROLLER_NAME = "controller" + + +def _are_controller_parameters_free(definitions): + """Check if controller parameters are not already taken.""" + for host in definitions["hosts"]: + if host["name"] == CONTROLLER_NAME: + return False + # TODO add other parameters + + return True + + +def create_controller(definitions): + """Add the definition of controller to definitions. + + :param definitions: device definition structure + """ + + # TODO this should be later moved to input check + if not _are_controller_parameters_free(definitions): + raise ValueError("A device with the same name as border router " + "already exists.") + + return diff --git a/modules/preprocessing.py b/modules/preprocessing.py index 2562f20f6d917759a76d65fc64f86e780ac4f4ec..5bebac0b18ca0ec06416cb6034a11104c7736778 100644 --- a/modules/preprocessing.py +++ b/modules/preprocessing.py @@ -7,6 +7,7 @@ creation. import itertools from modules.border_router import create_border_router +from modules.controller import create_controller from modules.file_manager import open_yaml, cleanup_and_exit FLAVORS = open_yaml("conf/flavors.yml") @@ -106,6 +107,13 @@ def preprocess(definitions, flags): cleanup_and_exit("Preprocessing not successful: " "Could not create border router (" + error + ")") + try: + if _find_windows_boxes(definitions): + create_controller(definitions) + except (ValueError, IndexError) as error: + cleanup_and_exit("Preprocessing not successful: " + "Could not create controller (" + error + ")") + try: _configure_routers(definitions) except Exception: