From a247e4a0ed017e94ac5101391956f11f77eb8a2c Mon Sep 17 00:00:00 2001
From: Attila Farkas <x394097@fi.muni.cz>
Date: Fri, 16 Aug 2019 12:24:36 +0200
Subject: [PATCH] Vagrantfile is created directly
---
README.md | 2 +-
generate.py | 4 ++--
modules/device_creator.py | 13 +++++++++++++
3 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 5901368..0863232 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@ generate.py is a python program that generates a vagrant source file from a defi
### Usage:
1. Clone the project.
2. Navigate to the project folder.
-3. Type `$ python generate.py yaml_file.yaml > Vagrantfile`. There is a test yaml file in the repository called test.yaml.
+3. Type `$ python generate.py yaml_file.yaml`. There is a test yaml file in the repository called test.yaml.
4. Run `$ vagrant up`
### Implemented attribute types:
diff --git a/generate.py b/generate.py
index 58c5be9..99a0a6a 100644
--- a/generate.py
+++ b/generate.py
@@ -4,7 +4,7 @@
import sys
import jinja2
-from modules.device_creator import create_devices
+from modules.device_creator import create_devices, create_vagrantfile
if len(sys.argv) != 2:
print("Error: Expecting 1 argument (yml file).")
@@ -19,4 +19,4 @@ TEMPLATE_ENV = jinja2.Environment(loader=TEMPLATE_LOADER, trim_blocks=True)
BASE_TEMPLATE = TEMPLATE_ENV.get_template("base")
OUTPUT = BASE_TEMPLATE.render(devices=DEVICES)
-print(OUTPUT)
+create_vagrantfile(OUTPUT)
diff --git a/modules/device_creator.py b/modules/device_creator.py
index ae7e936..c34937d 100644
--- a/modules/device_creator.py
+++ b/modules/device_creator.py
@@ -57,3 +57,16 @@ def create_devices(yml_file_name):
return {
**_create_hosts(yml, mappings, flavors),
**_create_routers(yml)}
+
+
+def create_vagrantfile(output):
+ """ Writes the prepared output to a Vagrantfile. """
+ filename = "Vagrantfile"
+
+ try:
+ vagrantfile = open(filename, "w")
+ vagrantfile.write(output)
+ except IOError:
+ print("Error: cannot write to this location.")
+
+ print("Vagrantfile successfully created.")
--
GitLab