#!/usr/bin/python3
"""Generates Vagrantfile from YAML definition.

Generate a Vagrantfile and ansible files from a YAML definition of virtual
machines and network topology. See the documentation for details.
"""

from modules.ansible_generator import generate_playbooks
from modules.vagrant_generator import generate_vagrantfile
from modules.file_manager import open_yaml, prepare_directories
from modules.input_argument_parser import parse_input_args
from modules.input_file_validator import validate_device_definitions
from modules.preprocessing import preprocess


INPUT_FILE_NAME, FLAGS = parse_input_args()
device_definitions = open_yaml(INPUT_FILE_NAME)

validate_device_definitions(device_definitions)
preprocess(device_definitions, FLAGS)
prepare_directories(device_definitions, FLAGS)

generate_vagrantfile(device_definitions, FLAGS)
generate_playbooks(device_definitions, FLAGS)

print("Sandbox was successfully created.")